出于某种原因,当我在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函数中没有效果?