PySpark-将JSON对象列表转换为行
我想转换对象列表并将其属性存储为列PySpark-将JSON对象列表转换为行,pyspark,pyspark-sql,Pyspark,Pyspark Sql,我想转换对象列表并将其属性存储为列 { "heading": 1, "columns": [ { "col1": "a", "col2": "b", "col3": "c" }, { "col1": "d", "col2": "e", "col3": "f" } ] } 最终结果 heading | col1 | col2 | col3 1 | a | b
{
"heading": 1,
"columns": [
{
"col1": "a",
"col2": "b",
"col3": "c"
},
{
"col1": "d",
"col2": "e",
"col3": "f"
}
]
}
最终结果
heading | col1 | col2 | col3
1 | a | b | c
1 | d | e | f
我目前正在展平我的数据(不包括列)
但是,对于这个用例,我需要列。我看到了使用
array\u-zip
和explode
的示例。我是否需要遍历每个对象,或者是否有更简单的方法提取每个对象并转换为一行?使用Spark SQL内置函数:或者可能是处理此问题的最简单方法(当列中允许NULL时,使用inline\u outer):
从Apache Hive:
将结构数组分解为多行。返回一个包含N列(N=结构中顶级元素的数量)的行集,数组中每个结构一行。(从蜂巢0.10开始)
列的数据类型是什么<代码>字符串
或结构数组
?列是结构数组(属性为字符串)
df = target_table.relationalize('roottable', temp_path)
df.selectExpr('heading', 'inline_outer(columns)').show()
+-------+----+----+----+
|heading|col1|col2|col3|
+-------+----+----+----+
| 1| a| b| c|
| 1| d| e| f|
+-------+----+----+----+