天天看點

結構化大資料的幾種計算方法(二)

        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

         )e

WHEREround(e.salary_minus_fed_taxes) > 70000;

         Hive QL的缺點是不支援存儲過程,是以難以進行複雜計算,也就難以真正提供有價值的計算結果。稍複雜的計算它需要求助于MapReduce,開發效率很低。性能差,有門檻時間也是個緻命弱點,比如配置設定任務,或執行多表關聯計算、行間計算、多級子查詢、有序分組計算等算法時。是以很難實作實時的Hadoop大資料應用。

         也有其他産品支援類SQL,比如MongoDB,但比Hive尚有差距。

         大資料計算的方法不外乎API 、Script、SQL、類SQL這四類,希望它們更進一步,出現更多成本低廉、計算能力強的實用産品。

繼續閱讀