我有一个spark数据帧,其中一列上有一个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'),
)
你可以用json\u元组做类似的事情
https://spark.apache.org/docs/2.2.0/api/python/pyspark.sql.html#pyspark.sql.functions.json_tuple
你知道吗测向选择(json\u tuple(col(“json”),<;<;所有\u字段,\u you\u want>;)
相关问题 更多 >
编程相关推荐