如何比较pig中的两个元组?

qmb5sa22  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(386)

我想过滤航班延迟时间小于某些特定值(x)的数据集a的记录。
但是我将从另一个pig查询中得到x的值,它是一个元组,从这个意义上说x是一个元组。
但使用以下语句会引发错误:

B = FILTER A by flight_delay_time < x;
dump B;

文件a中的数据如下:;
ravi,savings,avinash,2,char,33,f,22,44,12,13,33,44,22,11,10,22,26 avinash,current,sandeep,3,char,44,m,33,11,10,12,33,22,39,12,23,19,35 Supereth,savings,prabhash,4,char,55,f,22,12,23,12,44,56,7,88,34,23,68 lavi,current,nirmesh,5,char,33,33,56,78,54,23445,66,77 venkat,savings,bunny,6,char,11,f,99,12,34,55,33,23,45,66,23,28
存储为元组的x=(40)的值。
以上数据的最后一列表示航班延误时间。
我用下面的方法提取x的值。
以下是存储在c\u control\u batch.txt中的数据
25 35 40 15
我使用下面的代码来提取x的值。

control_batch = LOAD 'C_CONTROL_BATCH.txt' AS (start:int);
variable = ORDER control_batch BY start DESC;
X = LIMIT starttime 1;
bkhjykvo

bkhjykvo1#

以下是解决方案:
输入
我们有两个输入文件:
airlinesdata.txt-具有原始数据ravi、savings、avinash、2、char、33、f、22、44、12、13、33、44、22、11、10、22、26 avinash、current、sandeep、3、char、44、m、33、11、10、12、33、22、39、12、23、19、35 supereth、savings、prabhash、4、char、55、f、22、12、23、12、44、56、7、88、34、23、68 lavi、current、nirmesh、5、char、33、m、11、10、33、34、56、78、54、23445、66、77 venkat、saviny、bunny、6、char、11、f、99、12、,34,55,33,23,45,66,23,23,28
x、 txt-有数据从那里我们得到x-20 30 35 38 37 40 29的值
航班延误时间列是下面关系中的最后一列,类型为int。
注意-如果您不在这里声明它,程序会抛出一个异常,当您最后筛选时,它不能从byterarray转换为int。
rawdata=使用pigstorage(',')加载'airlinesdata.txt'(field1:chararray,field2:chararray,field3:chararray,field4:chararray,field5:chararray,field6:chararray,field7:chararray,field8:chararray,field9:chararray,field10:chararray,field11:chararray,field12:chararray,field13:chararray,field14:chararray,field15:chararray,field16:chararray,字段17:chararray,航班延误_time:int);
x_data=使用pigstorage()作为(x)加载“x.txt”_val:int);
order_x_data=按x_val desc排序x_data;
最大\u值=限制顺序\u x \u数据1;
在这里,我们再次将值强制转换为int,以使过滤条件工作。
max\u value\u casted=foreach max\u value生成$0作为(maxval:int);
最后我们可以发出filter查询来获得结果。请注意下面如何使用访问maxval。最大值转换关系中的运算符。
输出数据=按航班延误时间过滤原始数据<max\u值\u casted.maxval;
转储输出数据;
outout—值小于x(40)的最大值
(ravi,savings,avinash,2,char,33,f,22,44,12,13,33,44,22,11,10,22,26)(avinash,current,sandeep,3,char,44,m,33,11,10,12,33,22,39,12,23,19,35)(venkat,savings,bunny,6,char,11,f,99,12,34,55,33,23,45,66,23,28)
希望有帮助:)

相关问题