spark:apply explode到dataFrame中的列列表,但不是所有列

时间:2016-08-17 14:58:36

标签: apache-spark dataframe apache-spark-sql

假设我有一个列名列表 val expFields = List("f1", "f2")和dataFrame df,我想爆炸df的expField列表中的列。这意味着我想将“爆炸”应用于选定数量的列并返回一个新的dataFrame。我不想手动指定列名如df.withColumn("f1", explode(col("f1"))).withColumn("f2", explode(col("f2")))。我想使用expFields列表来指定这些列。我如何在Spark中做到这一点?

1 个答案:

答案 0 :(得分:2)

只需折叠列列表:

expFields.foldLeft(df)((acc, c) => acc.withColumn(c, explode(col(c))))