【问题标题】:Read JSON files from multiple line file in spark scala从 spark scala 中的多行文件中读取 JSON 文件
【发布时间】:2017-01-25 23:33:06
【问题描述】:

我正在学习 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")

我只收到corrupted_row : String 没有别的 但是当将每个人(或对象)放在单行时,代码可以正常工作

如何从多行读取 Spark 中的 JSON sqlContext?

【问题讨论】:

    标签: json scala apache-spark bigdata


    【解决方案1】:

    您必须自己将其读入 RDD,然后将其转换为数据集:

    spark.read.json(sparkContext.wholeTextFiles(...).values)          
    

    【讨论】:

    • 所以没有更好的方法。在复杂的 json 结构中很难做到,但是谢谢
    • 您应该能够使用已经构建的解析器(play-json、json4s 等)将其转换为字符串行,这是您真正需要的,因为 read.json(RDD) 将执行类型为你工作。
    • @JustinPihony 为什么不简单地json(sc.wholeTextFiles(...).values)
    • 你确定吗?据我记得它应该解析。
    • 太好了。从头开始写并不多,而是少了一件。
    【解决方案2】:

    这个问题是因为你有多行 json 行而引起的。虽然默认 spark.read.json 期望一行在一行,但这是可配置的:

    您可以设置选项spark.read.json("path-to-json-file").option("multiLine", true)

    【讨论】:

      猜你喜欢
      • 2021-12-07
      • 2016-08-18
      • 2021-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多