上世紀60年代,大型機被引入學術領域與企業。從那時至今,統計分析一直存在。
然而,當今系統收集的遙測數據類型變得多種多樣,並且為了深入理解,需要對數據進行過濾;同時,開源應用變得越來廣受歡迎,這一切都在改變著 R 這一用於統計分析與可視化的語言。R 還有一個別名:統計領域的紅帽子。
所有人都喜歡 R 語言,尤其是大數據產品銷售商,比如數據倉庫與 Hadoop 數據過濾器。部分原因在於,R 作為開源語言吸引了大量的統計學家與定量分析師,由這些聰明人構成的社區能夠引領該語言開發。
字母語言的盛宴
對於美國賽仕研究所(SAS Institute)開發的專有工具和大型機時代肇始之初的 SPSS 統計軟件,以及它們在分布式計算時代的後繼產品,情況並非如此。
正如可將 Linux 視為 Unix 的開源式模仿,R 編程語言大量借鑒了 S 語言。S 語言由貝爾實驗室的約翰·錢伯斯(John Chambers)於 1976 年創建,而在此十幾年前出現的 SPSS 和 SAS 工具,令人尊敬但價格昂貴。S 語言的出現是對其作出的反擊。在很大程度上,S 語言可以看作 VAX 與 Unix 小型計算機時代的產物,而 R 語言是 PC 與 Linxu 時代的果實。
1996 年,羅斯·艾卡(Ross Ihaka)和羅伯特·簡特曼(Robert Gentleman)共同創建了R 語言。這兩位來自新西蘭奧克蘭大學的統計學教授現在依然是 R 語言開發團隊的核心成員。(順便指出:S 語言的創建者錢伯斯也是該團隊的核心成員。某些用於 S 語言的數據處理線程不做任何更改即可在 R 語言環境中運行,並非巧合。)
R 語言可視為 S 語言的現代化實現。S-PLUS 語言也是如此。一家名為 Insightful 的公司在 2004 年從Lucent Technologies 公司獲得 S 語言授權,創建了 S-PLUS。Insightful 公司在 2008 年被 Tibco Software 公司收購。
革命來臨
與 S 以及一定程度上的擴展 S-PLUS 不同,R 並非是在象牙塔裡閉門造車而編寫出了的代碼。它是由統計學家與程序員構成的社區的產物,這一社區創建了 2500 多種插件,可處理各種各樣的數據,並針對特定數據類型或行業進行相應的統計分析。
根據 Revolution Analytics 公司的評估,在世界各地有 200 多萬定量分析師在使用 R 語言。該公司成立於 2007 年,提供了一種 R 語言的並行實現。從創始之初,該公司一直對 R 語言采取核心開源策略,為開源語言包提供支持,同時對 R 語言環境進行擴展,以便能夠在計算機集群更好地運行並與 Hadoop 集群進行協作。
時至今日,尚未有人對 SPSS (2009 年 7 月被 IBM 收購)的開源對應物 PSPP 進行商業化,不過,毫無疑問,隨著 PSSP 的成熟, 將會看到商業化的那一天到來。
Revolution Analytics 公司在 2008 年從 Intel Capital 獲得了一些種子資金,並於 2009 年獲得 900 萬美元的風險投資,之後該公司開始在其 R Enterprise 產品中推廣 R 專有擴展。該公司的這一策略並不僅僅是令 R 語言社區感到滿意。從那時起,Revolution Analytics 開始對底層 R 統計引擎進行並行化處理,以便能夠在多核/多線程處理與服務器集群上更好的運行;增加 NoSQL 類格式 XDF,幫助對數據機進行並行化;同時增加對本地 SAS 文件格式以及轉化為 XDF 的支持。
不久以前,該公司對其 R 實現進行調整,以便 Hadoop 集群的每個節點都可以對 Hadoop 集群上存儲在 Hadoop 分布式文件系統中的數據進行本地 R 分析,並對這些計算的結果進行整合,類似 MapReduce 對非結構化數據的操作。
過去幾年裡,Revolution Analytics 公司從 R 社區裡獲得大量的營養。不過,其他公司也在做一些有趣的事情,將 R 工具集成至其自身的產品中,令從巨量數據中尋求答案的分析師的工作變得更加方便。
並行世界
Netezza 公司在2010 年 2 月開放 Netezza 軟件棧,其目的是為了在數據倉儲空間獲得競爭對手所沒有的某些優勢。Netezza 是一家數據倉儲應用制造商,其產品是基於高度定制及並行化的PostgreSQL 數據庫版本,利用 FPGA(現場可編程門陣列)提升在 x86 集群上的運行性能。
Netezza 利用一組 API 開發其軟件開發環境,這組 API 允許 SAS 和 R 算法在其倉儲應用中並行運行。同樣,它還為Java、C++、Fortran 和 Python 應用提供訪問數據倉庫的鉤子(hook),並利用 FPGA 而不是 SQL 數據庫查詢語言提取儲存在倉庫中的數據。
7 個月之後,當大數據將成為一個大市場這一趨勢更加清晰可見時,IBM 以 17 億美元的價格將 Netezza 收購。
2010 年 10 月,數據倉庫制造商 Teradata 利用 TeradataR 軟件包在其同名數據倉庫中增加了自己的數據庫內(in-database)分析。
這將 Teradata Warehouse Miner 工具轉變為 R 控制台的一個插件,可在 Teradata 數據中執行 44 種不同的分析函數,同時任何在數據倉庫中的存儲流程都對 R 開發並可從 R 程序調用。另有 20 個函數可讓 R 在 Teradata 環境中運行。
Oracle 的加入
甚至連 Oracle 也加入了 R 語言行動。2 月份,該公司推出Advanced Analytics 工具,作為 Oracle 數據庫與 R 分析引擎之間的橋接。
Advanced Analytics 是 Oracle 在其 11g R2 數據庫中部署的 Data Mining 附件。當 R 程序員需要運行統計例程時,他們可以在數據挖掘工具箱中調用等同的 SQL 函數,並在該數據庫中運行。
如果沒有這樣的 SQL 函數,遍歷數據庫節點(如果為集群)的嵌入式 R 引擎將運行 R 例程,收集匯總數據並作為結果將其返回 R 控制台。
另外,Oracle 為其 Big Data Appliance 提供了一個名為 R Connector for Hadoop 的工具,這是一個在 Oracle Exa x86 集群上運行的 Cloudera CDH3 Hadoop 環境。該連接器可讓 R 控制台與在 Big Data Appliance 上運行的Hadoop 分布式文件系統和NoSQL 數據庫進行通信。
(原文地址:http://os.51cto.com/art/201206/340645.htm)