我有一张table,里面有三百多万张唱片。其中一个属性有时包括英文字母和数字(包括它们之间的空格和符号,如-),有时还包括其他值,如中文、俄语字母、空格、,特殊字符等,我会保持每个属性值的情况下,英语字母和数字,包括他们之间的减号或合法字符。对于特殊字符和非英语字符(以及空格)-我想把它们转换成相同的值,例如所有相同的中文名称将被转换成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条答案
按热度按时间axzmvihb1#
实现这一点的一种常见方法是编写一个udf来进行语言检测。如果你想开发一个,你可以求助于cld2。下面是一个如何开发 Impala 自定义项的示例。
然而,如果这3百万条记录是你需要处理的唯一语料库,我建议你把它们从 Impala 中提取出来,用脚本语言转换它们,然后放回去。