Apache pig Pig可以用于从HDFS中带有分区的拼花地板表加载,并将分区添加为列吗?
我有一张黑斑羚分隔的桌子,作为拼花地板存放。我可以使用Pig从这个表中加载数据,并将分区添加为列吗 拼花地板桌的定义如下: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
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无法正确读取动态分区的表;所有文件格式都是如此