我的数据采用以下格式..
{"Foo":"ABC","Bar":"20090101100000","Quux":"{\"QuuxId\":1234,\"QuuxName\":\"Sam\"}"}
我需要它采用这种格式:
{"Foo":"ABC","Bar":"20090101100000","Quux":{"QuuxId":1234,"QuuxName":"Sam"}}
我正在尝试使用 Pig 的替换功能以我需要的格式获取它.. 所以,我试过了..
"LOGS = LOAD 'inputloc' USING TextStorage() as unparsedString:chararray;;" +
"REPL1 = foreach LOGS REPLACE($0, '"{', '{');" +
"REPL2 = foreach REPL1 REPLACE($0, '}"', '}');"
"STORE REPL2 INTO 'outputlocation';"
它会抛出一个错误。表达式或语句中出现意外的标记“{”。
所以基于一个答案here ,我试过:
"REPL1 = foreach LOGS REPLACE($0, '"\\{', '\\{');"
现在,它给出了一个错误。表达式或语句中出现意外的标记“\\”。
真诚感谢任何帮助..
谢谢
最佳答案
对我有用:
REPL1 = FOREACH LOGS GENERATE REPLACE($0, '"\\{', '\\{');
在您的代码中,您缺少 GENERATE
并且开头和结尾的双引号是错误的。
关于hadoop - 替换 pig 中的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31470995/