【发布时间】:2022-12-13 02:43:46
【问题描述】:
我有一个包含如下列的数据框:
df['指标'] = [{id=1,name=XYZ,value=3}, {id=2,name=KJH,value=2}] [{id=4,name=ABC,value=7}, {id=8,name=HGS,value=9}]
该列是 String 类型,我正在尝试使用以下方法分解该列:
from pyspark.sql import functions as F from pyspark.sql.types import ArrayType array_item_schema = spark.read.json(df.rdd.map(lambda row: row['metrics'])).schema json_array_schema = ArrayType(array_item_schema, True) arrays_df = df.select(F.from_json('metrics', json_array_schema).alias('json_arrays')) objects_df = arrays_df.select(F.explode('json_arrays').alias('objects'))但是,当我尝试时返回了一个空值
objects_df.show()我正在寻找的输出是“指标”列中每个元素的单独列表,列名称在同一数据框中显示 id、名称、值,但不知道从哪里开始对其进行解码。谢谢您的帮助!
【问题讨论】:
-
检查这个答案 - stackoverflow.com/a/74770833/8773309
-
@MohanaBC 此处显示的代码在 pyspark 中抛出“无效语法”...
-
那是 scala 代码,将其转换为 python 语法。 pyspark 和 spark-scala 中的方法名称相同。
-
我很少接触 spark scala,所以在这里迷路了。在转换该代码时,我们将不胜感激!
标签: python json pyspark apache-spark-sql