Pig не загружает данные в таблицу HCatalog - песочница HortonWorks

Я запускаю сценарий 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="&lt;p&gt;I'm sure you can also have Oracle display a query plan so you can see exactly which index is used first.&lt;/p&gt;&#xA;" 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, потому что заголовки сообщений содержат пробелы.

Заранее спасибо! Это меня поставило в тупик.


person Amru E.    schedule 25.03.2014    source источник


Ответы (1)


Я нашел проблему. Я создал таблицу HCatalog вручную и использовал все параметры по умолчанию, включая разделитель, который был установлен на ^A (/100). В моем выводе были столбцы, разделенные пробелами табуляции (\t), поэтому, когда таблица получила данные, она не нашла разделителя ^A и сохранила пустой набор данных. Я воссоздал таблицу для поиска \t, и все работало нормально.

person Amru E.    schedule 27.03.2014