2017-02-25 10 views
1

私は3M以上のレコードを含むテーブルを持っています。 属性の1つに英語の文字と数字が含まれていることがあります( - との間のスペースを含む)。時には中国語、ロシア語の文字、スペース、特殊文字などの異なる言語などの他の値も含まれます。 属性値は英字の場合と同様であり、その間にマイナスまたは正当な文字を含む数字である。特殊文字と非英語(スペースだけでなく) - 私はそれらを同じ値に転送したいと思います。中国語のすべての同じ名前がSC1(特殊文字1)に変換され、次の特殊文字がSC2に変換されますそれを行う最も効率的な方法は何ですか?ここで効率的なインパラの非英語と非数値の変換方法

は表のための一例(TB1)である。そのようなことを達成するための

+-----+-----------+-------------+--------- 
| ID | Att1  | New Att1 | Some more attributes... 
+-----+-----------+-------------+--------- 
| 1 | ABC-1  | ABC-1  | 
| 2 | 中国  | SC1   | 
| 3 | кириллица | SC2   | 
| 4 | 中国  | SC1   | 
| 5 | кириллица | SC2   | 
| 6 | BCD EFH | BCD EFH  | 
| 7 | (Space) | SC3   | 
.... 

答えて

1

一般的な方法は、言語検出を行うUDFを書くことです。開発したい場合は、cld2にお任せください。 impala udfの開発方法はexampleです。

しかし、それらの3Mレコードが処理する必要がある唯一のコーパスであれば、それらをインパラから引き出し、スクリプト言語を使用して変換して戻すことをお勧めします。