Как создать собственную схему из отношения в Pig? - PullRequest
1 голос
/ 15 апреля 2011

У меня есть схема, описывающая значения tf-idf для слов в различных статьях.Его описание выглядит так:

tfidf_relation: {word: chararray,id: bytearray,tfidf: double}

Вот пример таких данных:

(cat,article_one,0.13515503603605478)
(cat,article_two,0.4054651081081644)
(dog,article_one,0.3662040962227032)
(apple,article_three,0.3662040962227032)
(orange,article_three,0.3662040962227032)
(parrot,article_one,0.13515503603605478)
(parrot,article_three,0.13515503603605478)

Я хочу получить вывод в виде: cat article_one 0.13515503603605478, article_two 0.4054651081081644 и так далее.Вопрос в том, как сделать из этого отношение, содержащее поле слова и кортеж полей id и tfidf?Примерно так:

X = FOREACH tfidf_relation GENERATE word, (id, tfidf);

не работает.Какой правильный синтаксис для этого?

Ответы [ 2 ]

1 голос
/ 26 июня 2014

Попробуйте:

    t = LOAD 'input/file' USING PigStorage(',') as (word: chararray,id: bytearray,tfidf: double);
    u = group t by word;
    dump u;

Вывод будет

    (cat,{(cat,article_two,0.4054651081081644),(cat,article_one,0.13515503603605478)})
    (dog,{(dog,article_one,0.3662040962227032)})
    (apple,{(apple,article_three,0.3662040962227032)})
    (orange,{(orange,article_three,0.366204096222703)})
    (parrot,{(parrot,article_three,0.13515503603605478),
    (parrot,article_one,0.13515503603605478)})

Надеюсь, это то, что вы ищете.

0 голосов
/ 19 апреля 2011
X = FOREACH tfidf_relation GENERATE word, {(id, tfidf)};

Это, вероятно, то, что вам нужно.

...