Filter 以级联方式组合输出

Filter 以级联方式组合输出,filter,cascading,Filter,Cascading,我正在使用级联分析各种域名的日志文件。以下是过滤后的输出报告示例: www.google.nl.3 www.google.it.3 www.google.com.co 3 www.google.com.hk 3 www.google.co.jp 3 我想分组或合并所有领域,有“谷歌”在它只是一行。对于所有google域,输出报告只有一行。大概是这样的: www.google.com 15 或 谷歌15 你认为这可能吗?有什么想法吗?只要您了解如何设置水龙头并将其连接到管道上,您就可以使用诸如搜索

我正在使用级联分析各种域名的日志文件。以下是过滤后的输出报告示例:

www.google.nl.3

www.google.it.3

www.google.com.co 3

www.google.com.hk 3

www.google.co.jp 3

我想分组或合并所有领域,有“谷歌”在它只是一行。对于所有google域,输出报告只有一行。大概是这样的:

www.google.com 15

谷歌15


你认为这可能吗?有什么想法吗?

只要您了解如何设置水龙头并将其连接到管道上,您就可以使用诸如搜索
^www\\.google.*
之类的功能,并将其放在一个单独的列中,然后使用它来计算

您应该能够在两个管道内完成此特定任务。一个用于从你的链接中抓取谷歌,另一个用于计算它们


希望这有帮助

这在级联中是可能的。 假设您的字段名是(url,count)。 应用函数添加一个名为“域”的字段,如果行中包含单词google,则该字段包含值google,并放弃url字段。 现在,如果您不需要任何其他域,请将它们过滤掉。 现在有两个字段(domain,count),其中domain只包含wordgoogle

现在使用AggregateBy(),SumBy()级联函数

SumBy any_name=新的SumBy(字段名称到总和,总和之后的字段名称,数据类型类)

管道结果=新聚合by(“名称”,Pipe.pipes(sourcePipeName),groupBy字段的名称,SumBy实例的数量,SumBy实例的名称)

在你的情况下,它变成了

SumBy xyz=new SumBy(新字段(“计数”)、新字段(“组合计数”)、Integer.class

piperesult=newaggregateby(“结果”,Pipe.pipes(sourcePipeName),新字段(“域”),1,xyz)

所以现在结果管道包含一行(google,count

因此,上面的代码片段将与下面的SQL查询类似

选择域,按域从源组中求和(计数)