我想向数据框添加一个新的地图类型列,如下所示:
|-- 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/