- 大數據分析:R基礎及應用
- 深圳國泰安教育技術股份有限公司
- 1760字
- 2021-03-19 19:26:18
2.4 大數據分析與R
隨著大數據時代的到來,大量來自互聯網、金融、生物等領域的數據需要分析處理。Hadoop的分布式數據處理模式讓原來不可能的TB、PB級數據量計算成為了可能,而R語言的強大之處在于其統計分析功能,但是對于大數據的處理,R受到內存和性能方面的限制,只能通過抽樣進行計算分析。為了克服這一不足,使得R能夠有效地處理大數據,RHadoop應運而生。RHadoop是由Revolution Analytics公司發起的一個開源項目,它使得Hadoop集群上存儲在Hadoop分布式文件系統中的數據可以實現本地R分析,并對這些計算結果進行整合,這一舉措使得大規模數據得到了有效的管理,同時充分利用了R強大的數據分析功能。由此可以看出,這兩種技術的結合既是產業界的必然導向,也是產業界和學術界的交集,更為交叉學科的人才提供了無限廣闊的想象空間。
2.4.1 RHadoop
RHadoop包含三個R包:rhdfs、rmr及rhbase,它們分別對應Hadoop架構中的HDFS、MapReduce和HBase三個部分。RHadoop的三個包為R進行大數據的分析操作提供了以下功能:
rhdfs包的主要功能是調用HDFS API對存儲在HDFS上的數據進行操作,使得R對分布式數據文件的操作變得更加簡便。
rmr包為R提供了Hadoop MapReduce功能,在R上需要將程序分成兩個階段(Map階段和Reduce階段),然后調用rmr實現任務的提交,進而調用Hadoop streaming的MapReduce API,從而在集群上分布式地實現R MapReduce程序,完成R對大數據的分析操作。
rhbase包為R提供了HBase數據庫管理功能,在R環境中實現對HBase中數據的讀寫查詢等操作。
1.Rhdfs包的基本操作函數
●hdfs.init:初始化rhdfs,該操作的語法為hdfs.init()。
●hdfs.defaults:獲得rhdfs的默認設置,該操作的語法為hdfs.defaults ()。
●hdfs.put:從本地文件系統復制文件到HDFS系統中。例如將存放于本地文件系統中的sample.txt文件復制到HDFS中,操作如下:
hdfs.put('/local/hadoop/sample.txt','/RHadoop/first')
●hdfs.copy:從HDFS目錄復制文件到本地文件系統,例如:
hdfs.copy('/RHadoop/first','/RHadoop/second')
●hdfs.move:移動文件,將文件從HDFS文件夾移動到另一個HDFS文件夾中,例如:
●hdfs.move('/local/hadoop/sample.txt','/RHadoop/first')
●hdfs.rename:重命名文件,在R環境中重命名存儲在HDFS中的文件,例如:
hdfs.rename('/RHadoop/first/ sample1.txt',' /RHadoop/first/ sample2.txt')
●hdfs.delete/ hdfs.rm/hdfs.rmr:在R中將HDFS中的文件或文件夾刪除,例如:
hdfs.delete('/RHadoop')
●hdfs.chmod:修改文件權限,例如:
hdfs.chmod('/RHadoop',permissions="777")
●hdfs.file:初始化文件,使得在HDFS中的文件能夠進行讀寫操作,例如:
F=hdfs.file('/Rhadoop/first/sample.txt',mode="r",buffersize=5242880,overwrite=TRUE)
●hdfs.write:寫入文件,將R對象通過streaming寫入存儲在HDFS中的文件,語法為hdfs.write(object,con,hsync)。
其中,object為寫入磁盤的R對象,con為已初始化能夠進行讀寫操作的文件。如果參數hsync設置為TRUE,那么寫入對象后該文件將被同步。
●hdfs.close:關閉讀寫流,關閉后不能對文件進行讀寫。例如,關閉初始化的HDFS文件F,hdfs.close(F)。
●hdfs.read:從HDFS中的文件讀取文件內容,語法為:hdfs.read(con,n,start)。
其中,con為已初始化能夠進行讀寫操作的文件,n為所讀取的字節數,start為開始讀取的位置,默認為當前位置。
●hdfs.dircreate/hdfs.mkdir:創建文件夾,用于在HDFS中創建文件夾,例如:
hdfs.dircreate("/Rhadoop/1/")
●hdfs.ls:將HDFS中的文件夾內容列出來,例如:
hdfs.ls("/tmp")
●hdfs.file.info:獲取HDFS文件的元信息,例如:
hdfs.file.info("/tmp")
2.rmr包的基本操作函數
●to.dfs:向HDFS文件系統中寫入R對象。
●from.dfs:從HDFS文件系統中讀取R對象。
●mapreduce:定義、執行MapReduce任務,函數語法如下:
mapreduce(input,output,map,reduce,combine,input.format,output.format,verbose)
●keyval:創建、提取鍵值對,函數語法為keyval(key,val)。
2.4.2 RHIPE
RHIPE(R and Hadoop Integrated Programming Environment,Hadoop和R集成編程環境)是一種R和Hadoop的結合技術,使用Divide和Recombine技術實現大數據分析。RHIPE在R和Hadoop之間充當橋梁的作用,它使得R分析大規模數據得以實現,可以在R上操作MapReduce程序。
2.4.3 RHive
RHive是一款通過R語言直接訪問Hive的工具包,是由NexR公司研發的。通過使用RHive可以在R環境中寫HQL(HiveQL),將R的對象傳入到hive中,在hive中進行計算。在RHive中小數據集在R中執行,大數據集在hive中運行。
RHive的一些基本操作如下:
●rhive.init:初始化Rhive,語法為rhive.init()。
●rhive.connect:連接hive服務器,例如:
rhive.connect("192.168.85.105")
●rhive.list.tables:列出所有的表,語法為rhive.list.tables()。
●rhive.desc.table:查看某個表的結構,例如:
rhive.desc.table('hivetable')
●rhive.query:執行HQL查詢操作,例如:
rhive.query("select * from hivetable")
●rhive.close:斷開與hive服務器的連接,語法為rhive.close()。
2.4.4 RHBase
RHBase依賴于Hadoop、HBase和Thrift,通過RHBase可以實現從HBase將數據加載到R中,包括新建或刪除表、顯示表結構、讀取或插入數據等操作。
RHBase的一些基本操作:
●hb.list.tables:列出所有HBase表,語法為hb.list.tables()。
●hb.new.table:創建HBase表,例如:
hb.new.table("hbasetable")
●hb.describe.table:顯示表結構,例如:
hb. describe.table("hbasetable")
●hb.get:讀取表中的數據,例如讀取hbasetable表中行關鍵字為1001的字段:
hb.get("hbasetable","1001")
●hb.insert:向表中插入數據,語法為:
hb.insert(tablename,changes)
其中,tablename為需要插入數據的HBase表,changes為插入的字段內容,為列表的形式。
●hb.delete.table:刪除HBase表,例如刪除表hbasetable:
hb.delete.table("hbasetable")
●hb.delete:刪除表中的字段,例如刪除表hbasetable中行關鍵字為1001的字段:
hb.delete("hbasetable","1001")