为什么 pyspark 中没有数据帧的映射函数,而 Spark 等效项却有它?

2023-11-25

目前正在研究 PySpark。没有地图功能DataFrame,并且必须去RDD for map功能。在Scala中有一个map on DataFrame,这有什么原因吗?


Dataset.map不属于DataFrame (Dataset[Row]) API。它转换强类型Dataset[T]进入强类型Dataset[U]:

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

并且在强类型中根本没有 Python 的位置Dataset世界。一般来说,Datasets是本机 JVM 对象(与RDD它没有 Python 特定的实现),它严重依赖于丰富的 Scala 类型系统(甚至 Java API 也受到严重限制)。即使Python实现了一些变体EncoderAPI,数据仍然需要转换为RDD用于计算。

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

这包括两个典型的udfs(尤其SCALAR and SCALAR_ITER变体)以及类似地图的变体 -GROUPED_MAP and MAP_ITER应用通过GroupedData.apply and DataFrame.mapInPandas(Spark >= 3.0.0) 分别。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 pyspark 中没有数据帧的映射函数,而 Spark 等效项却有它? 的相关文章

随机推荐