`
datamachine
  • 浏览: 156822 次
社区版块
存档分类
最新评论

文件计算的并行查找与过滤

    博客分类:
  • DB
阅读更多

   润乾集算器具备文件计算能力。对于数据量相对较大的情况,集算器提供了多线程并行的功能,可以充分利用计算机的多CPU多核的计算能力,获得接近或超过传统数据库的计算性能。

  这里只考虑小结果集的情况,即数据计算结果在内存可以装下的情况。

  集算器多线程并行结构示意图如下:



 

  如上图所示,集算器通过一个主脚本将任务分配给多个子脚本,每个子脚本分别访问本地数据的一部分进行计算。子脚本都完成计算后,将结果返回给主脚本,完成计算后提交给宿主程序(如报表工具)。

  每个子脚本就是一个线程。理论上说服务器对多线程并行任务的支持取决于CPU核数和硬盘并行性能。服务器的CPU核数越多、硬盘的并行读取能力越强,可以同时运行的线程数越多,总任务完成的越快。因此,多线程并行任务功能可以充分发挥计算机的计算能力。

  用多线程实现查找过滤的思路是:采用多线程方式,每个线程处理一部分数据的检索,最后将每一部分检索的结果合并。这里通过一个例子来看一下具体做法。考虑到大数据一般都存储在文件中,这里也以Orders.txt文件为例,数据如下:

   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字段是为了增加每条记录的长度设置的字段,没有实际意义。

  需要按照条件“sellerid=1并且client=50并且orderdate在2013之后”检索过滤后提交给外部Java程序。

  由于Orders.txt的数据量较大,所以分成若干段并行处理。首先,要使用集算器来编写脚本select.dfx,实现多线程并行检索,具体脚本如下:



 

   A1:并行线程数为4。

  A2:通过fork关键字,使用多线程执行B2到B4的代码,线程数是4,每个线程读取到的A2值分别是1、2、3、4。

  B2:利用游标cursor函数,将文件大致分成4组,取其中第A2组的游标(只取需要的字段)。

  B3:对游标进行过滤。

  B4:返回本线程的过滤结果B4。

  A5:在主线程中把四个线程的返回结果合并。

  A6:向外部程序返回最终结果。

  集算器脚本完成之后保存为selec.dfx,在外部程序中通过集算器JDBC调用select.dfx的方法参见集算器的教程。

  如果提前将文本文件转换为集算器提供的二进制格式,性能会进一步提升。转换代码为:



 

   A1:新建一个文本文件的游标。

  A2:将文本文件的游标输出为二进制文件。

  将select.dfx修改如下:



 

   可以看到仅B2的cursor参数改为@bz,读取二进制文件,其他脚本没有变。

  在相同的硬件条件下,同样是3.4G数据,4线程并行,采用普通文本文件完成上述查找过滤需要24秒,采用二进制文件只需要4秒。

  采用集算器多线程查找过滤方案的性能测试数据,参见《集算器文件遍历计算的性能测试》。通过测试并与Oracle对比发现,当数据量小于可用内存时,Oracle的性能较好。数据量大于可用内存时,集算器性能常常会超出。

  上述方式是采用单机并行来提高计算性能。对于数据量更大的情况,也可以考虑采用集算服务器集群的方式,利用多机并行来进一步提升性能。

 

  • 大小: 24.1 KB
  • 大小: 36.1 KB
  • 大小: 16.8 KB
  • 大小: 37.1 KB
0
0
分享到:
评论

相关推荐

    SharpDups:使用快速哈希,快速搜索使用C#并行MapReduce计算查找重复文件

    该工具将使用Map / Reduce方法查找重复文件。 它接受文件列表,然后执行重复检查。 它可以轻松扩展以支持文件搜索过滤器等。 逻辑: 分组相同大小的文件 检查前/中/后字节以进行快速哈希 通过比较文件的头/中和...

    fourinone-3.04.25

    2、计算中止和超时中止的支持,比如多台计算机工人同时执行查找,一旦某台计算机工人找到,其余工人全部中止并返回。以及可以由工人控制或者框架控制的计算过程超时中止。 3、一次性启动多工人进程支持,可以通过...

    python cookbook(第3版)

    13.9 通过文件名查找文件 13.10 读取配置文件 13.11 给简单脚本增加日志功能 13.12 给内库增加日志功能 13.13 记录程序执行的时间 13.14 限制内存和CPU的使用量 13.15 启动一个WEB浏览器 第十四章:测试、...

    Shell脚本专家指南

    32.2 测试文件数目的计算方法 第33章 从inittab执行进程 第34章 自动RCS 第35章 带颜色的/proc报告 第36章 口令老化通知 36.1 脚本初始化 36.2 开始处理 36.3 确定口令年龄 第37章 伪shadow文件 第38章 搭建Linux金...

    注册表批量修改权限命令

    使用此工具可查找权限漏洞。 AdExplorer Active Directory Explorer 是一个高级的 Active Directory (AD) 查看器和编辑器。 AdInsight 一种 LDAP(轻型目录访问协议)实时监视工具,旨在对 Active Directory 客户端...

    调试开发工具集

    使用此工具可查找权限漏洞。 AdExplorer Active Directory Explorer 是一个高级的 Active Directory (AD) 查看器和编辑器。 AdInsight 一种 LDAP(轻型目录访问协议)实时监视工具,旨在对 Active Directory 客户端...

    Hadoop硬实战 [(美)霍姆斯著][电子工业出版社][2015.01]_PDF电子书下载 带书签目录 高清完整版.rar )

    3 数据序列化――处理文本文件及其他格式的文件 3.1 了解MapReduce 中的输入和输出 3.1.1 数据输入 3.1.2 数据输出 3.2 处理常见的序列化格式 3.2.1 XML . 技术点12 MapReduce 和XML 3.2.2 JSON...

    SysinternalsSuite

    使用此工具可查找权限漏洞。  AdExplorer  Active Directory Explorer 是一个高级的 Active Directory (AD) 查看器和编辑器。  AdInsight  一种 LDAP(轻型目录访问协议)实时监视工具,旨在对 Active Directory...

    Windows Sysinternals Suite v2019.06.29.zip

    使用此工具可查找权限漏洞。 AdExplorer Active Directory Explorer 是一个高级的 Active Directory (AD) 查看器和编辑器。 AdInsight 一种 LDAP(轻型目录访问协议)实时监视工具,旨在对 Active Directory ...

    sysinternals 工具集合 (20090226版)

    它将所有与文件一切相关操作(如读取、修改、出错信息等)全部记录下来以供用户参考,并允许用户对记录的信息进行保存、过滤、查找等处理,这就为用户对系统的维护提供了极大的便利。  NTFSInfo  怎样得到你自己...

    Hadoop实战(第2版)

    11.2.1 加载数据技术点67 加载Apache 日志文件11.2.2 过滤和投影技术点68 通过过滤和投影减少数据处理量11.2.3 分组和聚合UDF 技术点69 IP 地址的分组和计数 11.2.4 使用UDF 进行定位技术点70 使用...

    微软Sysinternals Suite工具包 2018.12.18 官方版.zip

    使用此工具可查找权限漏洞。AdExplorer Active Directory Explorer 是一个高级的 Active Directory (AD) 查看器和编辑器。 AdInsight 一种 LDAP(轻型目录访问协议)实时监视工具,旨在对 Active Directory ...

    自己动手写搜索引擎(罗刚著).doc

    4.1.4 网页结构相似度计算 63 4.1.5 正文提取的工具FireBug 64 4.1.6 正文提取的工具NekoHTML 66 4.1.7 正文提取 68 4.2 从非HTML文件中提取文本 73 4.2.1 TEXT文件 73 4.2.2 PDF文件 73 4.2.3 Word文件 82 4.2.4 ...

    Sysinternals 微软系统监控实用工具

    使用此工具可查找权限漏洞。 AdExplorer v1.2(2009 年 4 月 22 日) Active Directory Explorer 是一个高级的 Active Directory (AD) 查看器和编辑器。 AdInsight v1.01(2007 年 11 月 20 日) 一种 LDAP(轻型...

    学籍管理系统软件设计说明书

    他与文件系统的重要区别是数据的充分共享,交叉访问,与应用程序的高度独立性。 由于本软件的整体结构比较简单,所涉及数据相对来说也较少,组成文件的最小单位是记录。 3.11.2 操作 a. 初始化操作; b 数据处理...

    python入门到高级全栈工程师培训 第3期 附课件代码

    02 并发并行与同步异步的概念 03 GIL的概念 04 同步锁 05 递归锁 06 同步对象event 07 信号量 08 线程队列 09 生产者消费者模型 10 多进程的调用 第35章 01 进程通信 02 进程池 03 协程 04 事件驱动模型 05 IO模型...

    数据库系统实现

    5.2.2 网格文件的查找 5.2.3 网格文件的插入 5.2.4 网格文件的性能 5.2.5 分段散列函数 5.2.6 网格文件和分段散列的比较 习题 5.3 多维数据的类树结构 5.3.1 多键索引 5.3.2 多键索引的性能 ...

    黑白棋java源码-dsc-word-count-with-map-reduce-lab:dsc-word-count-with-map-re

    使用Spark和MapReduce框架完成一个全并行字数统计问题 MapReduce 任务 这是我们的问题: 我们有一个巨大的文本文件 我们需要计算每个不同单词在文档中出现的次数 示例应用: 分析 Web 服务器日志以查找流行的 URL ...

    黑白棋java源码-dsc-word-count-with-map-reduce-lab-online-ds-sp-000:dsc-word-

    使用Spark和MapReduce框架完成一个全并行字数统计问题 MapReduce 任务 这是我们的问题: 我们有一个巨大的文本文件 我们需要计算每个不同单词在文档中出现的次数 示例应用: 分析 Web 服务器日志以查找流行的 URL ...

    SQLServer2008查询性能优化 2/2

    4.3.2 与非聚簇索引的关系 110 4.3.3 聚簇索引建议 112 4.4 非聚簇索引 117 4.4.1 非聚簇索引维护 117 4.4.2 定义书签查找 117 4.4.3 非聚簇索引建议 118 4.5 聚簇索引vs.非聚簇索引 118 4.5.1 聚簇索引相...

Global site tag (gtag.js) - Google Analytics