我有一个包含多个json记录的序列文件。我想将每个json记录发送到一个函数。如何一次提取一条json记录?
答案 0 :(得分:0)
不幸的是,没有标准的方法可以做到这一点。
与YAML不同,suggested有一个明确定义的方法允许一个文件包含多个YAML"文档",JSON没有这样的标准。
解决问题的一种方法是创建自己的"对象分隔符"。例如,您可以使用换行符分隔相邻的JSON对象。您可以告诉您的JSON编码器不要输出任何换行符(通过强制将其转义为\
和n
)。只要您的JSON解码器确定它不会看到任何换行符,除非它将两个JSON对象分开,它可以一次读取一行并解码每一行。
你也可以使用JSON数组存储多个JSON对象regex demo,但它不再是"流"。
答案 1 :(得分:0)
您可以将序列文件的内容读取到RDD [String]并将其转换为Spark Dataframe。
val seqFileContent = sc
.sequenceFile[LongWritable, BytesWritable](inputFilename)
.map(x => new String(x._2.getBytes))
val dataframeFromJson = sqlContext.read.json(seqFileContent)