如何联合R与Hadoop更好处理大数据!
大數據時代,為了滿足用R語言處理PB量級數據的需求,聰明的人們發現了一種便捷的方法,即把已有的2種先進技術合二為一——聯合R與Hadoop,這樣,R便可擁有在分布式文件系統(HDFS)上處理大數據的能力!以下,大圣眾包威客平臺將提供聯合二者的3種方法的具體操作辦法。
一、使用RHadoop——在MapReduce模式下執行R函數
作為RevolutionAnalytics下的一個開源庫,RHadoop與Rhipe的功能相似——也是在MapReduce模式下執行R函數的。例如,想要連接R和HBase,則可以使用rhbase包中的函數,想要一些函數來連接R和分布式文件系統(HDFS),可以選擇rdfs包;想要一些讓R和Hadoop聯合作業的函數,可以考慮rmr包;想在Hadoop中對大數據集進行一些常用的數據整理操作,可以使用plyrmr包;等等。
以下,將會舉出一個使用rmr包中的函數讓R與Hadoop聯合作業的例子:
RHadoop需要對R進行一些設置,并且需要Hadoop集群上一些包的支持,而且RHadoop允許開發者在R函數中定義并調用MapReduce函數。這兩點上,與馬上將要說的第二種方法“使用Rhipe包”是一樣的。
二、使用Rhipe包——允許用戶在R中使用MapReduce
第二種方法是,讓Rhipe包允許用戶在R中使用MapReduce。值得注意的是,使用此方法,首先R需要被安裝在Hadoop集群中的每一個數據節點上,另外,每個節點還要安裝ProtocolBuffers,使得Rhipe在每個節點上都可以被使用。如果選擇此方法,比較麻煩的是相應的前期準備工作需要先做好。
以下,將會舉出在R中利用Rhipe包應用MapReduce框架的范例:
三、使用StreamingAPIs——安裝和設置均很方便
這是3種方法中最為簡單的一種。StreamingAPI能夠將R語言中的函數傳入,并在MapReduce模式下運行這些函數,是Hadoop的特點之一。而且,貼心的是,用戶并不需要額外開啟客戶端之類的東西,因為,這些StreamingAPI可以將任意能在MapReduce模式下訪問和操作標準I/O接口的R腳本傳入Hadoop中。不過,比較麻煩的是,在執行函數方面,StreamingAPIs需要將函數依次map和reduce。
請看以下例子:
條條大路通羅馬,以上3種方法只是眾多方法中比較簡單常用的,用戶其實也可以使用ApacheHive、ApacheMahout、Segue框架,與其他來自RevolutionAnalytics的商業版R來實現大規模的機器學習。希望以上的教程,能夠讓你在大數據業務中不斷前進。
總結
以上是生活随笔為你收集整理的如何联合R与Hadoop更好处理大数据!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql 索引效果是否叠加_MySQL
- 下一篇: 数据结构与算法--7.树的基础知识