我是hadoop框架的新手。如果有人可以通过这个指导我,那将对我有所帮助。 我有两种类型的文件。 dirA / - > file_a,file_b,file_c
dirB / - > another_file_a,another_file_b ...
目录A中的文件包含tranascation信息。
类似于:
id, time_stamp
1 , some_time_stamp
2 , some_another_time_stamp
1 , another_time_stamp
因此,这种信息分散在dirA中的所有文件中。 现在要做的第一件事是:我给出一个时间框架(比如说上周),我想找到那个时间框架之间存在的所有唯一ID。
所以,保存文件。
现在,dirB文件包含地址信息。 类似的东西:
id, address, zip code
1, fooadd, 12345
and so on
所以第一个文件输出的所有唯一ID ..我把它们作为输入然后找到地址和邮政编码。
基本上最后的输出就像sql merge。
查找时间范围之间的所有唯一ID,然后合并地址信息。
我非常感谢任何帮助。 感谢
答案 0 :(得分:1)
你把它标记为猪,所以我猜你是想用它来完成这个?如果是这样,我认为这是一个很好的选择 - 这在猪身上真的很容易!
times = LOAD 'dirA' USING PigStorage(', ') AS (id:int, time:long);
addresses = LOAD 'dirB' USING PigStorage(', ') AS (id:int, address:chararray, zipcode:chararray);
filtered_times = FILTER times BY (time >= $START_TIME) AND (time <= $END_TIME);
just_ids = FOREACH filtered_times GENERATE id;
distinct_ids = DISTINCT just_ids;
result = JOIN distinct_ids BY id, addresses BY id;
$START_TIME
和$END_TIME
是您可以传递给脚本的参数。