将mapType列添加到现有DataFrame

时间:2019-11-20 10:39:32

标签: scala dataframe apache-spark

关于Spark中Scala中的DataFrame,我可能有一个简单而又快速的问题。

我有一个现有的Spark DataFrame(可与Scala 2.10.5和Spark 1.6.3一起使用),并且想添加一个具有ArrayType或MapType的新列,但不知道如何实现。但是不知道该如何处理。我不想使用“单个”值创建多个列,而是将它们存储在一个列中。这样会缩短我的代码,并使它更容易更改。

import org.apache.spark.sql.types.MapType

...

// DataFrame initial creation
val df = ...

// adding new columns
val df_new = df
   .withColumn("new_col1", lit("something_to_add") // add a literal
   .withColumn("new_col2"), MapType("key1" -> "val1", "key2" -> "val2")) // ???

1 个答案:

答案 0 :(得分:1)

您可以尝试

val df_new = df
   .withColumn("new_col1", lit("something_to_add") // add a literal
   .withColumn("new_col2"), typedLit[Map[String, String]](Map("key1" -> "val1"), ("key2" -> "val2")))