【发布时间】:2020-08-20 05:58:31
【问题描述】:
我是新来的火花。我有一个巨大的文件,其中包含类似的数据 -
18765967790@18765967790@T@20130629@00@31@2981546 " "18765967790@18765967790@T@20130629@19@18@3240165 " "18765967790@18765967790@T@20130629@18@18@1362836
13478756094@13478756094@T@20130629@31@26@2880701 " "13478756094@13478756094@T@20130629@19@18@1230206 " "13478756094@13478756094@T@20130629@00@00@1631440
40072066693@40072066693@T@20130629@79@18@1270246 " "40072066693@40072066693@T@20130629@79@18@3276502 " "40072066693@40072066693@T@20130629@19@07@3321860
我正在尝试用换行符替换“”,以便我的输出看起来像这样-
18765967790@18765967790@T@20130629@00@31@2981546
18765967790@18765967790@T@20130629@19@18@3240165
18765967790@18765967790@T@20130629@18@18@1362836
13478756094@13478756094@T@20130629@31@26@2880701
13478756094@13478756094@T@20130629@19@18@1230206
13478756094@13478756094@T@20130629@00@00@1631440
40072066693@40072066693@T@20130629@79@18@1270246
40072066693@40072066693@T@20130629@79@18@3276502
40072066693@40072066693@T@20130629@19@07@3321860
我试过了-
val fact1 = sc.textFile("s3://abc.txt").map(x=>x.replaceAll("\"","\n"))
但这似乎不起作用。有人能告诉我我错过了什么吗?
Edit1- 我的最终输出将是一个数据框,其架构在用分隔符“@”拆分后强加。
我低于 o/p-
scala> fact1.take(5).foreach(println)
18765967790@18765967790@T@20130629@00@31@2981546
18765967790@18765967790@T@20130629@19@18@3240165
18765967790@18765967790@T@20130629@18@18@1362836
13478756094@13478756094@T@20130629@31@26@2880701
13478756094@13478756094@T@20130629@19@18@1230206
13478756094@13478756094@T@20130629@00@00@1631440
40072066693@40072066693@T@20130629@79@18@1270246
40072066693@40072066693@T@20130629@79@18@3276502
40072066693@40072066693@T@20130629@19@07@3321860
我得到了额外的空白行,这进一步困扰我创建数据框。这在这里可能看起来很简单,但文件很大,包含“”的行也很长。在问题中,我只放了 2 个双引号,但它们的数量可能超过 40-50。
【问题讨论】:
-
你的输出是什么?
-
可能你想像这样替换它
x.replaceAll(" \" \"","\n") -
你做的是正确的,你的实际输出是什么?试试下面看看有什么不同:
val file = spark.sparkContext.textFile("sc.textFile(\"s3://abc.txt\")") file.foreach(print) val fact1 = file.map(x=>x.replaceAll("\"","\n")) fact1.foreach(print) -
@Belwal 我得到了一些空白行
-
我认为是因为多个引号。
标签: scala apache-spark apache-spark-sql rdd