原因,我认为这不是this question的重复:
exprs
语句来看),作者再次希望事前了解架构,而不是在推断架构。要求:
事前,我不知道json模式是什么,因此需要进行推断。 spark.read.json似乎是推断架构的最佳情况,但是我遇到的所有示例都从文件加载了json。在我的用例中,json包含在数据框的一列中。
我与源文件类型无关(在这种情况下,已使用parquet和csv测试)。但是,源数据帧架构已经并且将具有良好的结构。对于我的用例,json包含在源数据帧中称为“字段”的列中。
生成的数据框应链接到源数据框的主键(在我的示例中为“ id”)。
答案 0 :(得分:1)
该键原来是in the spark source code。 path
传递给spark.read.json
时,可能是“存储json对象的字符串的RDD”。
我想到的代码是:
def inject_id(row):
js = json.loads(row['fields'])
js['id'] = row['id']
return json.dumps(js)
json_df = spark.read.json(df.rdd.map(inject_id))
json_df
然后有一个架构as such
请注意-我并未使用更嵌套的结构对其进行测试,但我相信它将支持spark.read.json
支持的任何内容。