鉴于这个问题被标记为emr,我将假设您将aws emr用于hadoop集群。如果是这种情况,则无需进一步设置即可访问s3。emr服务使用启动集群的用户的aws凭据或使用请求的示例角色自动配置hadoop fs(pigstorage将利用它)。只需提供s3位置,pig将根据用户/角色的策略和权限与s3进行接口。 A = LOAD 's3://<yourbucket>/<path>/' using PigStorage('\t') as (id:int, field2:chararray, field3:chararray);
我不是很明确,并给出了一个我的用例的例子,对不起。我需要它,因为我需要使用两个不同的aws访问密钥,并使用类似s3n的东西://access:secret@bucket did 无法解决。我通过改变pigstorage函数,将结果存储在hdfs中,并在cleanupWithSuccess方法上调用一个方法,用凭据将hdfs文件上传到s3。通过这种方式,我可以在pigstoragefunction用于存储时将凭据传递给它,当然,我还更改了pigstoragefunction的构造函数以接收这些参数。
2条答案
按热度按时间0vvn1miw1#
鉴于这个问题被标记为emr,我将假设您将aws emr用于hadoop集群。如果是这种情况,则无需进一步设置即可访问s3。emr服务使用启动集群的用户的aws凭据或使用请求的示例角色自动配置hadoop fs(pigstorage将利用它)。只需提供s3位置,pig将根据用户/角色的策略和权限与s3进行接口。
A = LOAD 's3://<yourbucket>/<path>/' using PigStorage('\t') as (id:int, field2:chararray, field3:chararray);
kcrjzv8t2#
我不是很明确,并给出了一个我的用例的例子,对不起。我需要它,因为我需要使用两个不同的aws访问密钥,并使用类似s3n的东西://access:secret@bucket did 无法解决。我通过改变pigstorage函数,将结果存储在hdfs中,并在cleanupWithSuccess方法上调用一个方法,用凭据将hdfs文件上传到s3。通过这种方式,我可以在pigstoragefunction用于存储时将凭据传递给它,当然,我还更改了pigstoragefunction的构造函数以接收这些参数。