【发布时间】:2021-11-06 07:50:37
【问题描述】:
我定义了一个配置,其中包含每个表的列列表,以用作重复数据删除键
例如: 配置1:
val lst = List(section_xid, learner_xid)
这些是需要用作去重键的列。这个列表是动态的,有些表会有 1 个值,有些表会有 2 或 3 个值
我想做的是从这个列表中构建一个键列
df.
.withColumn( "dedup_key_sk", uuid(md5(concat($"lst(0)",$"lst(1)"))) )
我如何使这个动态的,它适用于 list 中的任意数量的列。 我试过这样做
df.withColumn("dedup_key_sk", concat(Seq($"col1", $"col2"):_*))
为此,我必须将 list 转换为 Df,并且 list 中的每个值都需要位于单独的列中,我无法弄清楚。
尝试这样做,但没有成功
val res = sc.parallelize(List((lst))).toDF
这里的任何输入将不胜感激。谢谢
【问题讨论】:
-
lst是字符串列表吗? -
是的,它始终是一个字符串列表@werner
标签: scala apache-spark apache-spark-sql