为什么pyspark中的数据帧没有map函数,而spark等价物呢?

时间:2017-11-17 05:25:20

标签: apache-spark pyspark

目前正在开发PySpark。 DataFrame上没有地图功能,必须转到RDD map功能。在Scala中map上有DataFrame,有什么理由吗?

1 个答案:

答案 0 :(得分:5)

Dataset.map不属于DataFrameDataset[Row])API。它将强类型Dataset[T]转换为强类型Dataset[U]

def map[U](func: (T) ⇒ U)(implicit arg0: Encoder[U]): Dataset[U] 

并且在强类型Dataset世界中根本没有Python的位置。通常,Datasets是本机JVM对象(与RDD不同,它没有特定于Python的实现),它严重依赖于丰富的Scala类型系统(即使Java API受到严格限制)。即使Python实现了Encoder API的某种变体,数据仍然必须转换为RDD进行计算。

相比之下,Python使用矢量化的udfs实现了自己的map类机制,应该在Spark 2.3中发布。它专注于与Pandas API结合的高性能serde实现。