修改mapPartitions

时间:2019-11-05 18:53:26

标签: apache-spark apache-spark-sql

我正在尝试通过从其余API中获取信息来丰富数据帧,但又不让它感到不知所措-也就是说,我所寻找的本质上是一种运行带有UDF的withColumn的方法,该方法不会对每一行都执行但要批处理一行(例如,每个分区)。

我认为使用mapPartitions会显得微不足道,但是由于我正在处理一个不可变的数据集,因此似乎并非如此。 我看到的唯一可行的方法是为分区中的每一行构造一个新的Row对象(使用RowFactory.createRow),但这也意味着如果我想向整个行添加新列数据框,我首先将其添加一些空值,然后才在构造新的Row时修改该值,即:

val df = spark.read.parquet("some path") df.withColumn("enrichment_data", lit(None).cast(StringType)) df.mapPartitions(partition => { partition.map(row => RowFactory.createRow(...allfields...,enrich(row.getAs("enrichment_data"))))})

有明显的东西我可能会想念吗?

0 个答案:

没有答案