【发布时间】:2018-06-21 10:55:39
【问题描述】:
我有一个可将数据放入 S3 的 kinesis firehose 传输流。但是在数据文件中,json 对象之间没有分隔符。所以它看起来像这样,
{
"key1" : "value1",
"key2" : "value2"
}{
"key1" : "value1",
"key2" : "value2"
}
在 Apache Spark 中,我这样做是为了读取数据文件,
df = spark.read.schema(schema).json(path, multiLine=True)
这只能读取文件中的第一个json对象,其余的忽略,因为没有分隔符。
如何在 spark 中使用解决此问题?
【问题讨论】:
-
修复上游进程?你在 Spark 中所做的任何事情至少都会有些低效和丑陋。
-
有道理。但我想知道基于 rdd 的方法来解决这个问题。或者当然有更好的方法。
-
在我脑海中浮现:您可以使用
wholTextFiles并手动解析 - 但性能不佳。如果结构始终由}{分隔,您可以尝试使用Hadoop Input format with delimiter,然后修复记录,但它是hack。您可以实现自己的输入格式,但不能在 Python 中实现,而且针对此类问题需要大量代码。但老实说 - 如果过程在你的控制之下,不要浪费时间解决症状,解决问题:)
标签: json apache-spark pyspark databricks amazon-kinesis-firehose