hadoop - 替换 pig 中的字符

标签 hadoop apache-pig azure-hdinsight

我的数据采用以下格式..

{"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/

相关文章:

hadoop - hadoop mapreduce程序中的错误

sql - Hive查询使用 “not column=value” where子句删除空值

hadoop - Cassandras Map Reduce 支持

java - 如何使用java中的身份验证方法连接Azure VM上的WASB

尝试使用 Apache POI 读取 MapReduce 中的 Word 文档时出现 Java.lang.ClassNotFoundException 错误

hadoop - 错误配置 : namenode address dfs. namenode.servicerpc-address 或 dfs.namenode.rpc-address 没有配置

Azure HDInsights Spark 集群安装外部库

azure - 在 HDInsight 模拟器上升级 Pig

shell - 如何从 shell 脚本顺序调用 Pig 脚本

hadoop - 在 PIG 中加载多个文件