我有一个类似Json格式的文件,其中包含数百条推文(全部有5个字段):
x <- 1
x
# [1] 1
class(x) <- "Date"
x
# [1] "1970-01-02"
我将文件的内容转换为RDD以使用它
[...]
{
"idTweet":"943959778006589441",
"text":"Lorem ipsum dolor sit amet...",
"idAuthor":"912276331584421889",
"idOriginal":"0",
"origAuthor":"0"
}
[...]
我拆分每个String行:
val testRDD = spark.sparkContext.textFile("json-like_file.txt")
给出结果(方案)[ej。 1]:
val tweets = testRDD.map(t => t.split("\",\""))
.map(fields => (fields(0), fields(1), fields(2), fields(3), fields(4)))
只要推文行包含如下文字中的错误:
,这一切都很好field(0): {"idTweet":"943959778006589441"
field(1): "text":"Lorem ipsum dolor sit amet..."
field(2): "idAuthor":"912276331584421889"
field(3): "idOriginal":"0"
field(4): "origAuthor":"0"}
如果我像以前一样slpit,它会以这种方式划分它:
{
"idTweet":"943959778006589441",
"text":"Lorem ipsum","dolor sit","amet","...",
"idAuthor":"912276331584421889",
"idOriginal":"0",
"origAuthor":"0"
}
在分割字符串后,如何连接某些字段以将它们连接成一个(字段文本)?像[ej。 1]结果。
答案 0 :(得分:0)
你说格式是“Json-like”,这意味着它不是真正的 JSON 。以下简介:
{
"idTweet":"943959778006589441",
"text":"Lorem ipsum","dolor sit","amet","...",
"idAuthor":"912276331584421889",
"idOriginal":"0",
"origAuthor":"0"
}
不有效 JSON ,因此如果您使用 JSON 解析器,它会相应地出错并可以作为你这么选择。
如果格式是 JSON -esque,但实际上不是 JSON ,那么这就是我需要在路上自定义验证格式的情况,并据此处理。
如果出现上述问题,则应确定格式无效,并以您选择的方式标记为无效, Spark 作业将继续执行下一条记录RDD
。