在impala中转换非英语和非数字值的有效方法

时间:2017-02-25 17:36:47

标签: regex special-characters impala

我有一张包含超过3M记录的表格。 其中一个属性有时包括英文字母和数字(包括它们之间的空格和像 - 这样的符号),有时包括其他值,如中文,俄文字母,空格,特殊字符等不同语言。 我会保留每个属性值,如果是英文字母和数字,包括它们之间的减号或合法字符。对于特殊字符和非英语(以及空格) - 我想将它们转换成相同的值,如中文中的所有相同名称将转换为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 个答案:

答案 0 :(得分:1)

实现此类功能的常用方法是编写执行语言检测的UDF。如果你想开发一个,你可以诉诸cld2。这是关于如何开发impala udf的example

但是,如果这些3M记录是您需要处理的唯一语料库,我建议您将它们从impala中删除,使用脚本语言对其进行转换并将它们放回去。