我正在pyspark中查看以下Dataframe模式(为了隐私而更改了名称)。
|-- some_data: struct (nullable = true)
| |-- some_array: array (nullable = true)
| | |-- element: struct (containsNull = true)
| | | |-- some_nested_array: array (nullable = true)
| | | | |-- element: struct (containsNull = true)
| | | | | |-- some_param_1: long (nullable = true)
| | | | | |-- some_param_2: string (nullable = true)
| | | | | |-- some_param_3: string (nullable = true)
| | | |-- some_param_4: string (nullable = true)
| | | |-- some_param_5: string (nullable = true)
| |-- some_other_array: array (nullable = true)
| | |-- element: struct (containsNull = true)
| | | |-- some_param_6: string (nullable = true)
| | | |-- some_param_7: string (nullable = true)
| |-- yet_another_array: array (nullable = true)
| | |-- element: struct (containsNull = true)
| | | |-- some_param_8: string (nullable = true)
| | | |-- some_param_9: string (nullable = true)
我在双嵌套数组中使用explode函数很困难。我希望能以某种方式接近下面的参数 some_array
在他们自己的列中,这样我就可以比较一些参数1到9,甚至只是一些参数1到5。
2条答案
按热度按时间dzjeubhm1#
可以分两步分解嵌套数组:首先分解外部数组,然后分解嵌套的内部数组:
打印5列
some_param_1
至some_param_5
.添加其余两个数组的列很简单:
打印所有列
some_param_1
至some_param_9
就像一张扁平的table。qco9c6ql2#
请将列转换为
json
使用json_path
以列形式获取每个参数。示例代码如下-如果您不熟悉json路径,那么-
获取通过创建的json-
将json从结果单元格复制到
https://jsonpathfinder.com/
在这里您将看到对象树层次结构。现在,点击some_param_1
节点复制同一页上的路径并替换
x
与$
把它作为第二个参数get_json_object
你就完了一旦获得单个param列,就可以进行处理。