gpt4 book ai didi

hadoop - PIG 中的嵌套过滤器

转载 作者:行者123 更新时间:2023-12-02 21:34:37 25 4
gpt4 key购买 nike

我想在 Pig 中执行嵌套过滤器语句。例如:

查询 :

select trim(udc1.drky) drky,
trim(udc1.drsy) drsy,
trim(udc1.drrt) drrt,
trim(udc1.drdl01) drld01,
'Fixed' as AssetType
from f0005 udc1
where trim(udc1.drsy) = '12'
and trim(udc1.drrt) = 'C2'
and trim(udc1.drky) not in (
select trim(drky)
from f0005
where trim(drsy) = '57' and trim(drrt) = 'AC'
)

我需要将上述查询转换为 Pig 脚本。但是,我不知道如何从内部查询中获取过滤器并将它们与外部查询相关联。我可以写一个 Pig UDF 作为最后的选择,但宁愿在原生 Pig 中实现一个解决方案。

请帮我解决上述问题。

最佳答案

假设以下是您的输入

输入是按照布局

drky, drsy, drtt, drld01

1,57,AC,999
2,57,AC,899
2,12,C2,799
1,12,C2,699
4,57,BC,990
5,12,C3,998
6,12,C2,997

根据您的查询,预期输出是
6,12,C2,997

在 Pig 中,您可以借助 JOINS 来实现这一点。请查看下面的代码
 records = LOAD '/user/user/inputfiles/assets.txt' USING PigStorage(',') AS(drky:chararray,drsy:chararray,drtt:chararray,drld01:chararray);

records_filter = FILTER records BY drsy == '57' AND drtt == 'AC';

records_each = FOREACH records_filter GENERATE drky as drky_temp;

records_join = JOIN records BY drky LEFT OUTER, records_each BY drky_temp;

records_join_filter = FILTER records_join BY drky_temp is null and drsy == '12' AND drtt == 'C2';

records_output = FOREACH records_join_filter GENERATE drky, drsy, drtt, drld01, 'FIXED' AS asset_type;

dump records_output;

按照上面的 pig 脚本输出
  6,12,C2,997,FIXED

关于hadoop - PIG 中的嵌套过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33183366/

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