在前文中我们介绍了文件并行的查找与过滤的实现方法,这里再介绍一下查找过滤加分组汇总的做法。和上一篇一样,这里只讨论小结果集,也就是计算结果在内存中可以装下的情况。
用多线程实现查找过滤和分组汇总的思路是:采用多线程方式,每个线程处理一部分数据的查找过滤和分组汇总,最后将每一部分检索的结果合并分组汇总,再在主程序中完成最终的过滤。这里通过一个例子来看一下具体做法。
考虑到大数据一般都存储在文件中,这里也以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的方法参见集算器的教程。
采用集算器多线程查找过滤方案的性能测试数据,可参见集算器文件遍历计算的性能测试。
相关推荐
分布式数据库系统中的并行分组聚合实现涉及的主要知识点包括分布式数据库系统、数据分析、并行计算、哈希分组(Hash GroupBy)技术、分组聚合(GroupBy and Aggregation)操作、以及OceanBase数据库。以下是对这些...
并行计算可以在单个计算机内部实现(通过多核处理器),也可以跨多台计算机实现(即分布式并行计算)。 #### MapReduce计算模型 MapReduce是Hadoop的核心组件之一,它提供了对大数据集进行分布式处理的框架。...
实验不仅要求参与者熟悉分布式高性能计算平台Hadoop的基本搭建步骤,还需要他们能够运用Map/Reduce编写并行计算程序,并理解这类程序在Hadoop平台上的运行与调试机制。 #### 实验具体内容 - **实验要求**: - ...
因为FR的在每次分组后重新计数,使用MC.Tag保存现在数据BAND上的所有不合并行的总高度。当然也可以使用一个变量,但放着这么多TAG不用,多浪费呀。况且使用TAG的语法也比使用变量简单,使用变量使程序看上去很难懂。...
10. I/O操作与CPU并行:I/O操作与CPU的数据处理可以并行执行,提高系统效率。 11. 八进制数与十进制数:255的八进制形式是377。 12. 不兼容的处理器:Pentium 4是Pentium系列的升级,因此在Pentium处理器上开发的...
10. I/O操作与CPU并行:在现代计算机系统中,I/O操作可以与CPU的数据处理操作并行进行,提高了系统的效率。 11. 八进制数转换:与十进制数255等值的八进制数是377。 12. 程序兼容性:在Pentium处理器上开发的程序...
可以使用`dask`库,这是一个并行计算库,能将Pandas操作扩展到多核CPU和分布式系统,显著提升处理速度。 8. **数据可视化**: 为了更好地理解分类汇总的结果,可以使用matplotlib或seaborn库进行数据可视化,创建...
文章中提到的Hadoop平台,是一个开源的分布式存储和计算框架,它提供了MapReduce编程模型和HDFS(Hadoop Distributed File System)分布式文件系统。Hadoop平台非常适合处理大规模数据集,同时具有高容错性,能够在...
这种设计使得 Reduce 能够处理大规模数据的汇总和聚合问题,如求和、平均值计算等。 在“myfirstmapreduce-main”示例中,我们可以看到一个典型的MapReduce程序的主程序入口。在这个项目中,开发者可能已经实现了...
在实际工作中,领料记录的统计是一项常见的任务,而这个压缩包提供的代码示例则展示了如何通过Python来汇总不同单位的Excel文件中的领料记录,并计算每日领用次数。 首先,我们需要了解Python中的两个关键库:`...
MapReduce是一种分布式计算模型,它将复杂的、大规模的数据处理任务分解为两个主要阶段:Map(映射)和Reduce(规约),使得多台计算机(节点)可以并行处理任务,提高整体计算效率。 Map阶段是数据处理的第一步,...
### 网络工程师学习笔记汇总(完整版) #### 一、硬件知识 - **计算机系统的组成**:计算机系统由硬件系统和软件系统两大部分组成。硬件系统是计算机的物理组成部分,而软件系统则包括了操作系统和应用程序等。 ...
MapReduce的核心概念是将复杂的计算任务分解成较小的子任务,并在分布式环境中并行执行。 **1.1 编程模式** MapReduce的基本编程模式包括两个主要阶段:`Map` 和 `Reduce`。这两个阶段的工作原理如下: - **Map ...
由于计算任务可以并行化,所以它可以轻松地处理PB级别的数据。同时,如果某个节点故障,Hadoop会自动重新分配任务,确保数据处理的完整性。 关于标签“源码”,MapReduce的实现通常涉及阅读和理解大量的代码。对于...
常见的OutputFormat实现是TextOutputFormat,它用于输出文本文件,并以制表符或逗号等分隔符将键值对分隔开。 为了有效地运行MapReduce程序,开发人员需要在eclipse这样的集成开发环境(IDE)中编写代码并进行测试...
因此,研究如何利用分布式计算框架(如Hadoop的MapReduce与HDFS架构)来设计并实现高效的Item-Based并行协同过滤推荐算法具有重要意义。 #### 二、协同过滤推荐技术概述 协同过滤是推荐系统中最常用的推荐技术之一...
库外计算可以实现并行跨库计算,历史数据甚至可以通过文件化管理,减轻数据库压力。 最后,数据中心需要处理多样化的数据源,提供服务式接口,并确保数据安全。集算器提供了访问控制层和计算能力,增强了对各种数据...
- **TFTP**(简单文件传输协议)、**FTP**(文件传输协议)和 **SNMP**(简单网络管理协议):常用的数据传输和网络管理协议。 - **BootP**(引导协议):用于无盘工作站初始化时获取IP地址。 - **UDP**(用户数据报...
这个“sql-Group-by.rar_oracle”压缩包文件包含了一个名为“sql分组函数使用.txt”的文本文件,很可能详细阐述了如何在Oracle环境中有效利用GROUP BY语句。 GROUP BY语句的基本语法是: ```sql SELECT column1, ...