【问题标题】:Parse JSON data with Apache Spark and Scala使用 Apache Spark 和 Scala 解析 JSON 数据
【发布时间】:2017-07-23 07:17:21
【问题描述】:

我有这种类型的文件,其中每一行都是一个 JSON 对象,除了前几个单词(见附图)。我想使用 Spark 和 Scala 解析这种类型的文件。我已经使用 sqlContext.read.json(“json 文件的路径”) 进行了尝试,但它给了我错误(损坏的数据),因为整个数据不是 JSON 对象。如何将此 JSON 文件解析为 SQL 数据帧?

【问题讨论】:

  • 如果你有无效的JSON,你不能使用任何工具来解析它
  • 这是无效的 JSON 吗?
  • 好吧,事实上你在实际 JSON 之前有非 JSON 数据,那么是的,它在 Sparks 眼中是无效的。您需要单独提取该数据
  • Spark中有没有办法单独提取数据?
  • @AkhilChoudhari 这些“前几个单词”在所有行中的长度是否相同?

标签: scala apache-spark apache-spark-sql


【解决方案1】:

试试这个:

val rawRdd = sc.textFile("path-to-the-file")
val jsonRdd = rawRdd.map(_.substring(32)) //32 - number of first characters to ignore

val df = spark.read.json(jsonRdd)

【讨论】:

  • 最后一个命令给了我一个错误,如下所示。在 org.apache.hadoop.mapred.FileInputFormat.singleThreadedListStatus(FileInputFormat.java:287) 在 org.apache.hadoop.mapred.FileInputFormat.listStatus(FileInputFormat.java:229)
  • 如果你能提供一些示例数据来测试会更容易。
  • 你使用什么版本的 spark?
  • 当我向 spark.jso.read() 提供整个 20MB 文件时,它不起作用。但它适用于文件的一半。为什么?
  • 它给了我错误:org.apache.hadoop.mapred.InvalidInputException:输入路径不存在:
猜你喜欢
  • 1970-01-01
  • 2020-01-19
  • 1970-01-01
  • 2020-07-28
  • 2021-11-03
  • 2020-08-23
  • 1970-01-01
  • 2016-01-15
  • 2016-12-16
相关资源
最近更新 更多