[英]Reading JSON Array with Apache Spark
我有一个 json 数组文件,如下所示:
["{\"timestamp\":1616549396892,\"id\":\"1\",\"events\":[{\"event_type\":\"ON\"}]}",{"meta":{"headers":{"app":"music"},"customerId":"2"}}]
我有一个 json 文件,节点如下所示:
我正在尝试通过 spark-shell 在 scala 中读取此文件。
val s1 = spark.read.json("path/to/file/file.json")
但是,这会导致损坏记录错误:
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 读取它?
是的,原因是文本和实际 json object 的混合。 在我看来,这两个条目好像属于一起,所以为什么不将架构更改为这样的:
{"meta":{"headers": {"app": "music"},"customerId": "2"},"data": "{\"timestamp\":1616549396892,\"id\":\"1\",\"events\":[{\"event_type\":\"ON\"}]}"}
新行也意味着新记录,因此对于多个事件,您的文件将如下所示:
{"meta":{"headers": {"app": "music"},"customerId": "2"},"data": "{\"timestamp\":1616549396892,\"id\":\"1\",\"events\":[{\"event_type\":\"ON\"}]}"}
{"meta":{"headers": {"app": "music"},"customerId": "2"},"data": "{\"timestamp\":1616549396892,\"id\":\"2\",\"events\":[{\"event_type\":\"ON\"}]}"}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.