【问题标题】:How to get column values from list which contains column names in spark scala dataframe如何从包含spark scala数据框中列名的列表中获取列值
【发布时间】: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


【解决方案1】:

字符串列表可以是mapped 到列列表(使用functions.col)。然后可以将此列列表与concat 一起使用:

val lst: List[String] = List("section_xid", "learner_xid")
df.withColumn("dedup_key_sk", concat(lst.map(col):_*)).show()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-03
    • 2020-09-21
    • 2018-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-07
    • 2021-04-25
    相关资源
    最近更新 更多