将Spark数据框转换为Pandas / R数据框的要求

我在Hadoop的YARN上运行Spark。这种转换如何运作?是否在转换之前进行一次collect()?

我还需要在每个从属节点上安装Python和R才能使转换正常进行吗?我正在努力寻找有关此文档。


三国纷争
浏览 453回答 1
1回答

慕村9548890

toPandas(PySpark)/ as.data.frame(SparkR)在创建本地数据框之前,必须先收集数据。例如,toPandas方法如下所示:def toPandas(self):     import pandas as pd    return pd.DataFrame.from_records(self.collect(), columns=self.columns)您需要在每个节点上都安装有Python(最好具有所有依赖项)。SparkR对应项(as.data.frame)只是的别名collect。为了在这两种情况下的数据概括为collected向驾驶员节点并转换到本地数据结构(pandas.DataFrame和base::data.frame在Python和R分别地)。向量化的用户定义函数由于火花2.3.0 PySpark还提供了一组pandas_udf(SCALAR,GROUPED_MAP,GROUPED_AGG),其并行地对由下式定义的数据块进行操作在SCALAR变体情况下进行分区GROUPED_MAP和的情况下的分组表达式GROUPED_AGG。每个块用一种或多种pandas.core.series.Series(如果有SCALAR和)GROUPED_AGG变体。pandas.core.frame.DataFrame如果是GROUPED_MAP变体,则为单个。类似地,从Spark 2.0.0开始,SparkR提供dapply并gapply在data.frames分区和分组表达式分别定义的函数上运行。上述功能:不要收集给司机。除非数据仅包含单个分区(即带有coalesce(1))或分组表达式是微不足道的(即带有),否则groupBy(lit(1))就没有单个节点的瓶颈。将相应的块加载到相应执行器的内存中。因此,它受每个执行器上可用的单个块/内存大小的限制。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python