在Spark中,有没有办法通过连接向DataFrame添加列,但是这样可以保证左侧保持完全不变?
这是我到目前为止所看到的:
leftOuterJoin ...但是冒着重复行的风险,因此必须非常小心以确保右侧没有重复的密钥。如果保证安全的唯一方法是在加入之前进行重复数据删除,则不是完全稳健或高效。
有一种数据结构似乎保证没有重复的密钥:PairRDD。这有一个很好的方法来查找键值表中的键:YYY.lookup("key")
。因此,人们可能希望能够.withColumn("newcolumn", udf((key:String) => YYY.lookup(key)).apply(keyColumn))
,但似乎udfs不能这样做,因为他们显然无法访问显然需要查找的sqlContext。如果有一种使用withColumn
的方法,我会非常高兴,因为它具有正确的语义。
非常感谢提前!