Spark Scala - 如何为每个组创建新列,然后在 spark 数据框中分解列值

Posted

技术标签:

【中文标题】Spark Scala - 如何为每个组创建新列,然后在 spark 数据框中分解列值【英文标题】:Spark Scala - How to create new column for each group and then explode the column values in spark dataframe 【发布时间】:2017-04-07 12:52:54 【问题描述】:

我的数据框如下所示 列名索引,单词

Index | words
one | col1: a, col2: b
one | col1: c, col2: d
two | col1: a, col2: b
two | col1: e, col2: f

我正在寻找如下输出 输出df列名一、二

one | two
 col1: a, col2: b | col1: a, col2: b
 col1: c, col2: d | col1: e, col2: f

请任何人帮我解决这个问题。我使用的是 spark 1.5.2 版本

【问题讨论】:

【参考方案1】:

如果您确定每个索引值都有两个单词,您可以使用以下:

sqlContext.sql("select Index, collect_list(words)[0],collect_list(words)[1] from yourTable group by Index").show

【讨论】:

以上是关于Spark Scala - 如何为每个组创建新列,然后在 spark 数据框中分解列值的主要内容,如果未能解决你的问题,请参考以下文章

如何为 scala Iterable、spark 数据集制作编码器

Scala Spark Dataframe 创建一个新列,其中包含另一列的最大先前值和当前值

spark scala - UDF 用于创建新列

Scala Spark,如何为列添加值

如何在 Scala Spark 中使用具有许多条件的“.withColumn”为数据集创建新列

在 Scala Spark 中,当源列为 NULL 时如何为派生列添加默认值?