【问题标题】:Pyspark add empty literal map of type stringPyspark 添加字符串类型的空文字映射
【发布时间】:2021-12-09 23:20:03
【问题描述】:

类似于this question 我想向我的 pyspark DataFrame 添加一列,其中只包含一个空地图。但是,如果我使用该问题的建议答案,则地图类型为 <null,null>,与那里发布的答案不同。

from pyspark.sql.functions import create_map
spark.range(1).withColumn("test", create_map()).printSchema()

root
 |-- test: map(nullable = false)
 |    |-- key: null
 |    |-- value: null (valueContainsNull = false)

我需要一张空的<string,string> 地图。我可以在 Scala 中这样做:

import org.apache.spark.sql.functions.typedLit
spark.range(1).withColumn("test", typedLit(Map[String, String]())).printSchema()

root
 |-- test: map(nullable = false)
 |    |-- key: string
 |    |-- value: string (valueContainsNull = true)

如何在 pyspark 中做到这一点?我在 Databricks Runtime 7.3 LTS 上使用 Spark 3.01 和底层 Scala 2.12。我需要<string,string> 地图,否则我无法将数据框保存到镶木地板:

AnalysisException: Parquet data source does not support map<null,null> data type.;

【问题讨论】:

    标签: apache-spark pyspark


    【解决方案1】:

    您可以使用create_map 将地图转换为创建地图的适当类型。

    
    from pyspark.sql.functions import create_map
    spark.range(1).withColumn("test", create_map().cast("map<string,string>")).printSchema()
    
    root
     |-- id: long (nullable = false)
     |-- test: map (nullable = false)
     |    |-- key: string
     |    |-- value: string (valueContainsNull = true)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-16
      • 2021-06-19
      • 2021-09-06
      • 2021-01-14
      • 2020-07-30
      • 2022-01-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多