根据另一个查询的结果筛选列表

时间:2013-07-21 20:28:12

标签: apache-pig

我在这种情况下。我有一个变量data,其中包含以下格式的值列表:

data:(id:int, value:float)

然后我有另一个包含一些元数据的变量:

m:(id:int, var1:int, var2:int)

我想做的是:

  1. 过滤m以获取满足元数据某些条件的id列表
  2. 过滤data,仅保留id在第一个查询的结果集中的元组。
  3. 即。类似的东西:

    wanted_metadata = filter m by CONDITION
    wanted_ids = foreach wanted_metadata generate id
    wanted_data = filter data by id IS INCLUDED IN wanted_ids
    

    目前,我设法使用JOIN运算符,但我更喜欢使用一些“成员资格检查”运算符。

    你能帮帮我吗?

1 个答案:

答案 0 :(得分:2)

如果您的数据足够小以适应RAM,那么使用replicated join,即地图侧连接,这是作为成员资格检查实施的。