1. 程式人生 > >大資料分析平臺搭建教程:基於Apache Zeppelin Notebook和R的互動式資料科學

大資料分析平臺搭建教程:基於Apache Zeppelin Notebook和R的互動式資料科學

介紹

這篇文章的目的是幫助您開始使用 Apache Zeppelin Notebook,它可以滿足您用R做資料科學的需求。Zeppelin 是一個提供互動資料分析且基於Web的筆記本。方便你做出可資料驅動的、可互動且可協作的精美文件,並且支援多種語言,包括 Scala(使用 Apache Spark)、Python(Apache Spark)、SparkSQL、 Hive、 Markdown、Shell等等。

然而,最新的官方版本是0.5.0,還不支援R程式語言。幸運的是,NFLabs公司做了個開源專案,讓我提供了一個R的編譯器。這個編譯器是讓使用者可以使用自定義的語言做為資料處理後端的一個 Zeppelin 外掛。例如在 Zeppelin 使用scala程式碼,您需要一個 Spark編譯器。所以,如果你像我一樣有足夠的耐心將R整合到Zeppelin中, 這個教程將告訴你怎樣從原始碼開始配置 Zeppelin和R。

準備工作

  • 我們將通過Bash shell在Linux上安裝Zeppelin。如果您使用的是Windows作業系統,我建議您安裝和使用Cygwin終端(它提供功能類似於Windows上的Linux發行版)。

  • 確保 Java 1.7 和 Maven 3.2.x 是已經安裝並且配置到環境變數中。

從原始碼構建 Zeppelin

第一步:下載 Zeppelin 原始碼

在我的例子中我已經下載並解壓資料夾在我的桌面

第二步:構建 Zeppelin

假設你是安裝在單機,開啟你的Terminal,執行下面的程式碼。如果你是安裝在一個叢集,會稍微複雜一點,具體步驟 Zeppelin 的文件

中找到。

$ cd Desktop/Apache/incubator-zeppelin-rinterpreter
$ mvn clean package -DskipTests

這將需要約16分鐘構建Zeppelin、Spark,所有引擎包括R,markdown,shell,hive等。(見下圖)。

第三步:啟動 Zeppelin

執行以下命令啟動Zeppelin:

$ ./bin/zeppelin-daemon.sh start


開啟web瀏覽器,訪問http://localhost:8080。此時,您已經準備好開始在 Zeppelin 用程式碼建立互動筆記本。

互動式資料科學

第一步:建立一個筆記本

單擊下拉箭頭旁邊的“筆記本”頁面,點選“建立新報告”。

給你的筆記本命名或您可以使用指定的預設名稱。我命名為“Base R in Apache Zeppelin”。

第二步:開始你的分析

如下圖所示,呼叫R可以用“%spark.r”或“%spark.knitr”標籤。首先讓我們用 markdown 寫一些介紹。

根據我們可能需要我們的分析,現在讓我們來安裝一些包。

我們將使用“flights”資料集顯示2013年離開紐約的航班,現在讓我們讀取資料集。

現在,讓我們使用dplyr(用管道符)做一些資料操作。

您還可以使用條形圖和餅圖來視覺化一些描述性統計資料。

現在,讓我們與ggplot2共舞。

現在,讓我們用caret包做一些統計的機器學習。

最後,繪製幾個地圖。

結束語

Zeppelin 幫助您使用多種程式語言建立互動式文件和美麗的圖表。這篇文章的目的是幫助你配置 Zeppelin 和 R。希望這牛逼的的專案管理委員會(PMC)的開源專案可以用R引擎釋出下一個版本。到時候安裝 Zeppelin肯定會更快更方便,而不必從原始碼構建。

你可以嘗試著兩個編譯器,然後然後在下面的評論區分享一下你的使用體驗。

Data Layer提供的編譯器

RCharts

Rchats Map

GoogleViz

Scala R Binding

R Scala Dataframe Binding

SparkR

用Docker映象部署

為了您的方便, Datalayer 為Apache Zeppelin 提供了一個最新的 Docker映象。你可以通過執行下面的命令來獲取映象

docker pull datalayer/zeppelin-rscala

Run the Zeppelin notebook with:

docker run -it -p 2222:22 -p 8080:8080 -p 4040:4040 datalayer/zeppelin-rscala

現在,你可以去http://localhost:8080測試這個R教程筆記了。

展望

作為後續這篇文章中,我們將看到在 Zeppelin 中如何使用 Apache Spark(尤其是SparkR)。

更新

此小節由於原文有可能變動,故不作翻譯,望讀者原諒,可以直接訪問原文檢視最新的更新情況。

作為分享主義者(sharism),本人所有網際網路釋出的圖文均遵從CC版權,轉載請保留作者資訊並註明作者 Harry Zhu 的 FinanceR專欄:https://segmentfault.com/blog/harryprince,如果涉及原始碼請註明GitHub地址:https://github.com/harryprince。微訊號: harryzhustudio
商業使用請聯絡作者。