无法从 S3 存储桶(镶木地板文件)将数据加载到 EMR 上的猪中
Not able to load data into pig on EMR from S3 bucket (parquet file)
我想从 EMR 上的 Pig 中的 s3 存储桶中加载数据,我的源文件格式是 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
需要这方面的帮助。
失踪''
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');
或
在 ParquetLoader
之后缺少 as
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);
两件事:
您应该在 emr org.apache.parquet.pig.ParquetLoader()
上使用完整的 class 路径;不需要给它传递一个模式,parquet reader 会为你推断它。
确保您使用的 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;
我想从 EMR 上的 Pig 中的 s3 存储桶中加载数据,我的源文件格式是 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
需要这方面的帮助。
失踪''
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');
或
在 ParquetLoader
as
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);
两件事:
您应该在 emr org.apache.parquet.pig.ParquetLoader()
上使用完整的 class 路径;不需要给它传递一个模式,parquet reader 会为你推断它。
确保您使用的 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;