description
タブ文字を含む可能性のあるハイブテーブルに文字列列があります'\t'
が、これらの文字は、ハイブを外部アプリケーションに接続するときに一部のビューを台無しにします。その列のすべてのタブ文字を取り除く簡単な方法はありますか? 簡単なpythonプログラムを実行してそれを行うことができましたが、これに対するより良い解決策を見つけたいと思っています.
5 に答える
regexp_replace
UDF が私のタスクを実行します。以下は、apache Wiki からの定義と使用法です。
regexp_replace(string INITIAL_STRING, string PATTERN, string REPLACEMENT):
INITIAL_STRING
これは、で定義された Java 正規表現構文に一致する のすべての部分文字列をPATTERN
、 のインスタンスで置き換えた結果の文字列を返しますREPLACEMENT
。
例:regexp_replace("foobar", "oo|ar", "")
返品fb
カスタムSerDeはそれを行う方法かもしれません。または、regex_replace である種の仲介プロセスを使用することもできます。
create table tableB as
select
columnA
regexp_replace(description, '\\t', '') as description
from tableA
;
translate() を使用することもできます。3 番目の引数が短すぎる場合、2 番目の引数から対応する文字が削除されます。regexp_replace() とは異なり、特殊文字について心配する必要はありません。 ソースコード。
現時点では、これを可能にする OOTB 機能はありません。これを実現する 1 つの方法は、これを行うカスタム InputFormat および/または SerDe を作成することです。この JIRA が役に立つかもしれません: https://issues.apache.org/jira/browse/HIVE-3751。(ただし、問題とは直接関係ありません)。