Использование корреляции свиней Hadoop - PullRequest
2 голосов
/ 07 декабря 2011

У меня есть список векторов, с которыми я хочу выполнить корреляцию через входной вектор (чисел).Как мне сохранить мой список векторов и как передать мой входной вектор и передать его в функцию COR () Pig ?

-- SET command?  what is it used for? this doesn't work
SET input_nums {0,2,0,1,2,0,0,0,0} AS bag{}

-- storing vectors in this format doesn't seem to work 
-- import via: data = LOAD mynums AS (id:long, nums:bag{});
1\t{1,3,3,4,5}
2\t{3,4,5,6,6}

-- this seems to work, but adds overhead on storage
-- import via: data = LOAD mynums AS (id:long, nums:bag{t:(x:long)});
1\t{(1),(3),(3),(4),(5)}
2\t{(3),(4),(5),(6),(6)}

-- assuming "data" and "input_nums" are set, no idea how to use though:
results = COR(data, input_nums) -- nope
results = FOREACH data GENERATE id, COR(nums, input_nums) -- nope

Менее важный побочный вопрос: I 'видел сценарии свиней, которые принимают аргументы.Могу ли я передать мои input_nums через эти аргументы (то есть строковый аргумент, а затем Свинья превращается в сумку)?

1 Ответ

0 голосов
/ 16 апреля 2013

Единственное требование в отношении выполнения COR в Pig - это то, что входными аргументами являются мешки двойников.Кроме того, убедитесь, что у вас есть версия PIG> 0,90,1 (см. JIRA: PIG-2286 ).

Входные данные:1<tab>102<tab>123<tab>134<tab>14

Скрипт:data = LOAD 'cor.txt' AS (series1:double, series2:double);rel = GROUP data ALL;corop = FOREACH rel GENERATE COR(data.series1, data.series2);dump corop;

Выход:({(var0,var1,0.9827076298239908)})

...