0

我有一个火花数据框,其中一列上有一个 Json。我的任务是将此数据框转换为柱状数据框。问题在于 JSON 是动态的,并且它总是会改变结构。我想做的是尝试从中获取值,如果它没有,则返回一个默认值。数据框中有这个选项吗?这就是我从 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'),
)
4

1 回答 1

1

你可以用 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 >> ))

于 2019-08-27T20:45:40.930 回答