假设您正在通过sparkcontext和hive加载一个大型数据集。所以这个数据集就分布在你的spark集群中。例如,对数千个变量的观察(值+时间戳)。
现在您可以使用一些map/reduce方法或聚合来组织/分析数据。例如,按变量名分组。
分组后,可以将每个变量的所有观察值(值)作为一个timeseriesDataframe。如果现在使用dataframe.topandas
def myFunction(data_frame):
data_frame.toPandas()
df = sc.load....
df.groupBy('var_name').mapValues(_.toDF).map(myFunction)
是否将其转换为每个工作节点上的Dataframe(每个变量),或者
Dataframe是否始终在驱动程序节点上,因此数据从工作节点传输到驱动程序?
1条答案
按热度按时间fafcakar1#
Pandas没有什么特别的
DataFrame
在这种情况下。如果
DataFrame
通过使用toPandas
上的方法pyspark.sql.dataframe.DataFrame
这将收集数据并在驱动程序上创建本地python对象。如果
pandas.core.frame.DataFrame
在executor进程内创建(例如mapPartitions
)你只需要RDD[pandas.core.frame.DataFrame]
. Pandas和其他物体之间没有区别tuple
.最后,示例中的伪代码无法工作,因为您无法(以合理的方式)创建spark
DataFrame
(我想这就是你的意思_.toDF
)执行器线程内部。