【问题标题】:Does PIG have NOT IN clausePIG 是否有 NOT IN 子句
【发布时间】:2017-01-31 11:39:52
【问题描述】:

我正在尝试

select * from A where A.ID NOT IN (select id from B) (in sql)

filtersource= FILTER source BY ID NOT(destination.ID)

如何使用 NOT IN 子句或其他一些技术来使用 pig 去除一个表中存在的额外记录

【问题讨论】:

    标签: hadoop mapreduce apache-pig


    【解决方案1】:

    是的,你可以在 PIG 中这样做:

    filtersource= FILTER source BY NOT ID IN (your condition or joined field);
    

    示例:

    HIVE> select * from table where id NOT IN ('1','2','3');
    
    grunt> A = LOAD 'db.table' USING org.apache.hive.hcatalog.pig.HCatLoader() AS (id:int, value:chararray);
    grunt> B = FILTER A BY NOT id IN (1,2,3);
    

    【讨论】:

    • 嗨 Rijul 和 Ronak 感谢您的回复,我已尝试使用评论 filtersource= FILTER sourcenew BY NOT ID (destnew.ID);,但我收到错误 ERROR 1070: Could not resolve ID使用导入:[, java.lang., org.apache.pig.builtin., org.apache.pig.impl.builtin.],知道如何处理它
    【解决方案2】:

    除了@Rijulsahu 的回答,您还可以使用MATCHES - 将Java format 用于正则表达式的正则表达式匹配。

    BY NOT(ID MATCHES [123])

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-12
      • 2012-03-14
      • 1970-01-01
      • 2021-10-02
      • 2013-11-03
      • 2010-09-12
      • 1970-01-01
      相关资源
      最近更新 更多