Я не могу прочитать простой тестовый файл на S3 из интерактивного потока заданий свиньи (hadoop, сокращение эластичной карты), и я не уверен, почему.
У меня два ведра S3. Назовем их unmounted_bucket
, и mounted_bucket
. Обе эти корзины изначально были созданы через веб-интерфейс AWS (если это имеет значение).
У меня работает экземпляр Linux EC2, который смонтирован под /mnt/s3drive
.
У меня есть тестовый файл под названием threecolumntest.txt
который содержит следующие тестовые данные (фактически разделены табуляцией):
col1 col2 col3
one two three
four five six
seven eight nine
У меня этот файл есть в обоих unmounted_bucket
И в mounted_bucket
. Я загрузил его в каждую корзину через веб-интерфейс AWS S3 (консоль управления).
Из интерактивного потока заданий (я использую 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.
Я проверил через веб-интерфейс, и у каждой корзины одинаковые разрешения (насколько я могу судить). Это определенно вне моей рулевой рубки, поэтому я не уверен, что могло быть причиной этого, и что мне следует проверить дальше. Мне интересно, связано ли это с монтированием одного контейнера (и если да, то почему?), Поскольку он использует один и тот же файл, и я загрузил файл в оба сегмента с помощью веб-интерфейса AWS. Монтажный элемент, кажется, на этом этапе отличается. Может, мне еще чего-то не хватает?
Попробуйте s3n: // вместо s3: //. s3n - это собственная файловая система s3, s3 - это блочная файловая система (например, hdfs, но не позволяет вам просто читать файлы, просто хранящиеся в S3, кем-либо, кроме протокола s3 Hadoop).