2016-03-28 5 views
0

寄木細工のファイルは、Avroファイルから作成されます。今、私はPegにParquetファイルをロードする必要があります。以下は私がparquet-tools schemaコマンドから得たスキーマです。ネストされた寄木細工のファイルをPigにロードしますか?

message Logs { 
    optional group SUPER1 { 
    optional group FIELD1 (LIST) { 
     repeated int32 array; 
    } 
    optional group FIELD2 (LIST) { 
     repeated int32 array; 
    } 
    } 
    optional group SUPER2 { 
    optional int32 FIELD1; 
    optional binary FIELD2 (UTF8); 
    optional double FIELD3; 
    optional int32 FIELD4; 
    optional double FIELD5; 
    optional binary FIELD6 (UTF8); 
    } 
    optional group SUPER3 { 
    required int32 FIELD1; 
    required int32 FIELD2; 
    optional binary FIELD3 (UTF8); 
    optional binary FIELD4 (UTF8); 
    } 
    required binary SUPER4 (UTF8); 
    optional binary SUPER5 (UTF8); 
} 

ここでは、このファイルを読み込むための同等のブタのスキーマを理解できません。私はparquet.pig.ParquetLoaderを使用しています。

  1. 配列のネストされたデータをロードする方法chararray
  2. としてロードされます - :私は、次の変換をしましたか? bid_info.creative_idが機能していません:mismatched input '.' expecting RIGHT_PAREN
  3. オプションの有無にかかわらず、すべてのフィールドが読み込まれています。オプションの値はPigにnullとしてロードする必要があります。

Iはまた、私はこのエラーを得た明示的なスキーマなく、簡単なローディングを使用してみました:

Failed to parse: Invalid list type optional group FIELD1 (LIST) { 
    repeated int32 array; 
} 

答えて

0

アクセスするための正しい方法は、ポイント2の質問の中で示されたように.演算子を使用することです。私がparquet.pig.ParquetLoader()を使っていたので、私からはうまくいかなかった。豚のための寄木張りは今Apacheに採用されており、最大のサポートを持っているので、私は mavenからの瓶を使い、パーサーとしてorg.apache.parquet.pig.ParquetLoader()を使いました。次のコードが実行されました: -

log_parquet = LOAD 'logs' USING org.apache.parquet.pig.ParquetLoader(); 

req_parquetは5つのフィールド(Super1-5)を含むタプルになります。フィールドSuper1,2,3自体がタプルです。 Super1.Field1Super1.Field2はタプルの袋で、配列の各要素はタプルです。

これはかなり複雑ですが、私のために働いています。

関連する問題