从spark scala中的多行文件读取JSON文件
我在Scala学习spark。我有一个JSON文件,如下所示:从spark scala中的多行文件读取JSON文件,json,scala,apache-spark,bigdata,Json,Scala,Apache Spark,Bigdata,我在Scala学习spark。我有一个JSON文件,如下所示: [ { "name": "ali", "age": "13", "phone": "09123455737", "sex": "m" },{ "name": "amir", "age": "24", "phone": "09123475737", "sex": "m" } ] 这里只有这个代码: val sqlContext = new org.apach
[
{
"name": "ali",
"age": "13",
"phone": "09123455737",
"sex": "m"
},{
"name": "amir",
"age": "24",
"phone": "09123475737",
"sex": "m"
}
]
这里只有这个代码:
val sqlContext = new org.apache.spark.sql.SQLContext(sc)
val jsonFile = sqlContext.read.json("path-to-json-file")
我只收到损坏的\u行:字符串
没有其他内容
但当将每个人(或对象)放在一行中时,代码工作正常
如何在spark中读取JSON sqlContext的多行内容?您必须自己将其读入RDD,然后将其转换为数据集:
spark.read.json(sparkContext.wholeTextFiles(...).values)
导致此问题的原因是您有多行json行。虽然默认情况下spark.read.json希望一行在一行中,但这是可配置的:
您可以设置option
spark.read.json(“json文件的路径”).option(“multiLine”,true)
,因此没有更好的方法。在复杂的json结构中很难做到这一点,但谢谢你,你应该能够使用一个已经构建的解析器(play json、json4s等)将其转换成字符串行,这是你真正需要的,因为read.json(RDD)
将为你完成类型工作。@JustinPihony为什么不简单地json(sc.wholeTextFiles(…).values)
?你确定吗?就我记忆所及,这很好。从零开始写的东西不多,但少了一件。