我想向数据框添加一个新的地图类型列,如下所示:

|-- cMap: map (nullable = true)
|    |-- key: string
|    |-- value: string (valueContainsNull = true)


我尝试了代码:

df.withColumn("cMap", lit(null).cast(MapType)).printSchema


错误是:

<console>:132: error: overloaded method value cast with alternatives:
(to: String)org.apache.spark.sql.Column <and>
(to: org.apache.spark.sql.types.DataType)org.apache.spark.sql.Column
cannot be applied to (org.apache.spark.sql.types.MapType.type)


还有其他方法可以将新列转换为Map或MapType吗?谢谢

最佳答案

与其他类型不同,MapType不是您只能按原样使用的对象(它不是扩展DataType的对象),您必须调用MapType.apply(...),它将键和值类型作为参数(并返回一个MapType类的实例):

df.withColumn("cMap", lit(null).cast(MapType(StringType, StringType)))

关于scala - 如何将空的 map 类型列添加到DataFrame?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44223751/

10-10 13:07