Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从spark scala中的多行文件读取JSON文件_Json_Scala_Apache Spark_Bigdata - Fatal编程技术网

从spark scala中的多行文件读取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

我在Scala学习spark。我有一个JSON文件,如下所示:

[
  {
    "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)
?你确定吗?就我记忆所及,这很好。从零开始写的东西不多,但少了一件。