2017-06-02 5 views
-1

J'utilise le python & hive UDF pour unpivot de données. 'python.py' dérive les données mais je veux l'exécuter sur Hive. Je ne suis pas en mesure de maîtriser les éléments contenant de l'espace et des points.ruche UDF sur des données avec des délimiteurs

Existe-t-il un bon moyen de contourner ce problème?

Ma table de départ ressemble à:

 
    store  item   flavor  
------- ----------------- ------------ 
     1 cupcake   chocolate 
     1 cake pops   red velvet 
     1 ice cream   vanilla  
     1 cookies/candies lemon  
     2 cupcake   red velvet 
     2 cake pops   vanilla  
     2 ice cream   chocolate 
     2 cookies/candies chocolate 

Je suis en utilisant le code interne pour obtenir:

 
    store cupcake  cake pops ice cream cookies/candies 
------- ------------ ------------ ----------- ----------------- 
     1 chocolate red velvet vanilla  lemon    
     2 red velvet vanilla  chocolate chocolate   

utilisant:

SELECT TRANSFORM(store, item, flavor) USING ‘python.py’ 
AS (store, cupcake, cake pops, ice cream, cookies/candies) FROM mytable; 

donne une erreur: « Erreur lors de la compilation statement: FAILED: ParseException line 3:25 entrée incompatible 'pops' en attente) près de 'cake' dans la clause de transformation "

+0

Ne sait pas ce que fait votre code python –

+0

Qualifiez les alias, par ex. \ 'gâteau pops' –

Répondre

0

Essayez d'utiliser la citation retour ou un guillemet simple.

Si votre udf a défini le nom de la colonne avec un espace, je préfère backquote. Mais, dans ce cas, je suppose que vous devez utiliser une seule citation.

SELECT TRANSFORM(store, item, flavor) USING ‘python.py’ AS (store, cupcake, 'cake pops', ice cream, cookies/candies) FROM mytable; 
+0

Merci @hiropon. Mon 'python.py' fait en fait le non pivotant mais je veux le lancer sur Hive. J'ai édité la question. – kiki