SPARK read.json抛出java.io.IOException:换行前的字节太多了

sta*_*kit 3 json bigdata apache-spark pyspark spark-dataframe

我在读取一个大的6gb单行json文件时遇到以下错误:

Job aborted due to stage failure: Task 5 in stage 0.0 failed 1 times, most recent failure: Lost task 5.0 in stage 0.0 (TID 5, localhost): java.io.IOException: Too many bytes before newline: 2147483648
Run Code Online (Sandbox Code Playgroud)

spark没有用新行读取json文件,因此整个6 gb json文件在一行上:

jf = sqlContext.read.json("jlrn2.json")
Run Code Online (Sandbox Code Playgroud)

组态:

spark.driver.memory 20g
Run Code Online (Sandbox Code Playgroud)

Mik*_*ark 6

是的,你的行中有多个Integer.MAX_VALUE字节.你需要拆分它.

请记住,Spark期望每一行都是有效的JSON文档,而不是整个文件.以下是Spark SQL Progamming Guide中的相关行

请注意,作为json文件提供的文件不是典型的JSON文件.每行必须包含一个单独的,自包含的有效JSON对象.因此,常规的多行JSON文件通常会失败.

因此,如果您的JSON文档在表单中......

[
  { [record] },
  { [record] }
]
Run Code Online (Sandbox Code Playgroud)

你会想要改变它

{ [record] }
{ [record] }
Run Code Online (Sandbox Code Playgroud)

  • 是否有任何工具可以将大文件转换为这种格式? (2认同)