скаляры можно использовать только с проекцией в PIG - PullRequest
0 голосов
/ 02 февраля 2012

скаляры могут использоваться только с проекцией. Я получаю эту ошибку при использовании foreach. Как я могу устранить эту ошибку? как я могу использовать LIMIT в foreach? пожалуйста, предложите некоторые заранее спасибо ..

Редактировать (Tichdroma): Скопированный код из комментария

A = LOAD 'part-r-00000';
G = Group A by ($0,$2 );
Y = foreach G generate FLATTEN(group), FLATTEN($1);
sorted = order Y by $0 ASC, $1 DESC;
X = foreach Y {
  lim = LIMIT sorted 3;
  generate lim;
};
Dump x;

1 Ответ

3 голосов
/ 02 февраля 2012

LIMIT доступно в Pig 0.9 в FOREACH nested_op .

Если вы хотите, чтобы верхний N-элемент каждой группы, вы можете попробовать выполнить итерациюна каждом и индивидуально сортируйте и ограничивайте их:

A = LOAD 'part-r-00000';
G = GROUP A by ($0, $2);
X = FOREACH G {
  sorted = ORDER A by $0 ASC, $1 DESC;
  lim = LIMIT sorted 3;
  GENERATE lim;
};
DUMP X;

Обратите внимание, что TOP может быть эффективным, если у вас есть только столбец сопоставимых значений (не в этом случае).

...