售前元曜元曜集算器_第1页
售前元曜元曜集算器_第2页
售前元曜元曜集算器_第3页
售前元曜元曜集算器_第4页
售前元曜元曜集算器_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、元曜集算器元曜集算器是什么集算器一种程序设计语言专注于(半)结构化数据计算与处理面向应用程序员和数据分析员适合业务规则复杂的多步骤运算支持并行集群大数据计算超越SQL,Java,Perl/Python,R的开发效率业务复杂性数据多样性容量和性能为什么需要元曜集算器容量和性能数据多样性业务复杂性复杂业务逻辑到程序代码的转换耗时长,对人员要求高敏捷语法及内置数据对象降低算法实现复杂度,开发效率超越其它语言(SQL,java,perl/python,R)异构数据库,文件,HDFS,NOSQL,结构化与半结构化数据,无法利用数据库计算能力完备的自有计算能力支持各类数据源的混合计算数据量大,并发多,数据

2、库IO吞吐率不足内存计算、并行集群、外置数据提高整体性能元曜集算器的优势敏捷语法与内置数据对象1伪实代码比例约1:1.5,远超Java等高级语言多样性数据支持2SQL,NOSQL,HDFS,TXT,XLS,JSON,XML,并行大数据计算3支持TB级数据计算,支持廉价PC集群高性能4接近甚至超过关系数据库,数倍于HIVE方案优秀的集成性5标准JDBC接口,无缝嵌入应用程序目录3结构与应用模式2高性能并行计算4对比技术与理解1高效的开发工具敏捷语法体系某支股票最长连续涨了多少交易日1select max(连续日数)2from (select count(*) 连续日数3from (select

3、sum(涨跌标志) over(order by 交易日) 不涨日数4from (select 交易日,5case when 收盘价lag(收盘价) over(order by 交易日)6then 0 else 1 end 涨跌标志7from 股价表) )8group by 不涨日数)SQLA1=股价表.sort(交易日)2=03=A1.max(A2=if(收盘价收盘价-1,A2+1,0)集算脚本思考:按照自然思维怎么做?元曜集算器快速完成从商业逻辑到程序代码的转换基于自然思维过程书写成代码,无须更换思路完成同样计算比JAVA和SQL短数倍网格代码天然分步、层次清晰、直接引用单元格名无需定义变量

4、与一般文本式代码不同,元曜集算器的代码写在网格中丰富的函数库分组、循环排序、过滤集合运算有序集合特别针对二维结构化数据表设计易于开发调试执行、调试执行、单步执行设置断点网格结果所见即所得,易于调试;方便引用中间结果语法简单,符合自然思维,比SQL和Java更简单多样性数据支持SQL DBFile/HDFSNoSQL DB元曜集算器各种关系数据库MongoDB,Cassandra等NoSQL数据库文件计算,常见文本格式无缝访问HDFS结构化和半结构化数据数据回写到DB和FileSQL对比计算每个月的销售额都在前10名的客户select Client from( select * from( se

5、lect B.*,row_number() over(partition by month order by SumValue desc) rown from( select to_char(SellDate,mm) month,Client,sum(Quantity*Amount) SumValue from contract where SellDate=to_date(2012-01-01,yyyy-mm-dd) and SellDate=to_date(2012-12-31,yyyy-mm-dd) group by to_char(SellDate,mm),Client order b

6、y month,client ) B )C where rown=to_date(2012-01-01,yyyy-mm-dd) and SellDate=1.1 AND lag(rising_range) OVER(PARTITION BY salesMan ORDER BY month)=1.1 AND lag(rising_range,2) OVER(PARTITION BY salesMan ORDER BY month)=1.1 THEN 1 ELSE 0 END is_three_consecutive_month FROM A) SELECT DISTINCT salesMan F

7、ROM B WHERE is_three_consecutive_month=1SQL:没有集合数据类型,相关的计算要通过复杂的子查询实现元曜集算器: 支持显式集合,提供针对数据库复杂计算的相对位置、序号引用、分组后计算等功能,可以极大的简化计算步骤SQL对比每个销售员每个月比上个月的合同额的增长率with A as( select actualSale,Quantity*Amount sales,sellDate from contract),B as( select actualSale,TO_NUMBER(to_char(SellDate,yyyy) year, TO_NUMBER(to

8、_char(SellDate,mm) month, sum(sales) salesMonth from A group by actualSale,TO_NUMBER(to_char(SellDate,yyyy) , TO_NUMBER(to_char(SellDate,mm) order by actualSale,year,month),C as( select actualSale,year, month, salesMonth, lag(salesMonth,1,0) over(order by actualSale,year,month) prev_salesMonth, lag(

9、actualSale,1,0) over(order by actualSale) prev_actualSale from B)select actualSale,prev_actualSale,year, month, (case when prev_salesMonth!=0 and actualSale=prev_actualSale then (salesMonth/prev_salesMonth)-1) else 0 end)LRR from C SQL:数据无序。只能用复杂的脚本间接实现有序计算元曜集算器:彻底支持有序计算,轻松解决和顺序有关的难题。可以方便地进行排序、排名、取前

10、几名,比上期、同期比等运算目录13高效的开发工具结构与应用模式2高性能并行计算4对比技术与理解并行物理结构单节点多线程并行无中心多节点并行充分利用多CPU核,适应硬件扩容(Scale-up)天然避免单点失效,易于横向扩展(Scale-out)并行逻辑过程sub.dfxsub.dfxsub.dfxmain.dfxDB/DWHDFSLocal File智能资源分配可控任务分配程序员指定节点使用范围有效利用资源并实施优化策略节点选择与容错在指定范围内寻找最闲的可用节点发生错误后会自动更换可用节点支持冗余数据提高可靠性及稳定性能数据共享与交换节点内数据共享多线程共享全程常量和归并目标私有任务空间避免并

11、发任务冲突节点间数据交换小结果集可以直接内存交换大结果集支持外存文件缓存根据任务特点平衡容错与性能并发小任务采用内存获得高性能单独大任务采用外存得到可靠性并行举例 多线程分组AB1=”/usr/data/sales.txt”/销售记录文件24/任务数3=file(A1).cursorpt()4=callx(“sub.dfx”,A2*A3)/使用集合参数调用子程序5=A4.merge(e_id).groupso(e_id;sum(amount):amount)/归并后再汇总AB1=cs.groups(e_id;sum(amount):amount)/分组汇总2result A1/返回结果集直接返

12、回内存小结果集main.dfxsub.dfxAB1=”/usr/data/sales.txt”/销售记录文件24/任务数3=file(A1).cursorpt()4=callx(“sub.dfx”,A2*A3)/使用集合参数调用子程序5=A4.merge(e_id).groupso(e_id;sum(amount):amount)/归并后再汇总并行举例 多机排序AB1=4.(”/usr/data/sales”+string()+”.txt”)/销售记录文件组2=callxa(“sub.dfx”,A1;“01:281”,”02:281”,”192.16

13、8.1.203:281”,”04:281”)/使用集合参数调用子程序3=A2.mergex(-amount)/归并成新游标4=file(“/usr/data/result.txt”).exportt(A3)/写入结果文件AB1=file(filename).cursorpt()/产生游标2=A1.sortx(-amount)/排序产生新游标3result A2/返回结果使用游标返回外存大结果集main.dfxsub.dfxAB1=4.(”/usr/data/sales”+string()+”.txt”)/销售记录文件组2=callxa(“sub.dfx”,A1;“192.

14、168.1.201:281”,”02:281”,”03:281”,”04:281”)/使用集合参数调用子程序3=A2.mergex(-amount)/归并成新游标4=file(“/usr/data/result.txt”).exportt(A3)/写入结果文件并行举例 多机连接AB1hdfs:/00/data/sales.txt/销售记录文件2hdfs:/00/data/product.txt/产品信息表3“01:281”,”02:281”/

15、节点机48/任务数5callxa(“load.dfx”,A2;A3)/节点机读入产品信息表6=file(A1).size()/文件大小7=A4.(long(A6*)/A4)/分块结束位置8=0|A7.to(,A4-1)/分块起始位置9=callx(“sub.dfx”,A1,A8,A7;A3)/使用集合参数调用子程序连接并分组10=A9.merge(type).groupso(type;sum(amount):amount)/归并成新游标AB1=file(filename).cursorpt(;”,”,start:end)/根据参数产生游标2=A1.switch(prod,prod)/连接到产品

16、表3=A2.groups(prod.type:type;sum(amount):amount)/使用连接结果分组并汇总4result A3/返回结果AB1=file(filename).importpt()/加载产品表2prod=A1.primary(p_id).index()/生成索引3result 0main.dfxload.dfxsub.dfx性能测试数据 单机分组硬件Dell Power Edge T610, CPU Intel Xeon E5620*2, RAM 20G, HDD Raid5 1T软件CentOS 6.4, JDK 1.6, Oracle 11g,元曜集算服务器 3.

17、1数据100 columns,69M rows,80GORACLE性能超过单线程元曜集算器,其并行选项在大数据量时无效借助并行计算,元曜集算器的运算性能已经达到甚至超过ORACLE元曜集算器还可以使用列存方式存储数据,在并行支持下将获得数量级的性能提高单位:秒性能测试数据 单机连接硬件Dell Power Edge T610, CPU Intel Xeon E5620*2, RAM 20G, HDD Raid5 1T软件CentOS 6.4, JDK 1.6, Oracle11g, 元曜集算服务器 3.1数据T: 100 columns,69M rows,80G;D: 100 columns,

18、10M rows,12.7G运算形式复杂化后,并行后的元曜集算器的性能优势更为明显,在单机使用多线程已超过ORACLE单位:秒 性能测试数据 集群分组硬件4 PCs, CPU Intel Core i5 2500, RAM 16G, HDD 2T/7200rpm, LAN 1000M软件CentOS 6.4, JDK 1.6, CDH5.0beta, 元曜集算服务器 3.1, 数据106 columns,60M rows, 127.9G由于元曜集算器可采用内存交换数据,表现优于同样采用内存机制的Impala元曜集算器可采用比HDFS更有效的外存方案,比基于MapReduce的Hive有更好的性

19、能单位:秒性能测试数据 集群连接硬件4 PCs, CPU Intel Core i5 2500, RAM 16G, HDD 2T/7200rpm, LAN 1000M软件CentOS 6.4, JDK 1.6, CDH5.0beta, 元曜集算服务器 3.1, 数据T: 106 columns, 60M rows, 127.G D: 102 columns, 10M rows, 6.8G计算强度加大后,可能是Impala的本地化代码机制开始起作用,与解释执行的元曜集算器之间缩小了差距但对于同样解释执行的Hive,差距则更大了单位:秒目录1高效的开发工具2高性能并行计算3结构与应用模式4对比技术

20、与理解产品构成IDEServerCommand LineJDBC为应用程序提供调用接口命令行,可配置定时任务独立的计算服务器,无需应用服务器集成开发环境,独立使用集算器纯JAVA产品跨平台易于集成部署开放性集成性独立应用模式IDEDB/DWHDFSLocal File数据源Command Line典型应用场景:交互数据分析、离线数据处理集成应用模式DB/DWHDFSLocal File数据源JDBC应用程序浏览器典型应用场景:报表数据源准备JDBC使用/建立连接Class.forName(com.esproc.jdbc.InternalDriver);con= DriverManager.ge

21、tConnection(jdbc:esproc:local:/);/调用存储过程,其中dfxName是dfx的文件名st =( com. esproc.jdbc.InternalCStatement)con.prepareCall(call dfxName(?);/设置参数st.setObject(1,3);/执行存储过程st.execute();/获取结果集ResultSet set = st.getResultSet();/类似存储过程的调用方式用作报表工具的数据源集算脚本BIRTcom.esproc.jdbc.InternalDriver集群应用模式Server1Server2Serve

22、r3服务器HDFSLocal File数据源JDBC应用程序浏览器典型应用场景:多并发查询报表平台目录1高效的开发工具2高性能并行计算4对比技术与理解3结构与应用模式元曜集算器与程序设计语言元曜集算器不是面向对象语言,没有继承重载概念简单易于理解,环境轻松易于上手强大的数据对象可应对各类(半)结构化计算不能开发完整应用,只处理计算环节元曜集算器面向应用程序员而非系统程序员程序员可更专注于业务理解而非技术实现不能用于开发系统和工具软件元曜集算器是用JAVA解释执行的动态语言JAVA的集成性和开放性+动态语言的敏捷性理论上不会比JAVA性能更好,但超过其它动态语言类库+并行使普通程序员获得高性能元

23、曜集算器与perl/python元曜集算器与perl/python语言都有敏捷的语法体系,支持函数语法,有强大的过程控制能力,能方便地处理数据库外的半结构化数据perl/python缺乏针对结构化数据的基本数据对象和类库,编写结构化后的数据计算要比元曜集算器繁琐得多,而这是商业计算中最常见的数据类型perl/python在字串处理和系统控制方面的类库更为丰富,适合实现语法分析等专门算法;更适合于专业计算机程序人员perl/python的并行计算机制更为底层,可实现更深入的控制,但对程序员的要求要高得多,完成一般性的大数据并行计算远没有元曜集算器方便简易perl/python一般是独立使用,不用

24、于集成;元曜集算器则两种情况都能很好支持元曜集算器与perl/python元曜集算器perl/python敏捷语法有有结构化数据对象强弱文本分析一般强应用模式独立或集成独立并行机制简易复杂面向人群商业应用程序员专业计算机程序员元曜集算器与R语言元曜集算器与R语言都有类似的敏捷语法和强大的集合运算,能够高效率地完成数据计算方面的开发任务R语言为统计分析而设计,提供了丰富的数学函数库,适合完成带有复杂数学模型的算法;而元曜集算器更专业于结构化数据的商业计算,数据库类的计算更为流畅R语言主要面向独立工作的数据科学家,集成性不强;元曜集算器有很好的集成性,可以轻松集成到用户的应用程序中R语言的库函数性能很好,但自编循环代码的执行性能非常差,比perl/python/元曜集算器(这几个基本相当)能差出一个数量级,对大数据量的遍历计算缺乏实用性。R语言本身没有并行机制,需要借助其它手段实现大数据计算,使用繁琐;元曜集算器内置了分布式并行计算机制,能够直接完成大数据计算元曜集算器与R语言元曜集算器R语言敏捷语法与集合运算有有应用场景结构化数据的商业计算复杂数学模型计算集成性强弱

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论