Я создал внешнюю таблицу Hive (1.0 на EMR), которая хранится в S3. Я могу успешно использовать Hive для вставки записей в эту таблицу, запросить их обратно и вытащить файлы непосредственно из ведра S3 в качестве проверки. Все идет нормально.Свинья пишут на S3 через HCatStorer() «успешно» с 0-байтами
Я бы хотел использовать Pig (v0.14, также EMR) для чтения и записи в эту логическую таблицу. Загрузка с помощью HCatLoader() работает нормально, а dump/explain подтверждают, что мои данные и схема соответствуют ожиданиям.
Когда я пытаюсь писать с HCatStorer(), однако у меня проблемы. Свинья сообщают об успехе, с N записями, , но 0 байт, написано. Я не вижу ничего, что кажется релевантным или указывающим на проблему в журнале, и никакие данные не записываются в таблицу/ведро.
a = load 'myfile' as (foo: int, bar: chararray); // Just assume that this works.
dump a; // Records are there
describe a; // Correct schema, as specified above
store a into 'mytable' using org.apache.hive.hcatalog.pig.HCatStorer();
Выходной сигнал (который, опять же, не содержит никаких других признаков проблем, которые я вижу) завершается:
Success!
...
Input(s):
Successfully read 2 records (24235 bytes) from: "myfile"
Output(s):
Successfully stored 2 records in: "mytable"
Counters:
Total records written : 2
Total bytes written : 0
Spillable Memory Manager spill count : 0
Total bags proactively spilled: 0
Total records proactively spilled: 0
отметить:
- Это работает в той же среде, если расположение таблицы находится в HDFS вместо S3 - как для внешних, так и для внутренних таблиц, а также из Hive или Pig.
- Я могу успешно сохранить непосредственно на S3, например.
store a into 's3n://mybucket/output' using PigStorage(',');
- Вставка через оболочку Hive в тот же запрос работает нормально.
Таким образом, это представляет собой проблему с взаимодействием Pig/HCatalog/S3 в виде стека; любые два из них вместе работают нормально.
Учитывая, что я не вижу ничего полезного в журнале свиней, что еще я должен отследить, чтобы отладить это? Существуют ли какие-либо конкретные параметры конфигурации для любой из этих технологий, на которые я должен смотреть?
эй ...! Вы упомянули, что не можете хранить данные в таблице hive, даже если они говорят, что данные «успешно сохранены», вы можете проверить HDFS и найти путь к «mytable» и посмотреть, имеются ли какие-либо данные? – Pratik
@Pratik В случае ошибки «mytable» живет в S3, а не HDFS ... вот в чем проблема! Когда я делаю версию этого, где «mytable» находится в HDFS, он отлично работает, и данные появляются там, как ожидалось. – Greg
@Greg вы когда-нибудь находили решение, отличное от постановки в emr? Мне нужно использовать свиньи для загрузки таблицы улья на s3.думая об использовании обходного пути для простоты посадки данных в папке и использования лямбда-функции для добавления раздела в куст, но предпочел бы все решение свиньи – TaylerJones