我需要使用SparkSQL在Scala中转换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中还有更好的方法吗?