gpt4 book ai didi

hadoop - Pig - FilterFunc 不接受整个元组

转载 作者:可可西里 更新时间:2023-11-01 16:22:02 26 4
gpt4 key购买 nike

我的 Pig 的一个过滤器功能有问题。

但首先,我会告诉你上下文。

A = LOAD 'pig/hado/start_extrait2.csv' USING PigStorage(';') as (DAT_START:chararray, COD_IPUSER:chararray, NDI_START:chararray);

hado_search_file = LOAD 'pig/hado/recherche_hado.csv' USING PigStorage(';') as (DATE_HADO:chararray, IP_RECHERCHEE:chararray);

result2 = JOIN hado_search_file by IP_RECHERCHEE LEFT OUTER, A by COD_IPUSER;

让我们尝试可视化“result2”变量:

describe result2;

{hado_search_file::DATE_HADO: chararray,hado_search_file::IP_RECHERCHEE: chararray,A::COD_IPUSER: chararray,A::DAT_START: chararray,A::NDI_START: chararray}

dump result2;

(2014/03/10 00:00:00,192.168.2.67,,,)
(2014/03/10 00:00:00,79.92.147.88,79.92.147.88,2014/03/10 00:00:00,0385578168)
(2014/03/10 00:00:00,79.92.147.88,79.92.147.88,2014/03/10 00:00:00,0385578168)
(2014/03/10 00:00:01,79.92.147.88,79.92.147.88,2014/03/10 00:00:00,0385578168)
(2014/03/10 00:00:01,79.92.147.88,79.92.147.88,2014/03/10 00:00:00,0385578168)

然后,我尝试使用 FilterFunc

flt = FILTER result2 BY dateInferiorOrNull();

代码的开头是:

public class dateInferiorOrNull  extends FilterFunc {

@Override
public Boolean exec(Tuple input) throws IOException {

System.out.println(input);

...

}
}

我期望得到与我之前制作的“dump result2”相同的输出,但相反,我得到了这样的结果:

(2014/03/10 00:00:00,79.92.147.88)

只取了前两个字段!

当我尝试显示元组大小时,程序说元组的大小是 2 !

所以过滤器函数似乎没有将整个元组作为输入。

为什么会这样?

感谢您的帮助。

最佳答案

从输入元组(您作为参数传递给 UDF)获取结果中所需的列,然后将其添加到 DataBag,然后从您的 UDF 返回此 DataBag。这个 UDF 的输出是一个 Bag,然后在你的 pig 脚本中将这个 Bag 展平。

关于hadoop - Pig - FilterFunc 不接受整个元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22539749/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com