Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hadoop 配置单元-在regexp\u replace中用$替换时出错_Hadoop_Hive - Fatal编程技术网

Hadoop 配置单元-在regexp\u replace中用$替换时出错

Hadoop 配置单元-在regexp\u replace中用$替换时出错,hadoop,hive,Hadoop,Hive,运行此线路: regexp\u replace('Hello from zzz'、'zzz'、'$15000')给出一个错误,说明: 错误参数“$15000”:org.apache.hadoop.hive.ql.metadata.HiveException:无法执行方法public org.apache.hadoop.io.Text org.apache.hadoop.hive.ql.udf.UDFRegExpReplace.evaluate(org.apache.hadoop.io.Text,

运行此线路:
regexp\u replace('Hello from zzz'、'zzz'、'$15000')
给出一个错误,说明:

错误参数“$15000”:org.apache.hadoop.hive.ql.metadata.HiveException:无法执行方法public org.apache.hadoop.io.Text org.apache.hadoop.hive.ql.udf.UDFRegExpReplace.evaluate(org.apache.hadoop.io.Text,org.apache.hadoop.io.Text,org.apache.hadoop.io.Text)在对象org.apache.hadoop.hive.ql.udf上。UDFRegExpReplace@6e85e0dd类org.apache.hadoop.hive.ql.udf.UDFRegExpReplace为参数{Hello from zzz:org.apache.hadoop.io.Text,zzz:org.apache.hadoop.io.Text,$15000:org.apache.hadoop.io.Text},大小为3


美元不受支持吗?有什么替代方法?

尝试使用两个反斜杠(\\)来转义$(是正则表达式的特殊字符)

Hive-1.3.0中引入了替换功能+ 相关寻址替换功能

如果替换字符串来自表中的字段,则使用concat函数将字段值与反斜杠(\\)连接起来,另一个参数是字段名

   hive> select regexp_replace('Hello from zzz','zzz',concat('\\',"$15000"));
    +--------------------+--+
    |        _c0         |
    +--------------------+--+
    | Hello from $15000  |
    +--------------------+--+
(或)


有可能逃逸整个字符串吗?我从另一个表中获取替换字符串,该值导致错误。是的,选择regexp\u replace('Hello from zzz','zzz',concat('\\',);
   hive> select regexp_replace('Hello from zzz','zzz',concat('\\',"$15000"));
    +--------------------+--+
    |        _c0         |
    +--------------------+--+
    | Hello from $15000  |
    +--------------------+--+
hive> select regexp_replace('Hello from zzz','zzz',concat('\\',field/column-name))