Функция Pig SUBSTRING не создает столбец

Я использую сложный оператор foreach для генерации своих данных. Это пример строки:

(2013-07-01)

Ниже мой код:

    joined_data = foreach old_data {

       date = old_data::date;
       month = SUBSTRING(date, 5, 7);

generate date, month;
};

Когда я продолжаю использовать таблицу, я получаю следующую ошибку:

<file script.pig, line 24, column 66> Invalid field projection. Projected field [month] does not exist in schema: old_data::date:chararray,:chararray.

Почему у месяца нет названия? Я четко назвал его.

Когда я пишу:

   joined_data = foreach data {

       date = old_data::date;
       month = SUBSTRING(date, 5, 7);

  generate date, $1;
  };

Код никогда не завершает работу (он не может завершить стадию сокращения).

Любая идея, почему это происходит и как я могу убедиться, что Pig улавливает имя, которое я дал столбцу месяца?

Спасибо.


person Michal    schedule 10.07.2014    source источник
comment
Я нашел глупый обходной путь: сгенерировать дату, месяц как месяц;   -  person Michal    schedule 11.07.2014
comment
Это не глупый обходной путь, назначение его месяцу ничего не говорит свинье о схеме.   -  person bridiver    schedule 12.07.2014


Ответы (1)


В глубине души вы можете принудительно маркировать месяц AS, но это не объясняет, почему 1 доллар не работает: S

Я бы порекомендовал вам использовать EXTRACT с соответствующим регулярным выражением и попробовать DESCRIBE joined_data; и DESCRIBE old_data;, чтобы увидеть процесс маркировки :)

person Samoht-Sann    schedule 14.07.2014