我想知道是否有办法在关系中创建一个新字段,然后为它分配一些顺序递增的数字?这是一个例子:
ordered_products = ORDER products BY price ASC;
ordered_products_with_sequential_id = FOREACH ordered_products GENERATE price, some_sequential_id;
如何创建some_sequential_id?我不确定猪是否可行。
答案 0 :(得分:1)
我怀疑你必须编写自己的UDF来运行它。一种方法是在AtomicInteger
实现中增加UDF中的静态变量(exec
)。
public class IncrEval extends EvalFunc<Long> {
final static AtomicLong res = new AtomicLong(0);
@Override
public Long exec (Tuple tip) throws IOException {
if (tip == null || tip.size() == 0) {
return null;
}
res.incrementAndGet();
return res.longValue();
}
}
猪脚本条目:
b = FOREACH a GENERATE <something>, com.eval.IncrEval() AS ID:long;