我想将一个字符串从“\ 7”替换为“\ 1”,我的输入文件如下:
a\7b\7c\7
我的另一个表FIELDS TERMINATED BY'\ 001',所以我必须将“\ 7”替换为“\ 1”。
我试过
select regexp_replace(value, "\\u0007", "\\u0001") from test_tbl where dbs="test" and dt=20131130;
但它不起作用。
我写了一个像这样的PHP脚本:
<?php
$strCmd = "hive -e 'select regexp_replace(value, \"\\u0007\", \"\1\") from test_tbl where dbs=\"test\" and dt=20131130;' > tmp";
exec($strCmd);
但它会返回一些错误。
答案 0 :(得分:0)
要在配置单元中替换,您可以使用以下查询。
select regexp_replace(value, "\\u0007", "\\u0001") from test_tbl where dbs="test" and dt=20131130;
Hive中的Reflect用于调用静态函数。因此,String替换可能不起作用。在这里,我找到了您正在寻找的一些信息。 http://comments.gmane.org/gmane.comp.java.hadoop.hive.user/7712
您可以使用reflect2 UDF尝试patch。
编辑:
如果您的输入的纯文本为'\ 7'而不是某些ascii字符,则下面的查询应该有效。
select regexp_replace(value, "\\\\7", "\\\\1") from test_tbl where dbs="test" and dt=20131130;
答案 1 :(得分:0)