我想在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
我需要帮助。
2条答案
按热度按时间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
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');