【问题标题】:scalars can only be used with projection in PIG标量只能与 PIG 中的投影一起使用
【发布时间】:2012-02-02 06:44:09
【问题描述】:

标量只能与投影一起使用我在使用 foreach 时遇到此错误。如何解决此错误?我如何在 foreach 中使用 LIMIT ?请推荐一些 提前谢谢..

编辑(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;

【问题讨论】:

  • 想要分享产生这个错误的代码吗?
  • 是的 A = LOAD 'part-r-00000' ; G = A 组($0,$2); Y = foreach G 生成 FLATTEN(group), FLATTEN($1);排序 = 按 $0 ASC、$1 DESC 排序 Y; X = foreach Y { lim = LIMIT 排序 3 ;生成 lim ; };转储 x;

标签: hadoop apache-pig


【解决方案1】:

LIMIT 在 FOREACH nested_op 的 Pig 0.9 中可用。

如果您想要每个组的前 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 可能会很有效(在这种情况下不是)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-14
    • 2018-11-26
    • 2010-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-17
    • 2021-06-01
    相关资源
    最近更新 更多