我有一个json数组文件,如下所示:
["{\"timestamp\":1616549396892,\"id\":\"1\",\"events\":[{\"event_type\":\"ON\"}]}",{"meta":{"headers":{"app":"music"},"customerId":"2"}}]
我有一个json文件,节点如下所示:
我试图通过sparkshell在scala中读取这个文件。
val s1 = spark.read.json("path/to/file/file.json")
但是,这会导致损坏的\u记录错误:
org.apache.spark.sql.DataFrame = [_corrupt_record: string]
我也试过这样读:
val df = spark.read.json(spark.sparkContext.wholeTextFiles("path.json").values)
val df = spark.read.option("multiline", "true").json("<file>")
但还是一样的错误。
因为json数组包含字符串和json对象,所以我无法读取它。
有人能解释一下这个错误吗?我们如何通过spark udf阅读?
1条答案
按热度按时间plicqrtu1#
是的,原因是文本和实际json对象的混合。在我看来,这两个条目似乎属于同一个条目,所以为什么不将模式改成这样:
新行也意味着新记录,因此对于多个事件,您的文件将如下所示: