目前正在开发PySpark。 DataFrame
上没有地图功能,必须转到RDD
map
功能。在Scala中map
上有DataFrame
,有什么理由吗?
答案 0 :(得分:5)
Dataset.map
不属于DataFrame
(Dataset[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实现。