如何在 PIG 中比较两个元组



我想过滤flight_delay_time小于某些特定值(x)的数据集A的记录。

但是我会从另一个猪查询中获取 x 的值,该查询在 x 是一个元

组的意义上。

但是使用以下语句会引发错误:

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

文件 A 中的数据按以下方式排列;

拉维,储蓄,阿维纳什,2,字符,33,F,22,44,12,13,33,44,22,11,10,22,26阿维纳什,电流,桑迪普,3,字符,44,M,33,11,10,12,33,22,39,12,23,19,35至尊,储蓄,普拉巴什,4,字符,55,F,22,12,23,12,44,56,7,88,34,23,68拉维,电流,涅槃,5,字符,33,M,11,10,33,34,56,78,54,23,445,66,77文卡特,储蓄,兔子,6,字符,11,F,99,12,34,55,33,23,45,66,23,23,28

x = (40) 的值,存储为元组。

上述数据的最后一列表示flight_delay_time。

我通过以下方式提取 X 的值。

以下是存储在C_CONTROL_BATCH.txt

中的数据

25354015

我使用以下代码提取 X 的值。

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

这是解决方案:

输入

我们有两个输入文件:

  1. 航空公司数据.txt - 拥有原始数据拉维,储蓄,阿维纳什,2,字符,33,F,22,44,12,13,33,44,22,11,10,22,26阿维纳什,电流,桑迪普,3,字符,44,M,33,11,10,12,33,22,39,12,23,19,35至尊,储蓄,普拉巴什,4,字符,55,F,22,12,23,12,44,56,7,88,34,23,68拉维,电流,涅槃,5,字符,33,M,11,10,33,34,56,78,54,23,445,66,77文卡特,储蓄,兔子,6,字符,11,F,99,12,34,55,33,23,45,66,23,23,28

  2. x.txt - 从哪里获得 x 值的数据 -20303538374029

flight_delay_time列是下面关系中的最后一列,类型为 int。

注意 - 如果你不在这里声明它,程序会抛出一个异常,当你最后过滤时,它不能从byterarray转换为int。

rawdata = 加载 'airlinesdata.txt' 使用 PigStorage(',') AS (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,field17:chararray,flight_delay_time:int);

x_data = LOAD 'x.txt' USING PigStorage() AS (x_val:int);

order_x_data = 按x_val x_data排序;

max_value = 限制order_x_data 1;

在这里,我们再次将值转换为 int 以使过滤条件正常工作。

max_value_casted = FOREACH max_value生成 $0 作为 (maxval:int);

最后,我们可以发出过滤器查询来获取结果。请注意下面如何使用 .max_value_casted关系中的运算符。

output_data = 按 flight_delay_time

倾倒output_data;

输出 - 小于最大值 X 的值 (40)

(拉维,储蓄,阿维纳什,2,字符,33,F,22,44,12,13,33,44,22,11,10,22,26)(阿维纳什,电流,桑迪普,3,字符,44,M,33,11,10,12,33,22,39,12,23,19,35)(文卡特,储蓄,兔子,6,字符,11,F,99,12,34,55,33,23,45,66,23,23,28)

希望对:)有所帮助

相关内容

  • 没有找到相关文章

最新更新