2017-02-05 4 views
2

У меня есть данные в PIG с именами столбцов, какInvalid скалярная проекция в PIG

ключевое слово, CAMPAIGN_ID, дата, время, display_site, was_clicked, КОП, страна, размещение

То, что я пытаюсь чтобы найти ключевые слова с высоким CTR.

Итак, я пытаюсь понять, почему следующий код дает мне Invalid ошибку Скалярное проекционный

grouped = GROUP data BY keyword; 
    by_keyword = FOREACH grouped 
{ 
    clicked = FILTER data BY was_clicked == 1; 
    total = COUNT(data.keyword); 
    GENERATE group, ((double)COUNT(clicked)/total) AS ctr; 
} 

Ошибка я получаю:

37,632 [main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1200: Pig script failed to parse: 
<line 59, column 33> Invalid scalar projection: clicked : A column needs to be projected from a relation for it to be used as a scalar 
Details at logfile: /home/cloudera/pig_1486224821223.log 

Любая помощь будет оценена.

Edit:

data = LOAD '/user/cloudera/pig_demo/ad_data.txt' AS (keyword:chararray,campaign_id:chararray, 
     date:chararray, time:chararray,display_site:chararray, was_clicked:int, 
     cpc:int, country:chararray, placement:chararray); 

Образец записей:

tablet C6 5/1/2013 3:47:10 movienet.example.com 0 102 USA TOP 
+0

Можете ли вы предоставить заявление нагрузки, а вместе с записью образца. – franklinsijo

+0

@franklinsijo Предоставлен образец записи и инструкции загрузки. –

+0

Невозможно воспроизвести ошибку. Добавлено несколько записей того же шаблона, что и ',' разделительный текст. Работает на меня! – franklinsijo

ответ

1

Pig версия 0,15.

входного файла data.txt:

tablet C6 5/1/2013 3:47:10 movienet.example.com 0 102 USA TOP 
tablet C6 5/1/2013 3:47:10 movienet.example.com 0 102 USA TOP 
tablet C6 5/1/2013 3:47:10 movienet.example.com 0 102 USA TOP 
tablet C6 5/1/2013 3:47:10 movienet.example.com 1 102 USA TOP 

Сценарий:

data = LOAD '/path/data.txt' AS (keyword:chararray,campaign_id:chararray, 
    date:chararray, time:chararray,display_site:chararray, was_clicked:int, 
    cpc:int, country:chararray, placement:chararray); 
grouped = GROUP data BY keyword; 
by_keyword = FOREACH grouped 
{ 
    clicked = FILTER data BY was_clicked == 1; 
    total = COUNT(data.keyword); 
    GENERATE group, ((double)COUNT(clicked)/total) AS ctr; 
} 
dump by_keyword 

дает мне правильный результат:

(tablet,0.25) 
+0

Хорошо, поэтому перезапустил PIG в терминале и снова загрузил файл данных, а затем выполнил только указанные выше команды. Это сработало! –

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

  • Нет связанных вопросов^_^