Я запускаю сценарий Pig на виртуальной машине HortonWorks с целью извлечения определенных частей моего набора данных XML и загрузки этих частей в столбцы таблицы HCatalog. На моем локальном компьютере я запускаю свой сценарий Pig для XML-файла и получаю выходной файл со всеми извлеченными частями. Однако по какой-то причине, когда я запускаю тот же сценарий в виртуальной машине HortonWorks, кажется, что сценарий выполняется успешно, но таблица HCatalog все еще пуста.
Вот мой локальный сценарий:
REGISTER piggybank.jar
items = LOAD 'data1.xml' USING org.apache.pig.piggybank.storage.XMLLoader('row') AS (row:chararray);
data = FOREACH items GENERATE
REGEX_EXTRACT(row, 'Id="([^"]*)"', 1) AS id:int,
REGEX_EXTRACT(row, 'CreationDate="([^"]*)"', 1) AS creationdate:chararray,
REGEX_EXTRACT(row, 'Score="([^"]*)"', 1) AS score:int,
REGEX_EXTRACT(row, 'Title="([^"]*)"', 1) AS title:chararray;
STORE data INTO '/tmp/postsETLResults' USING PigStorage();
Тот, который я использую в HortonWorks:
REGISTER piggybank.jar
items = LOAD 'data1.xml' USING org.apache.pig.piggybank.storage.XMLLoader('row') AS (row:chararray);
data = FOREACH items GENERATE
REGEX_EXTRACT(row, 'Id="([^"]*)"', 1) AS id:int,
REGEX_EXTRACT(row, 'CreationDate="([^"]*)"', 1) AS creationdate:chararray,
REGEX_EXTRACT(row, 'Score="([^"]*)"', 1) AS score:int,
REGEX_EXTRACT(row, 'Title="([^"]*)"', 1) AS title:chararray;
STORE data into 'posts_table_1' USING org.apache.hcatalog.pig.HCatStorer();
validate = LOAD 'default.posts_table_1' USING org.apache.hcatalog.pig.HCatLoader();
Пример строки XML (из общедоступного набора данных StackOverflow):
<row Id="149115" PostTypeId="2" ParentId="149078" CreationDate="2008-09-29T15:16:23.870" Score="1" Body="<p>I'm sure you can also have Oracle display a query plan so you can see exactly which index is used first.</p>
" OwnerDisplayName="user16324" LastActivityDate="2008-09-29T15:16:23.870" CommentCount="1" />
Я создал таблицу HCatalog вручную, и все правильные поля существуют и имеют правильный тип.
Странно то, что если я делаю dump data
в Pig, я ничего не получаю. Если я illustrate data
, я вижу в журнале фрагменты своих данных, за которыми следуют большие пустые области, за которыми следуют другие данные и так далее.
Что мне здесь не хватает? Я бы очень хотел взять этот беспорядочный XML-файл и получить аккуратную таблицу в HCatalog. Опять же, я получаю результаты, которые ищу, при запуске локального сценария на моем компьютере, но когда я запускаю вторую версию, предназначенную для сохранения вывода в таблице posts_table_1
HCatalog, я получаю сообщение об успешном выполнении, но пустую таблицу.
В качестве альтернативы, если я могу просто получить вывод на моем локальном компьютере в виде файла с разделителями-запятыми, я могу использовать этот файл и заставить HCatalog автоматически загружать данные в интерфейс Hue. На данный момент вывод разделен пробелами, что проблематично в Hue, потому что заголовки сообщений содержат пробелы.
Заранее спасибо! Это меня поставило в тупик.