gpt4 book ai didi

apache-spark - 从嵌套字典创建 Spark DataFrame

转载 作者:行者123 更新时间:2023-12-04 12:47:13 37 4
gpt4 key购买 nike

我有一个嵌套字典列表,例如ds = [{'a': {'b': {'c': 1}}}]并希望从中创建一个 spark DataFrame 嵌套字典的推断模式 .使用 sqlContext.createDataFrame(ds).printSchema()给我以下架构

root
|-- a: map (nullable = true)
| |-- key: string
| |-- value: map (valueContainsNull = true)
| | |-- key: string
| | |-- value: long (valueContainsNull = true)

但我需要的是这个
root
|-- a: struct (nullable = true)
| |-- b: struct (nullable = true)
| | |-- c: long (nullable = true)

可以通过首先将字典转换为 JSON 然后使用 jsonRDD 加载它来创建第二个模式。像这样 sqlContext.jsonRDD(sc.parallelize([json.dumps(ds[0])])).printSchema() .但这对于大文件来说会很麻烦。

我想过将字典转换为 pyspark.sql.Row()希望数据框能够推断出模式的对象,但是当字典具有不同的模式时它不起作用(例如,首先缺少一些键)。

有没有其他方法可以做到这一点?谢谢!

最佳答案

我认为这会有所帮助。

import json
ds = [{'a': {'b': {'c': 1}}}]
ds2 = [json.dumps(item) for item in ds]
df = sqlCtx.jsonRDD(sc.parallelize(ds2))
df.printSchema()

然后,
root
|-- a: struct (nullable = true)
| |-- b: struct (nullable = true)
| | |-- c: long (nullable = true)

关于apache-spark - 从嵌套字典创建 Spark DataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29770624/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com