2017-01-16 2 views
0

Я пытаюсь создать следующее ... Вход 396124436476092416 «Подумайте о жизни, которую вы живете, но не думайте так сильно, что это больно. Жизнь - это действительно подарок, но на то же самое, что это проклятие «Obey_Jony09 396124440112951296„00:00 #MAW“, WesleyBittonКак игнорировать «,» в полях данных

A = LOAD '/user/root/data/tweets.csv' USING PigStorage(',') as (users:chararray, tweets:chararray); 
B = FILTER A by users == '396124436476092416'; 

выход усеченного (396124436476092416,» Подумайте о жизни вы Livin, но не думаю, что так сильно болит Life - действительно подарок)

Выход за исключением (396) 124436476092416: «Подумайте о жизни, которую вы живете, но не думайте так сильно, что это больно. Жизнь - это действительно подарок, но в то же время это проклятие»)

Я не хочу читать строку как строку.

ответ

1

Вы можете использовать CSVLoader для загрузки данных

однако, если вы не хотите делать, что здесь есть работа вокруг в самой Apache Pig для этого:

--load ваши данные

A = LOAD 'your/path/users.csv' USING TextLoader() AS (unparsed:chararray); 

--replace вашей " строку с | так, чтобы отделить ваши твиты

B = FOREACH A GENERATE REPLACE(unparsed, '\\"', '|') AS parsed:chararray; 

--store ваши временные проанализированных данных в ваше местоположение

STORE B INTO 'your/path/parsed_users.csv' USING PigStorage('|'); 

--load ваши разобранные данные

C = LOAD 'your/path/parsed_users.csv' USING PigStorage('|') AS (users:chararray, tweets:chararray); 

--dump ваши данные, как всегда это будет по-прежнему содержат одну лишнюю запятую (,), но вы можете заменить его, используя функцию замены, которую вы получаете.

DUMP C; 
+0

Спасибо за вашу идею, изменение "" в "|" работает до фильтрации. Двигатель не имеет дополнительной ценности для проверки данных для этой функции проверки как традиционных систем. –

0

То вписывается в формат CSV standardization, так что вам нужно просто использовать CSVLoader которые

поддерживает двойные кавычки поля, которые содержат запятые и другие двойные кавычки экранируются обратным слэшем.

Это, как использовать его:

register file:/home/hadoop/lib/pig/piggybank.jar 
DEFINE CSVLoader org.apache.pig.piggybank.storage.CSVLoader(); 
A = LOAD '/user/root/data/tweets.csv' USING CSVLoader AS (users:chararray, tweets:chararray); 
B = FILTER A by users == '396124436476092416'; 
+0

Спасибо, что это тоже работает –

Смежные вопросы