无法从s3 bucket(Parquet文件)将数据加载到emr上的pig

np8igboo  于 2021-06-01  发布在  Hadoop
关注(0)|答案(2)|浏览(298)

我想在emr上加载pig中s3 bucket的数据,源文件格式是parquet:
下面是我使用过的命令:

A = LOAD 's3://test-1/icted/emp_db/emp_tb' 
USING parquet.pig.ParquetLoader(header__change_seq:chararray,header__change_oper:chararray,header__change_mask:chararray,header__stream_position:chararray,header__operation:chararray,header__transaction_id:chararray,header__timestamp:chararray,policylangaccessind_afi:chararray,loadcommandid:double,previousgroupid:double,enddate:chararray,assignedbyuserid:double,dstcd_afi:chararray);

我无法加载以下错误数据:

ERROR pig.PigServer: exception during parsing: Error during parsing. <file test.pig, line 20, column 2>  mismatched input 'header__change_seq' expecting RIGHT_PAREN

我需要帮助。

sxissh06

sxissh061#

两件事:
你应该在emr上使用完整的类路径 org.apache.parquet.pig.ParquetLoader() ; 不需要传递一个模式,Parquet读取器将为您推断它。
确保您使用的pig代码版本与parquet文件的版本兼容(parquet工具可用于查找所用parquet的版本)
试着用最新的版本https://mvnrepository.com/artifact/org.apache.parquet/parquet-pig-bundle/1.10.0

REGISTER parquet-pig-bundle-1.10.0.jar;
x0fgdtte

x0fgdtte2#

失踪 '' ```
A = LOAD 's3://test-1/icted/emp_db/emp_tb' USING parquet.pig.ParquetLoader('header__change_seq:chararray,header__change_oper:chararray,header__change_mask:chararray,header__stream_position:chararray,header__operation:chararray,header__transaction_id:chararray,header__timestamp:chararray,policylangaccessind_afi:chararray,loadcommandid:double,previousgroupid:double,enddate:chararray,assignedbyuserid:double,dstcd_afi:chararray');

或
失踪 `as` 之后 `ParquetLoader` ```
A = LOAD 's3://test-1/icted/emp_db/emp_tb' USING parquet.pig.ParquetLoader AS (header__change_seq:chararray,header__change_oper:chararray,header__change_mask:chararray,header__stream_position:chararray,header__operation:chararray,header__transaction_id:chararray,header__timestamp:chararray,policylangaccessind_afi:chararray,loadcommandid:double,previousgroupid:double,enddate:chararray,assignedbyuserid:double,dstcd_afi:chararray);

相关问题