SparkSQL:检查数据框的列值是否包含在其他数据框的列中

时间:2018-07-05 09:20:07

标签: r scala apache-spark apache-spark-sql

我需要使用SparkSQLScala中转换R脚本。 我有一个R表达式,如果该行的CODPNRREF值出现在data_frame_2的CODPNRREF列中,则基本上将值1分配给data_frame_1的TravelChild列。

data_frame_1$TravelChild[which(data_frame_1$CODPNRREF %in% data_frame_2$CODPNRREF)]<-1

我当前的解决方案是在数据帧之间执行左联接,并检查data_frame_2的CODPNRREF字段上的空值。如果不是null,则分配值1。

data_frame_2 = data_frame_2.
    withColumnRenamed("CODPNRREF", "CODPNRREF_TMP")

data_frame_1 = data_frame_1.
    join(data_frame_2, $"CODPNRREF" === $"CODPNRREF_TMP", "left").
    withColumn("TravelChild", when(!isnull($"CODPNRREF_TMP"), 1).otherwise($"TravelChild"))

在spark-scala中还有更好的方法吗?

0 个答案:

没有答案