Filter 按字符串列表筛选

Filter 按字符串列表筛选,filter,apache-pig,Filter,Apache Pig,我有一个包含URL的文件 和3个包含URL的文件,我想看看它们是否存在于第一个文件中 第一个文件的示例是 , 过滤器文件的示例: 过滤器1 url1.com url2.com 过滤器2 url5.com url6.com/ddfd urlx.org 我想做的是,在同一过程中(如果可能的话),检查过滤器1中的任何url或过滤器2中的任何url等是否在第一个文件中,以及是否将匹配写入以该过滤器命名的文件(过滤器名称无关)。 每个过滤器的重要信息 输出将是这样的 过滤掉 http://www.url

我有一个包含URL的文件 和3个包含URL的文件,我想看看它们是否存在于第一个文件中

第一个文件的示例是

,

过滤器文件的示例:

过滤器1

url1.com

url2.com

过滤器2

url5.com

url6.com/ddfd

urlx.org

我想做的是,在同一过程中(如果可能的话),检查过滤器1中的任何url或过滤器2中的任何url等是否在第一个文件中,以及是否将匹配写入以该过滤器命名的文件(过滤器名称无关)。 每个过滤器的重要信息

输出将是这样的

过滤掉

http://www.url1.com/xxx/sss
http://www.url2.com/xxx/xxxx/xxxx

我将从较高的层次描述我会在你的鞋子里做什么:

  • 将所有文件作为数据集加载。我们可以称它们为URL、filter1、filter2和filter3
  • 如果我理解正确的话,这三个过滤器之间没有区别,所以只需将它们合并为一个新的数据集,我们称之为big_filter
  • 使用正则表达式将url与big_过滤器连接,以从url中提取基本url。REGEX_EXTRACT是一个内置的Pig函数。内部联接将除去url中不在筛选器中的所有项
  • 仅从结果数据集生成url列
  • 在步骤4中生成的数据集上运行DISTINCT
  • 使用各种pig存储函数之一,以您最喜欢的形式存储步骤5中生成的数据集

  • 我会给你一个高层次的描述,我会做你的鞋:

  • 将所有文件作为数据集加载。我们可以称它们为URL、filter1、filter2和filter3
  • 如果我理解正确的话,这三个过滤器之间没有区别,所以只需将它们合并为一个新的数据集,我们称之为big_filter
  • 使用正则表达式将url与big_过滤器连接,以从url中提取基本url。REGEX_EXTRACT是一个内置的Pig函数。内部联接将除去url中不在筛选器中的所有项
  • 仅从结果数据集生成url列
  • 在步骤4中生成的数据集上运行DISTINCT
  • 使用各种pig存储函数之一,以您最喜欢的形式存储步骤5中生成的数据集

  • 假设筛选文件适合计算节点上的内存-使用Perl或其他常用语言进行匹配,并通过此筛选流式传输数据,例如:

    DEFINE MY_FILTER ` perl $script $filter1 $filter2 filter3 ` SHIP('$script','$filter1', '$filter2', '$filter3');
    A = load '$input';
    B = stream A through MY_FILTER;
    store B into '$output';
    
    这是一次性的。 从定义$filter和其他参数的bash脚本调用此Pig脚本。
    在$script中实现字符串匹配和输出,该脚本将加载$filter1、$filter2和$filter3,从STDIN进行匹配,并以所需格式生成输出。

    假设筛选文件适合计算节点上的内存-使用Perl或其他常用语言进行匹配,并通过此筛选器传输数据,例如:

    DEFINE MY_FILTER ` perl $script $filter1 $filter2 filter3 ` SHIP('$script','$filter1', '$filter2', '$filter3');
    A = load '$input';
    B = stream A through MY_FILTER;
    store B into '$output';
    
    这是一次性的。 从定义$filter和其他参数的bash脚本调用此Pig脚本。
    在$script中实现字符串匹配和输出,该脚本将加载$filter1、$filter2和$filter3,从STDIN进行匹配并以所需格式生成输出。

    请发布您迄今为止尝试的内容。请发布您迄今为止尝试的内容。