gpt4 book ai didi

json - 将大量 JSON 文件读入 Spark Dataframe

转载 作者:行者123 更新时间:2023-12-04 21:08:03 24 4
gpt4 key购买 nike

我有一个大型嵌套 NDJ(新行分隔的 JSON)文件,我需要将其读入单个 Spark 数据帧并保存到 Parquet 。为了呈现模式,我使用了这个函数:

def flattenSchema(schema: StructType, prefix: String = null) : Array[Column] = {
schema.fields.flatMap(f => {
val colName = if (prefix == null) f.name else (prefix + "." + f.name)
f.dataType match {
case st: StructType => flattenSchema(st, colName)
case _ => Array(col(colName))
}
})
}

在通过读取返回的数据帧上
val df = sqlCtx.read.json(sparkContext.wholeTextFiles(path).values)
我也把它切换到 val df = spark.read.json(path)所以这只适用于 NDJ 而不适用于多行 JSON——同样的错误。

这导致工作人员出现内存不足错误 java.lang.OutOfMemoryError: Java heap space .

我已经改变了 jvm 内存选项和 spark executor/driver 选项无济于事

有没有办法流式传输文件、展平模式并增量添加到数据帧? JSON 的某些行包含来自前面的全部内容的新字段......所以这些需要稍后填写。

最佳答案

没有解决办法。问题在于 JVM 对象限制。我最终使用了 scala json 解析器并手动构建了数据帧。

关于json - 将大量 JSON 文件读入 Spark Dataframe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41067584/

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