Hadoop Pig correlatie gebruik

Ik heb een lijst van vectoren waarvoor ik de correlatie wil laten lopen via een inputvector (van cijfers). Hoe moet ik mijn lijst met vectoren opslaan en hoe geef ik mijn invoervector door en geef deze door aan Functie COR() van varken ?

-- 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

Minder belangrijke zijvraag: ik heb varkensscripts gezien die argumenten bevatten. Kan ik mijn input_nums via deze argumenten doorgeven (dat wil zeggen, een string-argument, en dan maakt Pig een tas)?

2

1 antwoord

The only requirement with respect to running COR in Pig is that the input arguments be bags of doubles. Also, make sure you have a pig version that is >=0.90.1 (refer to JIRA: PIG-2286).

Input data:
110
212
313
414

Script:
data = LOAD 'cor.txt' AS (series1:double, series2:double);
rel = GROUP data ALL;
corop = FOREACH rel GENERATE COR(data.series1, data.series2);
dump corop;

Output:
({(var0,var1,0.9827076298239908)})

0
toegevoegd