2013-08-06 94 views
16

我在一個可能包含製表符'\t'的配置單元列表中有一個字符串列description,但是這些字符在將配置單元連接到外部應用程序時混淆了某些視圖。 有沒有一種簡單的方法來擺脫該列中的所有制表符?我可以運行一個簡單的Python程序來做到這一點,但我想找到一個更好的解決方案。如何替換蜂巢中的字符?

回答

32

regexp_replace UDF執行我的任務。以下是apache Wiki的定義和用法。

regexp_replace(string INITIAL_STRING, string PATTERN, string REPLACEMENT): 

這將返回從INITIAL_STRING 匹配PATTERNREPLACEMENT實例定義的Java正則表達式語法替換所有子生成字符串,

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

0

目前沒有OOTB功能允許這樣做。實現這一目標的一種方法可能是編寫一個自定義的InputFormat和/或SerDe來爲您做這件事。您可能會對JIRA有用:https://issues.apache.org/jira/browse/HIVE-3751。 (不直接關係到你的問題)。

7

Custom SerDe可能是一種方法。或者你可以使用某種形式的調解程序與regex_replace:

create table tableB as 
select 
    columnA 
    regexp_replace(description, '\\t', '') as description 
from tableA 
; 
+1

這應該是REGEXP_REPLACE不regex_replace,似乎到目前爲止是工作 – user1745713