如何替换蜂巢中的字符?

use*_*713 22 hadoop hive

description在hive表中有一个字符串列,可能包含制表符'\t',但是当将配置单元连接到外部应用程序时,这些字符会混淆一些视图.是否有一种简单的方法来摆脱该列中的所有制表符?我可以运行一个简单的python程序来完成它,但我想找到一个更好的解决方案.

小智 48

regexp_replaceUDF执行我的任务.以下是apache Wiki的定义和用法.

regexp_replace(string INITIAL_STRING, string PATTERN, string REPLACEMENT):
Run Code Online (Sandbox Code Playgroud)

这将返回替换所有子串中的字符串,INITIAL_STRING 该子串PATTERN与实例中定义的java正则表达式语法匹配REPLACEMENT,

例如:regexp_replace("foobar", "oo|ar", "")返回fb


fer*_*cs2 10

自定义SerDe可能是一种方法.或者您可以使用regex_replace进行某种调解过程:

create table tableB as 
select 
    columnA
    regexp_replace(description, '\\t', '') as description
from tableA
;
Run Code Online (Sandbox Code Playgroud)


小智 7

select translate(description,'\\t','') from myTable;
Run Code Online (Sandbox Code Playgroud)

通过用 to 字符串中的相应字符替换 from 字符串中存在的字符来翻译输入字符串。这类似于 PostgreSQL 中的 translate 函数。如果此 UDF 的任何参数为 NULL,则结果也为 NULL。(从 Hive 0.10.0 开始可用,用于字符串类型)

从 Hive 0.14.0 开始添加 Char/varchar 支持