2017-02-25 1 views
1

J'ai une table qui contient plus de 3M enregistrements. Un des attributs inclut parfois des lettres et des chiffres anglais (y compris des espaces entre eux et des signes comme -) et inclut parfois d'autres valeurs telles que des langues chinoises, russes, des espaces, des caractères spéciaux, etc la valeur d'attribut telle qu'elle est dans le cas de lettres et de chiffres anglais, y compris des caractères moins ou légitimes entre eux. Pour les caractères spéciaux et non anglais (ainsi que l'espace) - je voudrais les transférer dans la même valeur que tous les mêmes noms en chinois seront transformés en SC1 (caractères spéciaux 1) les caractères spéciaux suivants seront transformés en SC2 etc. Quelle est la manière la plus efficace de le faire?Manière efficace de transformer des valeurs non anglaises et non numériques en impala

Voici un exemple pour le tableau (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   | 
.... 

Répondre

1

Une façon courante de réaliser une telle chose est d'écrire une détection de la langue faisant UDF. Vous pouvez recourir à cld2 au cas où vous aimeriez en développer un. Voici un example sur la façon de développer une impala udf.

Cependant, si ces enregistrements 3M sont le seul corpus que vous devez traiter, je suggérerais simplement de les sortir de l'impala, en les transformant en utilisant des langages de script et en les remettant en place.