【问题标题】:Add mapType column to existing DataFrame将 mapType 列添加到现有 DataFrame
【发布时间】:2020-03-16 01:15:16
【问题描述】:

关于 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")) // ???

【问题讨论】:

标签: scala dataframe apache-spark


【解决方案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")))

【讨论】:

  • 不幸的是,我的 Spark 1.6.3 不包含 org.apache.spark.sql.functions.typedLit。或者“typedLit”是否存储在另一个包中?
  • typedLit 来自 2.2.0。您可以尝试以下方法。在您的列上使用自定义定义的函数(例如 toMap),该函数返回一个 Map[String, String] 并像这样使用:withColumn("new_col2", toMap(lit("key1->val1")))
猜你喜欢
  • 1970-01-01
  • 2023-04-06
  • 1970-01-01
  • 2022-11-16
  • 2021-03-10
  • 2015-08-27
  • 2021-05-02
  • 2021-10-31
  • 2021-06-16
相关资源
最近更新 更多