由於裝的sparkr是1.4版本的,老版本的很多函式已經不再適用了。
在2臺伺服器的組成的集群中測試了一版資料,熟悉下這個api的基本操作。
libpath <- .libpaths()
libpath <- c(libpath, "/home/r/spark/spark-1.4.0-bin-hadoop2.4/r/lib")
.libpaths(libpath)
rm(libpath)
library(sparkr)
#沒有預設找到變數 需單獨設定,也可以在sparkr.init()裡設定
sys.setenv(spark_home="/home/r/spark/spark-1.4.0-bin-hadoop2.4/")
#單主機啟動
sc <- sparkr.init()
#集群啟動
sc <- sparkr.init("spark://master機器ip:監聽埠")
#失效
# sc <- sparkr.init(sparkpackages="com.databricks:spark-csv_2.11:1.0.3")
sqlcontext <- sparkrsql.init(sc)
df <- createdataframe(sqlcontext, iris)
t <- head(summarize(groupby(df, df$species), count=n(df$sepal_length), m=sum(df$sepal_length)))
#讀取資料將其轉為json格式 以便sparkr讀取
pay.data <- read.table("/tmp/pay.dat", stringsasfactors = f, sep="\t")
names(pay.data) <- c("user", "money")
df.pay <- createdataframe(sqlcontext, pay.data)
#createdataframe函式在原始data.frame很大時基本被huang住,不知道是什麼原因
# json <- tojson(pay.data[i, ])
write.table(json, file="/tmp/1.json", col.names = f,
write.table(josn1, file="", col.names = f, row.names=f, quote = f)
pay1.json <- read.df(sqlcontext, "/home/r/spark/spark-1.4.0-bin-hadoop2.4/examples/src/main/resources/people.json",
"json")
#預設只支援預設只支援json和parquet 格式檔案,檔案需要在work伺服器上
pay.json <- read.df(sqlcontext, "/tmp/1.json",
"json")
pay.json$money1 <- cast(pay.json$money, "double")
#將資料按帳號匯**計後排序 輸出
pay.account <- agg(groupby(pay.json, pay.json$user), money=sum(pay.json$money1),
num=n(pay.json$user))
pay.account1 <- arrange(pay.account, desc(pay.account$money), desc(pay.account$num))
write.df(pay.json, "/tmp/account1", "json")
分組統計了500w+的充值資料 並且排序後寫成json檔案到磁碟 時間是22s+,比ddply要快,4700w耗時約26s,再大的資料暫時沒有統計了。
理解的很粗淺,sparkr適用於r無法統計的大批資料的預處理,可以將簡單預處理的彙總資料返回給r加以建模分析。其他還有待後續深入了解。
參考:1)簡單介紹
2)常用函式
vim基本操作 1
第一課 1.移動游標 h 左移 j 下移 k 上移 l 右移 2.退出vim q 不儲存,強制退出 先按esc確保處於正常模式 wq 儲存後退出 3.刪除字元 x 刪除游標所在字元 4.插入文字 i 在正常模式下,按i鍵,在游標前插入字元 a 在正常模式下,按a在游標後插入字元 第二課 1.刪除類指...
protobuf基本操作1
最近領導分配了乙個任務,這個工程挺高階的,主要以前從沒有搞過,其中裡面有protobuf,以前從來沒有聽說過這個東西,最近在網上看了一些高人的帖子,才知道protobuf是什麼云云了,我的理解是,例如我們要用c 寫個什麼工程,c 是物件導向的,我們要寫很多類,估計都得寫上上百行,上千行的 但是現在用...
linux基本操作 1
ctrl d 鍵盤輸入結束或者退出終端 ctrl s 暫定當前程式,按任意鍵恢復 ctrl z 將當前程式放入後台執行 fg 恢復放入後台的程式到前台 ctrl a 到當前行首,相當於home ctrl e 到當前行尾,相當於end ctrl k 刪除從游標尾到行末 ctrl backspace 向...