我有一个巨大的数据集,正在使用apachespark进行数据处理。使用apachearrow,我们可以将spark兼容的Dataframe转换为pandas兼容的Dataframe,并在其上运行操作。通过转换Dataframe,它会达到spark中所看到的并行处理性能,还是会表现得像Pandas?
nwsw7zdq1#
你可以在这里的文档中看到注意,即使使用arrow,topandas()也会将Dataframe中的所有记录收集到驱动程序,并且应该在数据的一小部分上完成当数据移动到Dataframe时,数据将被发送到驱动程序。这意味着,如果有太多数据需要驱动程序处理,则可能会出现性能问题。因此,如果您决定使用pandas,请尝试在调用之前对数据进行分组 toPandas() 方法。一旦转换成pandasDataframe,它就不会有同样的并行化,因为spark执行器不会处理那个场景。arrow的优点是能够直接从sparkDataframe移动到pandas,但是您必须考虑数据的大小另一种可能是使用其他框架,如考拉。它有一些Pandas的“美”,但它融入了spark。
toPandas()
1条答案
按热度按时间nwsw7zdq1#
你可以在这里的文档中看到
注意,即使使用arrow,topandas()也会将Dataframe中的所有记录收集到驱动程序,并且应该在数据的一小部分上完成
当数据移动到Dataframe时,数据将被发送到驱动程序。这意味着,如果有太多数据需要驱动程序处理,则可能会出现性能问题。因此,如果您决定使用pandas,请尝试在调用之前对数据进行分组
toPandas()
方法。一旦转换成pandasDataframe,它就不会有同样的并行化,因为spark执行器不会处理那个场景。arrow的优点是能够直接从sparkDataframe移动到pandas,但是您必须考虑数据的大小
另一种可能是使用其他框架,如考拉。它有一些Pandas的“美”,但它融入了spark。