一种解决spark解析json文件出现_corrupt_record异常的方法

使用下面由scala编写的spark程序读取json文件时,json格式解析异常。

val dfjs = sc.read.json("test.json")
dfjs.printSchema()

解析出来的异常json格式为

root
 |-- _corrupt_record: string (nullable = true)

test.json 文件内容为:

{
  "a":"123"
}

通过分析json文件内容可知,这是由于多余的换行符导致spark的json解析器没有正确解析。网络上有通过添加option("multiLine", true)的方法解决这一问题,但是这个参数和spark版本有关。正确的方法应该是先读取文件中的数据以去除换行符和占位符对json解析的影响:

val dfjs = sc.read.json(sc.sparkContext.wholeTextFiles("test.json").values)
dfjs.printSchema()

正确的运行结果如下:

root
 |-- a: string (nullable = true)

你可能感兴趣的:(spark,bigdata)