繁体   English   中英

将 Spark DataFrame 列中的 JSON 数据转换为表格格式

[英]Convert JSON Data in Spark DataFrame column into tabular format

我得到了从多行 JSON 文件加载的火花dataframe

列(数据)模式之一如下:

 root
 |-- data: array (nullable = true)
 |    |-- element: struct (containsNull = true)
 |    |    |-- f: struct (nullable = true)
 |    |    |    |-- 0: struct (nullable = true)
 |    |    |    |    |-- v: double (nullable = true)
 |    |    |-- ts: string (nullable = true)

和样本数据:

array
0: {"f": {"0": {"v": 25.08}}, "ts": "2021-01-11T05:59:00.170Z"}
1: {"f": {"0": {"v": 25.92}}, "ts": "2021-03-22T03:29:00.170Z"}
2: {"f": {"0": {"v": 25.94}}, "ts": "2021-03-22T03:39:00.173Z"}
3: {"f": {"0": {"v": 25.95}}, "ts": "2021-03-22T03:49:00.170Z"}
4: {"f": {"0": {"v": 25.99}}, "ts": "2021-03-22T04:00:00.173Z"}

我只想提取 ts 和 v。

示例结果

1

您可以将结构数组分解为多行,并 select 所需的结构元素:

import pyspark.sql.functions as F

df2 = df.select(F.explode('data').alias('data')).select('data.ts', 'data.f.0.v')

df2.show(truncate=False)
+------------------------+-----+
|ts                      |v    |
+------------------------+-----+
|2021-01-11T05:59:00.170Z|25.08|
|2021-03-22T03:29:00.170Z|25.92|
|2021-03-22T03:39:00.173Z|25.94|
|2021-03-22T03:49:00.170Z|25.95|
|2021-03-22T04:00:00.173Z|25.99|
+------------------------+-----+

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM