如何使用默认值从 PySpark 数据帧访问 JSON 值?

How to access JSON values from PySpark dataframes with default values?

我有一个 spark 数据框,其中一列有一个 Json。我的任务是将此数据框转换为柱状类型的数据框。问题是 JSON 是动态的,它总是改变结构。我想做的是尝试从中获取值,如果它没有,则 return 默认值。数据框中有这个选项吗?这就是我从 JSON 中获取值的方式,问题是如果其中一个级别更改名称或结构,它不会失败。

columnar_df = df.select(col('json')['level1'].alias('json_level1'),
col('json')['level1']['level2a'].alias('json_level1_level2a'),
col('json')['level1']['level2b'].alias('json_levelb'),
)

你可以用 json_tuple

做类似的事情

https://spark.apache.org/docs/2.2.0/api/python/pyspark.sql.html#pyspark.sql.functions.json_tuple

df.select(json_tuple(col("json"), << all_the_fields , _you_want >> ))