为什么在Sparks等效的情况下pyspark中的数据框没有映射功能?

Rag*_*van 5 apache-spark pyspark

目前在PySpark上工作。有上没有地图功能DataFrame,以及一个必须去RDDmap功能。在Scala中有一个mapon DataFrame,这有什么原因吗?

use*_*411 7

Dataset.map不是DataFrameDataset[Row])API的一部分。它将强类型Dataset[T]转换为强类型Dataset[U]

def map[U](func: (T) ? U)(implicit arg0: Encoder[U]): Dataset[U] 
Run Code Online (Sandbox Code Playgroud)

在强类型化的Dataset世界中,Python根本就没有地方。通常,Datasets本机JVM对象(不同于RDD它没有Python特定的实现)在很大程度上依赖于丰富的Scala类型系统(甚至Java API也受到严格限制)。即使Python实现了EncoderAPI的某种变体,数据仍必须转换为RDD用于计算的数据。

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

既包括典型udfs(尤其是SCALARSCALAR_ITER变体),以及地图样变体- GROUPED_MAPMAP_ITER通过施加GroupedData.applyDataFrame.mapInPandas分别(火花> = 3.0.0)。