如何使用默认值从 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 >> ))
我有一个 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 >> ))