Итак, у меня есть данные, которые имеют два значения, строку и число.(hadoop.pig) несколько счетчиков в одной таблице
data(string:chararray, number:int)
и я рассчитываю на 5 различных правил,
1: INT равно 0 ~ 1.
2: int 1 ~ 2.
5: int 4 ~ 5.
Так что я был в состоянии сосчитать их по отдельности,
zero_to_one = filter avg_user by average_stars >= 0 and average_stars <= 1;
A = GROUP zero_to_one ALL;
zto_count = FOREACH A GENERATE COUNT(zero_to_one);
one_to_two = filter avg_user by average_stars > 1 and average_stars <= 2;
B = GROUP one_to_two ALL;
ott_count = FOREACH B GENERATE COUNT(one_to_two);
two_to_three = filter avg_user by average_stars > 2 and average_stars <= 3;
C = GROUP two_to_three ALL;
ttt_count = FOREACH C GENERATE COUNT(two_to_three);
three_to_four = filter avg_user by average_stars > 3 and average_stars <= 4;
D = GROUP three_to_four ALL;
ttf_count = FOREACH D GENERATE COUNT(three_to_four);
four_to_five = filter avg_user by average_stars > 4 and average_stars <= 5;
E = GROUP four_to_five ALL;
ftf_count = FOREACH E GENERATE COUNT(four_to_five);
Таким образом, это может быть сделано, но это только приводит к 5 отдельной таблице.
Я хочу посмотреть, есть ли какой-либо способ (это нормально, я люблю причудливые вещи) T может сделать результат в одном столе.
Что означает, если
zto_count = 1
ott_count = 3
. = 2
. = 3
. = 5
, то таблица будет {1,3,2,3,5}
Это просто легко разобрать данные, и организовать их таким образом.
Есть ли способы?
Это действительно полезно. – JaemyeongEo
Большое спасибо mr2ert. Кажется, я все понял. Я ценю вашу помощь! – JaemyeongEo
Одна вещь, которую вы не показывали, состоит в том, что этот код будет охватывать только данные, если данные не имеют десятичных знаков, но поскольку в моей части не было никаких спецификаций, указывающих, что данные могут иметь десятичную (я сказал int, что было моей ошибкой), ваш ответ идеально. Я могу исправить эту часть. Спасибо огромное! – JaemyeongEo