R作為開源的資料統計分析語言正潛移默化的在企業中擴大自己的影響力。 特有的擴展外掛程式可提供免費擴展,並且允許R語言引擎運行在Hadoop集群之上。 如今,Oracle的大資料方案中也出現了R語言包的身影。
R語言是主要用於統計分析、繪圖的語言和操作環境。 R本來是由來自紐西蘭奧克蘭大學的Ross Ihaka和Robert Gentleman開發。 (也因此稱為R)現在由「R開發核心團隊」負責開發。 R是基於S語言的一個GNU專案,所以也可以當作S語言的一種實現,通常用 S語言編寫的代碼都可以不作修改的在R環境下運行。 R的語法是來自Scheme。
R的原始程式碼可自由下載使用,亦有已編譯的可執行檔版本可以下載,可在多種平臺下運行,包括UNIX(也包括FreeBSD和Linux)、Windows和MacOS。 R主要是以命令列操作,同時有人開發了幾種圖形化使用者介面。
現在,統計工作者可利用R語言,R語言擅長在Hadoop分散式檔案系統中存儲的非結構化資料的分析。 R現在還可以運行在HBase這種非關聯式的資料庫以及面向列的分散式資料存儲之上。 其主要模仿了Google的BigTable。 這基本上等同于使用Hadoop來持有結構化資料的資料庫。 就像Apache軟體基金會Hadoop專案的子專案HBase一樣。 同時R已經可以與Cassandra
從Cassandra讀取資料
先覺條件是RJDBC模組,並且Cassandra版本至少在1.0或以上以及Cassandra JDBC驅動。 在以下示例中驅動和Cassandra位於同一目錄
The example code assumes you have run through the Portfolio Manager Demo that comes with DSC/DSE
#Load RJDBC library(RJDBC) #Load in the Cassandra-JDBC diver cassdrv <- JDBC("org.apache.cassandra.cql.jdbc.Cassandra Driver", list.files("/Users/jake/workspace/bdp/resources/cassandra/lib/",pattern="jar$",full.names=T)) #Connect to Cassandra node and Keyspace casscon <- dbConnect(cassdrv, "jdbc:cassandra://localhost:9160/PortfolioDemo") #Query timeseries data res <- dbGetQuery(casscon, "select * from StockHist limit 10") #Transpose tres <- t(res[2:10]) #Pl ot boxplot(tres,names=res$KEY,col=topo.colors(length(res$KEY))) title("BoxPlot of 10 Stock Price Histories")
而RCassandra包也是不錯的選擇
R、Cassandra和Hive
利用R訪問Hive和Cassandra,在這裡使用DataStax Enterprise,首先啟動Hive伺服器:dse hive –service hiveserver
#Load RJDBC library(RJDBC) #Load Hive JDBC driver hivedrv <- JDBC("org.apache.hadoop.hive.jdbc.HiveDriver", c( list.files("/Users/jake/workspace/bdp/resources/hadoop",pattern="jar$",full.names=T), list.files("/Users/jake/workspace/bdp/resources/hive/lib",pattern="jar$", full.names=T))) #Connect to Hive service hivecon <- dbConnect( hivedrv, "jdbc:hive://localhost:10000/default") #Create Hive table mapping to Cassandra ColumnFamily tmp <- dbSendQuery(hivecon,"create external table StockHist(row_key string, column_name string, value double) STORED BY 'org.apache.hadoop.hive.cassandra.CassandraStorageHandler' WITH SERDEPROPERTIES ('cassandra.ks.name' = 'PortfolioDemo')") #Run Hive Query to get returns hres <- dbGetQuery(hivecon,"select a.row_key ticker, AVG(( b.value - a.value)) ret from StockHist a JOIN StockHist b on (a.row_key = b.row_key AND date_add(a.column_name,10) = b.column_name) group by a.row_key order by ret") #Plot barplot(hres[,2],names.arg=hres[,1],col = topo.colors(length(hres[,2])), border = NA) title("Avg 10 Day Return for all Stocks")
結論
以上事例顯示出利用R訪問Cassandra資料是非常簡單的,而兩者的結合也為統計方法增加了強大的組合。