pyspark根据匹配数据将导入列从一个df合并到另一个

时间:2019-11-05 18:09:23

标签: python apache-spark pyspark apache-spark-sql

我对使用数据帧非常陌生。  我有两个框架。

一个被称为new,另一个被称为existing

new有一个称为ID的列。 existing具有三列:ID,颜色,大小。

我想对这些帧进行操作,以便在new中可以找到与existing中的行具有相同ID的行时,我们添加颜色列的值(但不添加大小)列)到new数据帧。如果找不到匹配项,我想为new

的颜色列分配一个随机值

在我看来,我可以使用rdd.map做到这一点,但是我试图限制自己只能使用框架,因为我被告知它效率更高。

1 个答案:

答案 0 :(得分:0)

您要查找的是联接,确切地说是左联接:

from pyspark.sql import functions as f
new_df = new_df.join(existing_df, "id", "left_outer") \
               .select(new_df.id, f.coalesce(f.col("color"), f.rand())

如果合并函数不为空(即匹配)或随机数,它将为您提供颜色。您可能需要以某种方式将随机数映射到您的色谱图(取决于您在那里的表示形式)。

作为一般说明:使用数据帧和spark-sql API比执行RDD操作要快