无法从交互式 pig 作业流读取 S3 文件

无法从交互式 pig 作业流读取 S3 文件

我无法从交互式 pig 作业流(hadoop、elastic map Reduce)读取 S3 上的简单测试文件,但我不知道原因。

我有两个 S3 存储桶。我们将它们称为unmounted_bucket、 和mounted_bucket。这两个存储桶最初都是通过 AWS Web 界面创建的(如果重要的话)。

我有一个正在运行的 EC2 Linux 实例,其下安装了 mounted_bucket /mnt/s3drive

我有一个名为的测试文件threecolumntest.txt,其中包含以下测试数据(实际上是制表符分隔的):

col1 col2 col3
one  two  three
four five six
seven eight nine

unmounted_bucket我在和中都有这个文件mounted_bucket。我通过AWS S3 Web界面(管理控制台)将其上传到每个存储桶。

从交互式工作流程(我正在使用PuTTY),我可以毫无问题地运行以下命令:

A = load 's3://unmounted_bucket/threecolumntest.txt' using PigStorage() as (c1: chararray, c2: chararray, c3: chararray);

illustrate A

输出符合预期。

但是,如果我运行相同的命令,但指向另一个存储桶,则会出现错误。

A = load 's3://mounted_bucket/threecolumntest.txt' using PigStorage() as (c1: chararray, c2: chararray, c3: chararray);

illustrate A

[main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 2997: Encountered IOException. Exception : Internal error creating job configuration.

我通过 Web 界面检查,每个存储桶都具有相同的权限(据我所知)。这绝对超出了我的能力范围,所以我不确定是什么原因造成的,或者我接下来应该检查什么。我想知道这是否与安装一个存储桶有关(如果是,为什么?),因为这使用的是同一个文件,我使用 AWS Web UI 将文件上传到两个存储桶。此时安装部分似乎是区别所在。也许我遗漏了其他东西?

答案1

尝试使用 s3n:// 而不是 s3:// 。s3n 是 s3 本机文件系统,s3 是块文件系统(类似于 hdfs,但不允许您简单地读取除 Hadoop 的 s3 协议之外的任何人简单地存储在 S3 中的文件)。

相关内容