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))