在前文中我们介绍了文件并行的查找与过滤的实现方法,这里再介绍一下查找过滤加分组汇总的做法。和上一篇一样,这里只讨论小结果集,也就是计算结果在内存中可以装下的情况。
用多线程实现查找过滤和分组汇总的思路是:采用多线程方式,每个线程处理一部分数据的查找过滤和分组汇总,最后将每一部分检索的结果合并分组汇总,再在主程序中完成最终的过滤。这里通过一个例子来看一下具体做法。
考虑到大数据一般都存储在文件中,这里也以Orders.b文件为例,数据如下:
ORDERID CLIENT SELLERID AMOUNT ORDERDATE NOTE
1 287 47 5825 2013-05-31 gafcaghafdgie f ci…
2 89 22 8681 2013-05-04 gafcaghafdgie f ci…
3 47 67 7702 2009-11-22 gafcaghafdgie f ci…
4 76 85 8717 2011-12-13 gafcaghafdgie f ci…
5 307 81 8003 2008-06-01 gafcaghafdgie f ci…
6 366 39 6948 2009-09-25 gafcaghafdgie f ci…
7 295 8 1419 2013-11-11 gafcaghafdgie f ci…
8 496 35 6018 2011-02-18 gafcaghafdgie f ci…
9 273 37 9255 2011-05-04 gafcaghafdgie f ci…
10 212 0 2155 2009-03-22 gafcaghafdgie f ci…
…
说明:数据中note字段是为了增加每条记录的长度设置的字段,没有实际意义。
需要将2013年的订单记录按照client,sellerid 分组,并求订单数量count(orderid)和订单金额sum(amount)。最后,按照订单金额大于500000的条件过滤结果。
由于Orders.b的数据量较大,所以分成若干段并行处理。首先,要使用集算器来编写脚本group.dfx,实现多线程计算,具体脚本如下:
A1:并行汇总线程数为4。
A2:通过fork关键字,使用多线程执行B2到B5的代码,线程数是4,每个线程读取到的A2值分别是1、2、3、4。
B2:利用游标cursor函数,将文件大致分成4组,取其中第A2组的游标(只取需要的字段)。
B3:按照年份=2013年查找过滤。
B4:对游标进行分组汇总。
B5:返回本线程的分组结果B4。
A6:在主线程中把四个线程的返回结果合并。
A7:对合并之后的结果再做一次分组汇总。
A8:按照订单金额大于500000过滤分组之后的结果。
A8,向外部程序返回最终汇总结果。
集算器脚本完成之后保存为group.dfx,在外部程序中通过集算器JDBC调用group.dfx的方法参见集算器的教程。
采用集算器多线程查找过滤方案的性能测试数据,可参见集算器文件遍历计算的性能测试。
相关推荐
高性能计算之并行编程技术—— MPI并行程序设计
有关计算机并行计算的资料,有时可以用来加速计算等等
高性能计算并行编程技术——MPI并行程序设计,
分布式计算与并行处理 分布式计算与并行处理分布式计算与并行处理分布式计算与并行处理分布式计算与并行处理分布式计算与并行处理分布式计算与并行处理
并行计算 陈国良编著 呵呵 大家来下载 是第三版《并行计算:结构•算法•编程(第3版)》是并行计算系列丛书之开篇,它以并行计算为主题,围绕并行计算机、并行算法和并行程序设计展开讨论,强调融并行计算机体系结构、...
高性能计算并行编程技术——MPI并行程序设计2
中山大学陈鹏飞老师并行与分布式编程PPT汇总
信息与计算专业指导资料,并行计算导论,特别是分布式并行计算环境和消息传递并行编程,并行计算的基础知识、Linux/UNIX 的基本使用、基于 Linux 机群的并行计算平台的建立、并行算法的设计和 MPI 消息传递并行编程...
并行计算的一些资料,可以看看的, 介绍并行体系结构,并行编程。
自己整理的计算机并行资料,希望对大家有所帮助,在下不敢私藏,特地拿出来于各位同道中人分享
并行计算或称平行计算是相对于串行计算来说的;所谓并行计算可分为时间上的并行和空间上的并行。 时间上的并行就是指流水线技术,而空间上的并行则是指用多个处理器并发的执行计算。并行计算科学中主要研究的是空间...
本书是并行计算,特别是分布式并行计算环境和消息传递并行 编程的入门教材,目的是促进并行计算技术在我国的应用。书中介 绍了并行计算的基础知识、Linux/UNIX 的基本使用、基于Linux 机 群的并行计算平台的建立、...
关于超级计算机、并行计算机的介绍
多线程并行执行,汇总结果、多线程并行执行,汇总结果
分布式计算、并行计算及集群、网格、云计算的区别.docx
高性能期末并行计算期末考试复习提纲,主要是一些概念题、三个主要定律和三个编程题。
JAVAOpenMP并行计算框架JAVAOpenMP并行计算框架JAVAOpenMP并行计算框架JAVAOpenMP并行计算框架JAVAOpenMP并行计算框架
高性能计算之并行编程技术—— MPI并行程序设计
并行计算源代码 并行计算源代码并行计算源代码 并行计算源代码 并行计算源代码