在impala中转换非英文和非数字值的高效方法

问题描述:

我有一张包含超过3M记录的表格。 其中一个属性有时包括英文字母和数字(包括它们之间的空格和 - )等符号,有时还包含其他值,例如中文,俄文字母,空格,特殊字符等不同的语言。 我会保留每个属性值与英文字母和数字一样,包括它们之间的负号或合法字符。对于特殊字符和非英语(以及空格) - 我想将它们转换成相同的值,例如中文中所有相同的名称都将转换为SC1(特殊字符1),接下来的特殊字符将转换为SC2等等。最有效的方法是什么?在impala中转换非英文和非数字值的高效方法

下面是表(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   | 
.... 

一种常见的方式来实现这样的东西是写一个UDF做语言检测。如果你想开发一个,你可以求助于cld2。这是如何开发黑斑羚的example。但是,如果这些3M记录是唯一需要处理的语料库,我建议只是将它们从impala中拔出,使用脚本语言进行转换并将它们放回原处。