Sparklyr

Sparklyr是rstudio 社區(qū)維護(hù)的一個(gè)spark的接口晨横。

文檔

Sparklyr 文檔:https://spark.rstudio.com

安裝

Sparklyr: sparklyr::spark_install(version = "2.3.0", hadoop_version = "2.7")蒜胖,不依賴于 Spark 版本,spark 2.X 完美兼容 1.X卒煞。

Spark 環(huán)境配置需要注意的問題:

  1. 下載和 Hadoop 對(duì)應(yīng)版本號(hào)的發(fā)行版蹬叭,具體可以通過 sparklyr::spark_available_versions() 查詢可用的 spark 版本
  2. JAVA_HOME/SPARK_HOME/HADOOP_HOME 是必須要指定的環(huán)境變量,建議使用 JDK8/spark2.x/hadoop2.7
  3. yarn-client/yarn-cluster 模式需要設(shè)置環(huán)境變量 Sys.setenv("HADOOP_CONF_DIR"="/etc/hadoop/conf")
  4. 連接 Hive 需要提供 Hive 鏈接配置, 在 spark-connection 初始化時(shí)指定對(duì)應(yīng) hive-site.xml 文件

初始化

sc <- sparklyr::spark_connect(master = "yarn-client",
                             spark_home = "/data/FinanceR/Spark",
                             version = "2.2.0",
                             config = sparklyr::spark_config())

數(shù)據(jù)輸入輸出

以寫 Parquet 文件為例, 同理你可以用 SparkR::write.()/sparklyr::spark_write_()等寫入其他格式文件到HDFS 上, 比如csv/text役耕。

什么是 Parquet 文件? Parquet 是一種高性能列式存儲(chǔ)文件格式聪廉,比 CSV 文件強(qiáng)在內(nèi)建索引瞬痘,可以快速查詢數(shù)據(jù),目前普遍應(yīng)用在模型訓(xùn)練過程锄列。

df <- sparklyr::copy_to(sc,faithful,"df")

sparklyr::spark_write_parquet(df,path="/user/FinanceR",mode="overwrite",partition_by = "dt")

數(shù)據(jù)清洗

library(sparklyr)
library(dplyr)

# 在 mutate 中支持 Hive UDF

remote_df = dplyr::tbl(sc,from = "db.financer_tbl") # 定義數(shù)據(jù)源表 
# 或者 remote_df = dplyr::tbl(sc,from = dplyr::sql("select * from db.financer_tbl limit 10")) #

remote_df %>%
    mutate(a = b+2) %>%   # 在 mutate 中支持 Hive UDF
    filter(a > 2)%>%
    group_by(key)%>%
    summarize(count = n())%>%
    select(cnt = count)%>% 
    order_by(cnt)%>%
    arrange(desc(cnt))%>%
    na.omit() ->
    pipeline

pipeline %>% sdf_persist() # 大數(shù)據(jù)集 緩存在集群上
pipeline %>% head() %>% collect() # 小數(shù)據(jù) 加載到本地

SQL

df <- sc %>% 
      dplyr::tbl(dplyr::sql('SELECT * FROM financer_tbl WHERE dt = "20180318"'))

sc %>% DBI::dbGetQuery('SELECT * FROM financer_tbl WHERE dt = "20180318" limit 10') # 直接將數(shù)據(jù) collect 到本地, 與操作MySQL完全一樣
      
df %>% dbplyr::sql_render() # 將 pipeline 自動(dòng)翻譯為 SQL
# SELECT * FROM financer_tbl WHERE dt = "20180318"

分發(fā) R 代碼

分發(fā)機(jī)制:

系統(tǒng)會(huì)將本地依賴文件壓縮打包上傳到 HDFS 路徑上图云,通過 Spark 動(dòng)態(tài)分發(fā)到執(zhí)行任務(wù)的機(jī)器上解壓縮。 執(zhí)行任務(wù)的機(jī)器本地獨(dú)立的線程邻邮、內(nèi)存中執(zhí)行代碼竣况,最后匯總計(jì)算結(jié)果到主要節(jié)點(diǎn)機(jī)器上實(shí)現(xiàn) R 代碼的分發(fā)。

func <- function(x){x + runif(1) } # 原生 R代碼

sparklyr::spark_apply(x = df,packages=T,name = c("key","value"),func =func,group = "key")

流式計(jì)算

什么是流式計(jì)算? 流式計(jì)算是介于實(shí)時(shí)與離線計(jì)算之間的一種計(jì)算方式筒严,以亞秒級(jí)準(zhǔn)實(shí)時(shí)的方式小批量計(jì)算數(shù)據(jù)丹泉,廣泛應(yīng)用在互聯(lián)網(wǎng)廣告、推薦等場(chǎng)景鸭蛙。

Sparklyr: 暫時(shí)不支持流式計(jì)算摹恨,功能開發(fā)中。

統(tǒng)計(jì)之都原文:
https://cosx.org/2018/05/sparkr-vs-sparklyr

學(xué)習(xí)資源

https://spark.rstudio.com/
https://github.com/rstudio/cheatsheets/raw/master/translations/chinese/sparklyr-cheatsheet_zh_CN.pdf

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末娶视,一起剝皮案震驚了整個(gè)濱河市晒哄,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌肪获,老刑警劉巖寝凌,帶你破解...
    沈念sama閱讀 218,607評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異孝赫,居然都是意外死亡较木,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門青柄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來伐债,“玉大人,你說我怎么就攤上這事致开》逅” “怎么了?”我有些...
    開封第一講書人閱讀 164,960評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵喇喉,是天一觀的道長祖今。 經(jīng)常有香客問我,道長拣技,這世上最難降的妖魔是什么千诬? 我笑而不...
    開封第一講書人閱讀 58,750評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮膏斤,結(jié)果婚禮上徐绑,老公的妹妹穿的比我還像新娘。我一直安慰自己莫辨,他們只是感情好傲茄,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,764評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著沮榜,像睡著了一般盘榨。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蟆融,一...
    開封第一講書人閱讀 51,604評(píng)論 1 305
  • 那天草巡,我揣著相機(jī)與錄音,去河邊找鬼型酥。 笑死山憨,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的弥喉。 我是一名探鬼主播郁竟,決...
    沈念sama閱讀 40,347評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼由境!你這毒婦竟也來了棚亩?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,253評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤虏杰,失蹤者是張志新(化名)和其女友劉穎讥蟆,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體嘹屯,經(jīng)...
    沈念sama閱讀 45,702評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡攻询,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,893評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了州弟。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片钧栖。...
    茶點(diǎn)故事閱讀 40,015評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖婆翔,靈堂內(nèi)的尸體忽然破棺而出拯杠,到底是詐尸還是另有隱情,我是刑警寧澤啃奴,帶...
    沈念sama閱讀 35,734評(píng)論 5 346
  • 正文 年R本政府宣布潭陪,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏依溯。R本人自食惡果不足惜老厌,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,352評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望黎炉。 院中可真熱鬧枝秤,春花似錦、人聲如沸慷嗜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,934評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽庆械。三九已至薇溃,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間缭乘,已是汗流浹背沐序。 一陣腳步聲響...
    開封第一講書人閱讀 33,052評(píng)論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留忿峻,地道東北人薄啥。 一個(gè)月前我還...
    沈念sama閱讀 48,216評(píng)論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像逛尚,于是被迫代替她去往敵國和親垄惧。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,969評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容