Apache pig 在Pig中加载嵌套拼花地板文件?

Apache pig 在Pig中加载嵌套拼花地板文件?,apache-pig,parquet,Apache Pig,Parquet,拼花地板文件是从Avro文件创建的。现在我需要在Pig中加载拼花地板文件。下面是我从parquet tools schema命令获得的模式 message Logs { optional group SUPER1 { optional group FIELD1 (LIST) { repeated int32 array; } optional group FIELD2 (LIST) { repeated int32 array; }

拼花地板文件是从Avro文件创建的。现在我需要在Pig中加载拼花地板文件。下面是我从
parquet tools schema
命令获得的模式

  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);
 }
现在我无法理解加载此文件的等效pig模式。我正在使用
parquet.pig.ParquetLoader
。我做了以下转换:-

  • 数组将作为
    chararray
  • 如何加载嵌套数据?bid_info.creative_id不起作用:
    输入不匹配。'
  • 我正在加载所有字段,无论是否可选。可选值应在Pig中加载为null
  • 我还尝试在没有任何显式模式的情况下使用简单加载,然后出现以下错误:

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

    正确的访问方法是使用
    操作符,如问题的第2点所示。因为我使用的是
    parquet.pig.ParquetLoader()
    ,所以我无法使用它。Parquet for pig现在已被Apache采用,并获得了最大的支持,因此我使用了来自org.Apache.Parquet.pig.ParquetLoader()的JAR作为解析器。以下代码有效:-

    log_parquet = LOAD 'logs' USING org.apache.parquet.pig.ParquetLoader();
    
    req_拼花地板将是一个包含5个字段的元组(Super1-5)。字段Super1,2,3本身就是元组
    Super1.Field1
    Super1.Field2
    本身就是一个元组包,数组中的每个元素都是元组

    这很复杂,但对我来说很有效