火花地图吃掉我的背部斜线/逃脱的字符串

时间:2017-04-27 19:40:16

标签: json scala apache-spark escaping

出于某种原因,当我在map函数中执行代码时,它不起作用,但在map函数之外它可以工作。我有一些json,由于某种原因,其中一个标签有结果的双引号,甚至认为它是形成良好的json。此字符串中的所有双引号都转义为“\”。我想删除所有“\”和两个引号。这很有效:

val  d = dapiRdd take 1
d.foreach{ d1 =>  println(d1.replace("\\", "").replace("\"{","{").replace("}\"","}"))  }

但是这段代码无法删除两个双引号和反斜杠

val dapiRdd = sc.textFile(f).map(d=> d.replace("\\", "").replace("\"{","{").replace("}\"","}") ) 

似乎将此转义字符串传递给要执行的RDD会导致反斜杠被剥离。有什么想法吗?

澄清: 我想从第一个代码片段获取的输出是

<json here>,"body":{"a":1, "b":"stuff"},<more Json>

第二个代码段中我不想要的输入和结果如下所示

<json here>,"body":"{\"a\":1, \"b\":\"stuff\"}",<more Json>

身体形成良好的json但是当我使用json解析时spark将其解释为字符串。所以我想删除周围的行情和所有的转义/反斜杠。我有代码可以在字符串上工作但是当我把这些代码放在spark rdd map函数中时它没有任何效果。为什么代码在spark map函数中没有效果?

0 个答案:

没有答案