java如何向Spark数据集添加映射列?
我有一个Java Map
变量,比如Map<String, String> singleColMap
。我想在Spark 2.2(Java 1.8)中将这个Map
变量作为一个新的列值添加到数据集中
我尝试了以下代码,但不起作用:
ds.withColumn("cMap", lit(singleColMap).cast(MapType(StringType, StringType)))
有人能帮忙吗
你可以在下面搜索框中键入要查询的问题!
我有一个Java Map
变量,比如Map<String, String> singleColMap
。我想在Spark 2.2(Java 1.8)中将这个Map
变量作为一个新的列值添加到数据集中
我尝试了以下代码,但不起作用:
ds.withColumn("cMap", lit(singleColMap).cast(MapType(StringType, StringType)))
有人能帮忙吗
# 1 楼答案
这在Scala中很容易用
typedLit
解决,但我找不到一种方法使该方法在Java中工作,因为它需要一个TypeTag
,我认为在Java中甚至不可能创建它然而,我设法在Java中模拟了
typedLit
所做的事情,排除了类型推断部分,因此我需要显式地设置Spark类型:然后可以这样使用:
# 2 楼答案
您可以使用Spark 2.2.0中介绍的^{} ,文档如下:
因此,在这种情况下,以下内容就足够了