2015-01-30 2 views
4

Мне нравится concat строка для всех данных в поле?конкатенировать строку в поле в свине

пример набор данных mydata содержит следующее поле (id, name, email) Мне нравится добавлять префикс строкового теста ко всем данным в поле имени.

Я попытался

a = load 'mydata.csv' as (id, name, email); 
b = foreach a generate id, concat('test', chararray(name)); 

я получаю пустые результаты по этому

какие мысли?

ответ

4
  1. В свиноводстве concat ключевое слово должно быть в Capital letters не маленькими буквами. Вам нужно изменить ключевое слово concat на CONCAT.
  2. Загружается CSV-файл с разделителем по умолчанию (вкладка). Вы уверены, что ваш файл csv является отдельным разделителем вкладок для каждого поля? В противном случае вы получите странный результат. Если ваш файл csv разделен запятыми, то укажите явный разделитель как запятую в PigStorage.
  3. Всегда безопасно указывать схему во время загрузки, это позволит избежать ненужного явного приведения типов. Пример

Пример:

input.csv

1,aaa,[email protected] 
2,bbb,[email protected] 
3,ccc,[email protected] 

PigScript:

a = load 'input.csv' using PigStorage(',') as (id:int, name:chararray, email:chararray); 
b = foreach a generate id, CONCAT('test', name); 
DUMP b; 

Выход:

(1,testaaa) 
(2,testbbb) 
(3,testccc) 

Incase файл CSV уже вкладка отделенный разделитель затем исправить только CONCAT вопрос.

+0

Спасибо Shiva, что ваше решение сработало, и ошибка, которую я сделал, я не использовал явный разделитель как запятую в PigStorage. – suzil