Pyspark DF:如何添加文字空字典“{}”列

2024-03-30

我有 json 文件,其中每一行都是一个 json 对象,其中包含多个字符串和一个字典。{"str_a":"blah","str_b":"blah","dict_obj":{}}

字典对象通常是"dict_obj":{},偶尔包含值,并且很少会从所有 json 行中丢失,例如:

{"str_a":"blah","str_b":"blah"}
{"str_a":"blah","str_b":"blah"}
{"str_a":"blah","str_b":"blah"}

我想确保该字段存在于 json 输出中。如果我添加一个空列,则打印输出如下所示:{"dict_object":null}但是,如果批次中的单个记录包含"dict_obj":{}字段,那么保存的json包含"dict_obj":{}.

到目前为止我尝试过的事情导致"dict_obj":null:

df.withColumn("dict_object", F.lit(None))

df.withColumn("dict_object",
    F.lit(None).cast(MapType(StringType(), StringType()))
)

df.withColumn("dict_object",
    F.lit(None).cast(StructType([StructField("", StringType(), True)]))
)

我如何复制该字段以便输出包含"dict_obj":{}?


您可以使用create_map像这样的函数:

from pyspark.functions import F
df = spark.range(1).withColumn("x", F.create_map())
>>> df.show()
+---+---+
| id|  x|
+---+---+
|  0| []|
+---+---+

>>> df.printSchema()
root
 |-- id: long (nullable = false)
 |-- x: map (nullable = false)
 |    |-- key: string
 |    |-- value: string (valueContainsNull = false)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Pyspark DF:如何添加文字空字典“{}”列 的相关文章

随机推荐