您的位置:首页 > 大数据

结构化大数据的几种计算方法

2013-11-15 14:46 239 查看
转自: /article/2632276.html 任何数据都要通过计算来产生价值才有意义,大数据也一样。结构化大数据的计算能力的高低决定了大数据的实用性。 我总结了几种常见的计算方法:API 、Script、SQL、类SQL。 1、 API:这是指没有使用JDBC或ODBC,而是自成体系的API访问方法。以MapReduce为例,MapReduce从底层就是以廉价并行计算为设计目标的,所以它的横向扩展性最好,扩容时无需停机,成本最低。MapReduce是Hadoop的组件之一,代码开源,资料丰富。示例如下: publicvoid reduce(Text key, Iterator<Text> value, OutputCollector<Text,Text> output, Reporter arg3) throws IOException { double avgX=0; double avgY=0; double sumX=0; double sumY=0; int count=0; String [] strValue = null; while(value.hasNext()){ count++; strValue = value.next().toString().split("\t"); sumX = sumX +Integer.parseInt(strValue[1]); sumY = sumY +Integer.parseInt(strValue[1]); } avgX = sumX/count; avgY = sumY/count; tKey.set("K"+key.toString().substring(1,2)); tValue.set(avgX + "\t" +avgY); output.collect(tKey, tValue); } MapReduce使用的是通用编程语言,并不适合专业的数据计算,因此计算能力要比SQL等专业的计算语言低。它的开发效率同样低,“痛苦”是程序员对MapReduce开发过程的普遍感觉。另外死板的框架使MapReduce的性能也较差。 用API的产品还有很多,但MapReduce是其中最典型的。 2、 Script:这里的Script是指SQL之外的专业的计算脚本语言,以集算器为例,它除了具有廉价横向扩容能力外,计算能力强特别是异种数据源之间的计算方便、适合复杂计算等特点,也提高了Hadoop的能力。另外它使用的是网格脚本,调试方便。示例如下:


JAVA调用集算器的计算结果时要通过 JDBC,但只能以存储过程的形式调用,不能是任意的SQL语句,这是它的一大缺陷。不开源是它的另一个缺点。 MongoDB,Redis等很多大数据方案都使用了Script,但他们在计算方面不够专业。比如MongoDB的多表关联计算不仅运算效率低,而且代码复杂度太高。 3、 SQL:这里是指完整的SQL/SP,即ANSI 2000或其超集。以Greenplum为例,GreenplumSQL计算能力强,开发效率高,性能高,这是它最大的优势。其他优势包括语言通用性强,学习成本低,维护简单、有一定的移植可能性。当然,它还有个绝招:支持存储过程,可以进行复杂的计算,因此可以方便地从大数据中获得商业价值。示例如下:CREATE OR REPLACE functionview.merge_emp()returns void as $$BEGIN truncate view.updated_record; insert into view.updated_record selecty.* from view.emp_edw x right outer join emp_srcy on x.empid=y.empid where x.empid is not null; update view.emp_edw setdeptno=y.deptno,sal=y.sal from view.updated_record y where view.emp_edw.empid=y.empid; insert into emp_edw select y.* fromemp_edw x right outer join emp_src y on x.empid=y.empidwhere x.empid is null;end;$$ language 'plpgsql'; 类似的MPP架构的数据库还有Teradata、Vertical 、Oracle、IBM等,它们的语法特征大多相似。缺点也有相似性。它们的购买成本和后续维护成本极高。其中自称廉价的Greenplum实则价格不菲,它按数据规模收费,被称为披着BigData外皮的BigMoney。其他缺点包括:难以调试、语法不兼容、扩容时停机时间长、难以进行多数据源的计算等。
4、类SQL:这是指具有JDBC/ODBC等输出接口,但仅是标准SQL的子集的一类脚本语言。这里以Hive QL为例。开发方便的同时可以廉价横向扩容,这是Hive QL最大的优势。它具有SQL的语法特征,因此学习成本低,开发效率高,维护简单。另外Hive是Hadoop的组件,开源是它的一大优势。示例如下:SELECT e.* FROM ( SELECTname, salary, deductions["Federal Taxes"] as ded, salary* (1 – deductions["Federal Taxes"]) as salary_minus_fed_taxes FROMemployees )eWHEREround(e.salary_minus_fed_taxes) > 70000; Hive QL的缺点是不支持存储过程,因此难以进行复杂计算,也就难以真正提供有价值的计算结果。稍复杂的计算它需要求助于MapReduce,开发效率很低。性能差,有门槛时间也是个致命弱点,比如分配任务,或执行多表关联计算、行间计算、多级子查询、有序分组计算等算法时。因此很难实现实时的Hadoop大数据应用。 也有其他产品支持类SQL,比如MongoDB,但比Hive尚有差距。
大数据计算的方法不外乎API 、Script、SQL、类SQL这四类,希望它们更进一步,出现更多成本低廉、计算能力强的实用产品。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: