2017-07-11 5 views
0

Je suis coincé sur un problème et j'avais vraiment besoin d'aide.Liste de chaînes de caractères entre d'autres enregistrements loading error Hive

Après mes données définies

"counter","qid","i","qs","qt","tags","qvc","qac","aid","j","as","at" 
"1",563355,62701,0,1235000081,"php,error,gd,image-processing",220,2,563372,67183,2,1235000501 
"2",563356,15842,10,1235000140,"lisp,scheme,clojure",1047,16,563358,15842,3,1235000177 

Toutes les colonnes sont séparées par « » et la sixième colonne est balises, qui est une liste de 2 à 5 balises également séparés par « ». J'ai essayé de créer une table avec des balises comme une chaîne et aussi comme un tableau de chaînes et les deux me donne la première valeur de la liste des balises (dans ce cas php et lisp) et les colonnes restantes étaient nulles.

"1" 563355 62701 0 1235000081 "php NULL NULL NULL 220 2 563372 
"2" 563356 15842 10 1235000140 "lisp NULL NULL NULL 1047 16 563358 

SORTIE:

"1" 563355 62701 0 1235000081 "php,error,gd,image-processing" 220 2 563372 
"2" 563356 15842 10 1235000140 "lisp,scheme,clojure" 1047 16 563358 

je l'ai fait quelques recherches et trouvé que je peux écrire un modèle de REGEXSERDE pour lire les données et je suis nouveau à cela et je ne sais pas comment écrire modèle regex. Y at-il un autre moyen à côté de regex. Si non, quelqu'un peut-il m'aider à écrire un motif regex?

Merci d'avance.

Répondre

0

meilleure façon de faire, ce sera le changement « » delimiter avec quelque chose d'autre

Autre approche sera d'utiliser Open csv serde qui vous aidera à faire ce

+0

changer le délimiteur ne serait pas une tâche facile car ma table compte près d'un demi-million de disques. – Dereck

+0

utiliser serde puis pour prendre des données qouted en entrée – VIPER

+0

utiliser serde puis pour prendre des données qouted en entrée – VIPER