2017-06-02 13 views
-1

私はpython &ハイブUDFを使用してデータをピボット解除しています。 'python.py'はデータをアンピボットしますが、これをHiveで実行します。私はスペースとピリオドを含むアイテムを扱うことができません。デリミタ付きハイブUDF

これを回避する良い方法はありますか?

私の出発表は次のようになります。

 
    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 

私が取得するために、内のコードを使用しています:

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

を使用して:

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

をエラーを与える:「エラーをコンパイル中ステートメント:FAILED:ParseExceptionラインが3時25分に一致しない入力 'pops' expecting)変換句 "cake"の近くに "

+0

Pythonコードの内容が不明確 –

+0

エイリアスを修飾します。 \ 'cake pops' –

答えて

0

逆引用符または一重引用符を使用してください。

あなたのudfがスペースでカラム名を定義した場合、私はバッククォートを好むでしょう。しかし、この場合は一重引用符を使用する必要があります。

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

ありがとう@hiropon。私の 'python.py'は実際にアンピボットを行いますが、これをHiveで実行したいと思います。私はその質問を編集した。 – kiki

関連する問題