我是一个新手Pig和我的工作与一个大的业务数据文件。商业数据文件有来自世界各地的城市,我只希望与美国城市的工作。我有 LOADED
这两个数据集都成功,我正在尝试遍历整个业务数据文件,并删除所有不在美国城市数据集中的城市。
raw_bus_data = LOAD 'globalbus.json' USING com.twitter.elphantbird.pig.load.JsonLoader('-nestedLoad') as (row: map[]);
us_citystate = LOAD 'us.csv' USING PigStorage(',') AS (city:chararray, state:chararray);
我意识到下一行行不通,但我正在尝试做类似的事情:
bus_us_data = FILTER raw_bus_data BY state == us_citystate state;
我需要用这个吗 FOREACH
为了什么?
1条答案
按热度按时间z31licg01#
您可以执行一个内部连接,它将有效地过滤掉任何不包含us状态的行。因为
us_citystate
如果每个州有多行(每个城市一行),则需要创建一个新关系B
每个状态只包含一行,否则将从中复制行bus_us_data
. 执行此操作和内部联接的代码是:其中var1、var2等是您希望从中保留的字段
raw_bus_data
.