Apache pig Pig可以用于从HDFS中带有分区的拼花地板表加载,并将分区添加为列吗?

Apache pig Pig可以用于从HDFS中带有分区的拼花地板表加载,并将分区添加为列吗?,apache-pig,hdfs,database-partitioning,parquet,Apache Pig,Hdfs,Database Partitioning,Parquet,我有一张黑斑羚分隔的桌子,作为拼花地板存放。我可以使用Pig从这个表中加载数据,并将分区添加为列吗 拼花地板桌的定义如下: create table test.test_pig ( name: chararray, id bigint ) partitioned by (gender chararray, age int) stored as parquet; 猪的脚本是这样的: A = LOAD '/test/test_pig' USING parquet.pig.Parqu

我有一张黑斑羚分隔的桌子,作为拼花地板存放。我可以使用Pig从这个表中加载数据,并将分区添加为列吗

拼花地板桌的定义如下:

create table test.test_pig (
    name: chararray,
    id bigint
)
partitioned by (gender chararray, age int)
stored as parquet;
猪的脚本是这样的:

A = LOAD '/test/test_pig' USING parquet.pig.ParquetLoader AS (name: bytearray, id: long);
但是,
转储A
时,
性别
年龄
丢失。仅显示
name
id

我试过:

A = LOAD '/test/test_pig' USING parquet.pig.ParquetLoader AS (name: bytearray, id: long, gender: chararray, age: int);
但我会收到如下错误:

错误org.apache.pig.tools.grunt.grunt-错误1031:不兼容 schema:left是“name:bytearray,id:long,gender:bytearray,age:int”, 右边是“name:bytearray,id:long”


希望能在这里得到一些建议。谢谢大家!

您应该使用org.apache.hcatalog.pig.HCatLoader库进行测试

通常,Pig支持从分区表读取/写入分区表

阅读:

此load语句将加载指定表的所有分区。 /*myscript.pig*/ A=使用org.apache.hcatalog.pig.HCatLoader()加载“tablename”; ... ... 如果只需要指定表的某些分区,请在数据流中紧跟load语句之后包含partition filter语句。(但是,在脚本中,filter语句可能不会紧跟在load语句之后。)filter语句可以包括分区列和非分区列的条件

写入

如有必要(如果未指定键值),HCatOutputFormat将在动态分区使用时触发,并将检查数据以适当地将其写出

然而,我认为这还没有用拼花文件进行适当的测试(至少Cloudera的人没有这样做):

拼花地板尚未使用HCatalog进行测试。没有HCatalog,Pig无法正确读取动态分区的表;所有文件格式都是如此