编写storm程序,对数据进行聚合并且写入到mysql,

本文  主要说明数据中有多个字段需要进行sum或其他操作时的程序写法

1.主程序main方法,storm 拓扑运行入口

public class CopyOfPvTopo {

	public static void main(String[] args) throws Exception {
System.out.println("--------------------------------------------------------------------------start");
BrokerHosts brokerHosts = new ZkHosts(Const.ZK_STR); //zookeeper配置主机名集合
TridentKafkaConfig kafkaConfig = new TridentKafkaConfig(brokerHosts, Const.PVUV_TOPIC, "20160607p");//对接kafka,接收某一个管道
kafkaConfig.scheme = new SchemeAsMultiScheme(new StringScheme());

         //模拟批处理数据
FixedBatchSpout spout = new FixedBatchSpout(new Fields("str"), 3,
new Values("111|2|1|1|1|1|1|1|1|1|1|1|1|1"),
new Values("111|2|1|1|1|1|1|1|1|1|1|1|1|1"),
new Values("111|2|1|1|1|1|1|1|1|1|1|1|1|1"),
new Values("111|2|1|1|1|1|1|1|1|1|1|1|1|1"));
// spout.setCycle(true);//是否循环提交数据
TransactionalTridentKafkaSpout kafkaSpout = new TransactionalTridentKafkaSpout(kafkaConfig);//本地测试没用
TridentTopology topology = new TridentTopology();//建一个拓扑
topology.newStream("20160607p", spout)//读取模拟数据
.parallelismHint(20)
.shuffle()
.each(new Fields("str"), new Senquece(), new Fields("mapid", "pv", "uv"))//处理原数据
.parallelismHint(80)
.groupBy(new Fields("mapid","uv","pv")).chainedAgg()//开始调用链
.aggregate(new Fields("uv"), new SumAgg(), new Fields("sumuv"))//求和uv
.aggregate(new Fields("pv"), new SumAgg(), new Fields("sumpv")).chainEnd()//结束调用链
.parallelismHint(35)
.each(new Fields("mapid", "sumpv", "sumuv"), new StoreFilter())//发送到下一步
.parallelismHint(20);
Config conf = new Config();
conf.setDebug(false);
LocalCluster cluster = new LocalCluster();
cluster.submitTopology(Const.PVUV_TOPO, conf, topology.build());
// Utils.sleep(100000);
// cluster.killTopology("firstTopo");
// cluster.shutdown();
}
}

  2.sum类,做sum是需要用到的类在上面的类中可以找到调用

public class SumAgg implements CombinerAggregator<Integer> {

    private static final long serialVersionUID = -6764153182395797633L;

    @Override
public Integer init(TridentTuple tuple) {
return tuple.getInteger(0);
} @Override
public Integer combine(Integer val1, Integer val2) {
return val1 + val2;
} @Override
public Integer zero() {
return 0;
} }

storm sum aggregate 原语 聚合 本地测试的更多相关文章

  1. MDX Step by Step 读书笔记(七) - Performing Aggregation 聚合函数之 Sum, Aggregate, Avg

    开篇介绍 SSAS 分析服务中记录了大量的聚合值,这些聚合值在 Cube 中实际上指的就是度量值.一个给定的度量值可能聚合了来自事实表中上千上万甚至百万条数据,因此在设计阶段我们所能看到的度量实际上就 ...

  2. 问题 1014: [编程入门]阶乘求和python):(本地测试正确;但提交不对!!??)求教

    问题 1014: [编程入门]阶乘求和 时间限制: 1Sec 内存限制: 128MB 提交: 27629 解决: 5450 题目描述 求Sn=1!+2!+3!+4!+5!+…+n!之值,其中n是一个数 ...

  3. 用java开发微信公众号:测试公众号与本地测试环境搭建(一)

    本文为原创,原始地址为:http://www.cnblogs.com/fengzheng/p/5023678.html 俗话说,工欲善其事,必先利其器.要做微信公众号开发,两样东西不可少,那就是要有一 ...

  4. 在本地测试一次成功的AJAX请求

    要在本地测试AJAX,首先是环境的搭建,下面以wamp为例. 1.先在wamp的官网下载wamp的安装包,网址 http://www.wampserver.com/. 2.安装wamp.如果安装过程中 ...

  5. 本地测试AJAX请求

    要在本地测试AJAX,首先是环境的搭建,因为XHR对象的open方法中参数url是指文件在服务器上的文件.下面以WampServer为例. 1. 下载wamp的安装包,下载地址为:http://221 ...

  6. win10系统iis下部署搭建https (ssl/tls)本地测试环境

    有时想要把公司的某些XX项目部署成https站点,是为了在传输层加密传输,防止他人嗅探站点重要数据信息,平常我们使用的http方式都是明文方式传输的很不安全,容易被他人窃取.而有些时候要在本地搭建ht ...

  7. win7 windows server 2008R2下 https SSL证书安装的搭配(搭配https ssl本地测试环境)

    原文:http://www.cnblogs.com/naniannayue/archive/2012/11/19/2776948.html 要想成功架设SSL安全站点关键要具备以下几个条件. 1.需要 ...

  8. https,https的本地测试环境搭建,asp.net结合https的代码实现,http网站转换成https网站之后遇到的问题

    一:什么是https SSL(Security   Socket   Layer)全称是加密套接字协议层,它位于HTTP协议层和TCP协议层之间,用于建立用户与服务器之间的加密通信,确保所传递信息的安 ...

  9. 【转】https,https的本地测试环境搭建,asp.net结合https的代码实现,http网站转换成https网站之后遇到的问题

    正需要这个,写的很好,就转过来了 转自: http://www.cnblogs.com/naniannayue/ 一:什么是https SSL(Security   Socket   Layer)全称 ...

随机推荐

  1. [原创] CSS总结!! 有关HTML第二篇 !!

    同样是拿xMind写的   明天上传 CSS+DIV 总结   今天只有CSS了 但是首先涉及一下浏览器原理:  还有好多不知道的模块 但是页面的核心模块就这些了:(些许 需要补充 请关照   ) / ...

  2. 如何使用javascript书写递归函数

    递归函数大家都应该比较熟吧?那么,如何在javascript中书写一个完美的递归函数呢?且听我娓娓道来. 递归函数 写的时候,查了一下维基百科对递归函数的定义,恕我愚钝,简直太深奥了!所以,我还是简单 ...

  3. HTTP - 摘要认证

    基本认证便捷灵活,但极不安全.用户名和密码都是以明文形式传送的,也没有采取任何措施防止对报文的篡改.安全使用基本认证的唯一方式就是将其与 SSL 配合使用. 摘要认证是另一种 HTTP 认证协议,它与 ...

  4. HDOJ2025查找最大元素

    查找最大元素 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Subm ...

  5. CDH离线安装之安装包下载地址

    cloudermanager安装包地址:http://archive.cloudera.com/cm5/cm/5/cloudera-manager-el6-cm5.3.0_x86_64.tar.gz, ...

  6. 第三十一篇、iOS 9版本适配

    1.网络适配(强制回退HTTP) 为了强制增强数据访问安全, iOS9 默认会把 所有的http请求 所有从NSURLConnection . CFURL . NSURLSession发出的 HTTP ...

  7. 相似度到大数据查找之Mysql 文章匹配的一些思路与提高查询速度

    文章相关度匹配的一些思路---"压缩"预料库,即提取用特征词或词频,量化后以“列向量”形式保存到数据库:按前N组词拼为向量组供查询使用,即组合为1到N字的组合,量化后以“行向量”形 ...

  8. 我的博客已搬迁到http://www.lsworks.net

    我的博客已搬迁到http://www.lsworks.net

  9. Apache 安装与配置

    安装Apache 1.下载apache软件http://www.apache.org 2.安装 以管理员身份进行安装 3.设置主机名与域名 4.选择安装类型 5.自定义安装路径 6.开始安装 7.安装 ...

  10. 关于JFinal拦截器的理解

    这是波总的亲自总结,记录一下: 1:拦截器可以用在两个层面,一个是"控制层",另一个是"业务层",其中"业务层"是一种狭义的说法,更加合理的 ...