2017-08-10 11 views
0

ここに私の契約です。さて、私はハイブから関係を読んだ後、2つの変換の結果として関係を作成しました。事は、私がハイブに戻って分析のカップルの後に最終的な関係を保存するが、私はできないということです。私のコードでそれをはっきりと見てみましょう。私はハイブからロードし、私の結果を変換する際豚 - 複雑な関係のスキーマをハイブテーブルに保存

最初の文字列は次のとおりです。

july = LOAD 'POC.july' USING org.apache.hive.hcatalog.pig.HCatLoader ; 
july_cl = FOREACH july GENERATE GetDay(ToDate(start_date)) as day:int,start_station,duration; jul_cl_fl = FILTER july_cl BY day==31; 
july_gr = GROUP jul_cl_fl BY (day,start_station); 
july_result = FOREACH july_gr { 
      total_dura = SUM(jul_cl_fl.duration); 
      avg_dura = AVG(jul_cl_fl.duration); 
      qty_trips = COUNT(jul_cl_fl); 
      GENERATE FLATTEN(group),total_dura,avg_dura,qty_trips; 
}; 

だから、私は関係july_resultを保存しようとすると、今、私は、スキーマが変更されたことができないので、私はそれがだと仮定しますHiveと互換性がありません:

STORE july_result INTO 'poc.july_analysis' USING org.apache.hive.hcatalog.pig.HCatStorer();

最終的な関係のための特別な体系を設定しようとしても、私はそれを理解していません。

july_result = FOREACH july_gr { 
       total_dura = SUM(jul_cl_fl.duration); 
       avg_dura = AVG(jul_cl_fl.duration); 
       qty_trips = COUNT(jul_cl_fl); 
       GENERATE FLATTEN(group) as (day:int),total_dura as (total_dura:int),avg_dura as (avg_dura:int),qty_trips as (qty_trips:int); 
       }; 
+0

どのようなエラーが表示されますか?ドキュメントから、 'STORE INTO'を実行する前に結果テーブル(' poc.july_analysis')が存在する必要があります。また、なぜこれらの変換にhiveqlを使用しないのですか? –

+0

ええ、私は確かに最初にテーブルを作成しました! –

答えて

0

hortonworksコミュニティの研究の後、私はブタのグループ関係の出力形式を定義する方法についての解決策を得ました。新しいコードは次のようになります。

july_result = FOREACH july_gr { 
       total_dura = SUM(jul_cl_fl.duration); 
       avg_dura = AVG(jul_cl_fl.duration); 
       qty_trips = COUNT(jul_cl_fl); 
       GENERATE FLATTEN(group) AS (day, code_station),(int)total_dura as (total_dura:int),(float)avg_dura as (avg_dura:float),(int)qty_trips as (qty_trips:int); 
       }; 

ありがとうございます。

関連する問題