首页 > 解决方案 > 如何将 Map 列添加到 Spark 数据集?

问题描述

我有一个 JavaMap变量,比如说Map<String, String> singleColMap. 我想将此Map变量作为 Spark 2.2 (Java 1.8) 中的新列值添加到数据集中。

我尝试了下面的代码,但它不工作:

ds.withColumn("cMap", lit(singleColMap).cast(MapType(StringType, StringType)))

有人可以帮忙吗?

标签: javascalaapache-sparkdictionaryapache-spark-dataset

解决方案


您可以使用文档中在Spark 2.2.0typedLit中引入的内容:

此函数与 lit 的区别在于此函数可以处理参数化的 scala 类型,例如:List、Seq 和 Map。

所以在这种情况下,以下应该就足够了

ds.withColumn("cMap", typedLit(singleColMap))

推荐阅读