在Rstudio中使用Spark處理超大規(guī)模的數(shù)據(jù)集

最近對Rstudio的最新版本做了一個探索号俐,發(fā)現(xiàn)在Rstudio的菜單中有連接Spark的入口,剛好自己手里有一份大小超過5GB,記錄數(shù)達(dá)到2.8億的超大數(shù)據(jù)集钥弯,對于單機(jī)版本的R來說無能為力,于是想嘗試一下用Rstudio里面的Spark入口來安裝和使用Saprk分析這個超大數(shù)據(jù)集。這樣可以把Spark和自己熟悉的R語言結(jié)合起來七婴,在Spark里面把數(shù)據(jù)匯總以后,可以直接傳給R察滑,在R里面使用更加復(fù)雜的模型和可視化工具對數(shù)據(jù)進(jìn)行進(jìn)一步分析打厘。在這個過程中有很多東西自己也不是很熟悉,于是將這個過程記錄下來贺辰,順便也分享給大家户盯。

1嵌施、準(zhǔn)備R和Rstudio

(1)下載最新版的Rstudio,當(dāng)前版本為1.1.383
莽鸭,如果已經(jīng)安裝Rstudio且其版本低于1.1吗伤,請將其升至最新版。
可通過如下網(wǎng)址下載硫眨,下載后直接安裝即可:

https://www.rstudio.com/products/rstudio/download/#download

(2) 如果你還沒有安裝R足淆,請下載并安裝R,可通過R官方網(wǎng)站進(jìn)行下載礁阁。

https://www.r-project.org/

(3) 如果你沒有R的基礎(chǔ)巧号,可以觀看@松鼠在網(wǎng)易云課堂上發(fā)布的免費R入門課程:

https://study.163.com/instructor/3188405.htm

2、利用Rstudio自動安裝Spark

在Rstudio中使用Spark十分簡單姥闭,無需我們手動下載和配置spark環(huán)境丹鸿,Rstudio會自動為我們安裝Spark環(huán)境,你所需要做的就是點點菜單即可棚品。

但在Rstudio中安裝和使用Spark之前靠欢,我們需要先在自己的電腦上安裝Java環(huán)境,因為Spark運行在Java 虛擬機(jī)铜跑,也就是JVM之上门怪。

下面介紹安裝步驟:

(1)安裝并配置Java 8環(huán)境:

① 下載Java JDK(選擇適合自己操作系統(tǒng)的版本):

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

② 安裝JDK,直接雙擊上一步下載的Java JDK進(jìn)行安裝即可锅纺;

③ 配置Java環(huán)境變量掷空,這里演示W(wǎng)indows10上的操作,其它版本的操作系統(tǒng)可通過百度搜索相關(guān)操作演示伞广。

  • 安裝完成后拣帽,找到Java的安裝路徑,我安裝的是Windows64位版本嚼锄,并且安裝到了C盤减拭,也就是按照默認(rèn)路徑安裝,此時Java路徑為C:\Program Files\Java\;

  • 然后設(shè)置JAVA_HOME区丑,設(shè)置JAVA_HOME是為了讓其它依賴Java的程序能夠找到Java的安裝位置拧粪。在Windows10上,按Windows鍵沧侥,輸入path可霎,點擊編輯系統(tǒng)環(huán)境變量,點擊環(huán)境變量宴杀,在系統(tǒng)變量部分癣朗,添加如下圖所示的JAVA_HOME.

  • 接著找到系統(tǒng)變量里面的Path,點擊編輯旺罢。將jdk路徑jre路徑添加進(jìn)去旷余,如下圖所示:


    ④ 驗證Java環(huán)境變量時候配置成功

  • 打開命令行cmd或者 Power shell(按Windows鍵绢记,輸入cmd或者Power shell即可),輸入javajavac查看是否有返回結(jié)果正卧,如果沒有報錯蠢熄,那么Java已經(jīng)安裝和配置成功了。

(2) 在Rstudio中自動安裝Spark

  • 在Rstudio的左上方炉旷,點擊Connections签孔,點擊New Connection,你將看到Spark圖標(biāo)。
  • 點擊Spark圖標(biāo)窘行,將會詢問是否安裝或者更新sparklyr包饥追,選擇yes進(jìn)行安裝,sparklyr包是用來在R里面操作Spark的一個包抽高。
  • sparklyr包需要依賴很多其它的R包判耕,如果安裝速度太慢杖刷,可以將R包的下載鏡像切換到國內(nèi)蛤育。(在Rstudio中點擊Tools,選擇Options,點擊Packages,出現(xiàn)如下圖所示的圖片杖爽,切換鏡像即可。)
  • 安裝好sparklyr包之后碳竟,再次點擊New Connection,點擊Spark.
  • 上一步操作后狸臣,將會出現(xiàn)如下圖所示的界面莹桅,提示我們選擇SparkHadoop的版本,一般情況下烛亦,我們按照默認(rèn)的進(jìn)行安裝即可诈泼,其它版本則可能會出現(xiàn)問題。(我之前在測試時煤禽,選擇2.2的Spark铐达,運行會出錯)。點擊install之后檬果,Rstudio將會自動給我們下載spark以及其依賴的環(huán)境瓮孙。
  • 下載完成之后,將會自動連接Spark选脊,并運行Spark UI.


3杭抠、通過Rstudio連接Spark,讀入大數(shù)據(jù)集并進(jìn)行分析

(1)讀入數(shù)據(jù)集并進(jìn)行分析

我這里使用一個文件大小為5.25GB恳啥,記錄數(shù)達(dá)到2.8億行的大數(shù)據(jù)集進(jìn)行測試偏灿。(如果單獨使用R進(jìn)行處理,則R將會直接爆掉)

這里使用sparklyr包將本機(jī)里面的csv文件讀入Spark.

testing <- spark_read_csv(sc,        # 與spark的連接
                         'testing',  # 在spark中數(shù)據(jù)集的名稱
                          path = 'D:/Data/future/data/ForecastDataforTesting.csv')

(2)使用Spark UI觀察Spark任務(wù)調(diào)度與運行情況


(3) 對數(shù)據(jù)集進(jìn)行簡單分析:

> dbGetQuery(sc,"select * from testing limit 5")
  xid yid date_id hour realization wind
1 335 357       8   25           3 14.7
2 335 358       8   25           3 15.1
3 335 359       8   25           3 15.5
4 335 360       8   25           3 15.7
5 335 361       8   25           3 15.7
> dbGetQuery(sc,"select count(distinct(xid)) from testing")
  count(DISTINCT xid)
1                 548
> dbGetQuery(sc,"select count(distinct(yid)) from testing")
  count(DISTINCT yid)
1                 421
> 548*421
[1] 230708
> dbGetQuery(sc,"select count(*) from (select distinct xid,yid from testing)")
  count(1)
1   230708
> dbGetQuery(sc,"select count(distinct(hour)) from testing")
  count(DISTINCT hour)
1                   25
> dbGetQuery(sc,"select count(distinct(date_id)) from testing")
  count(DISTINCT date_id)
1                       5
> 25*5*10
[1] 1250
> 25*5*10*548*421
[1] 288385000
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末钝的,一起剝皮案震驚了整個濱河市翁垂,隨后出現(xiàn)的幾起案子忿墅,更是在濱河造成了極大的恐慌,老刑警劉巖沮峡,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件疚脐,死亡現(xiàn)場離奇詭異,居然都是意外死亡邢疙,警方通過查閱死者的電腦和手機(jī)棍弄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來疟游,“玉大人呼畸,你說我怎么就攤上這事“渑埃” “怎么了蛮原?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長另绩。 經(jīng)常有香客問我儒陨,道長,這世上最難降的妖魔是什么笋籽? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任蹦漠,我火速辦了婚禮,結(jié)果婚禮上车海,老公的妹妹穿的比我還像新娘笛园。我一直安慰自己,他們只是感情好侍芝,可當(dāng)我...
    茶點故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布研铆。 她就那樣靜靜地躺著,像睡著了一般州叠。 火紅的嫁衣襯著肌膚如雪棵红。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天留量,我揣著相機(jī)與錄音窄赋,去河邊找鬼。 笑死楼熄,一個胖子當(dāng)著我的面吹牛忆绰,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播可岂,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼错敢,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起稚茅,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤纸淮,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后亚享,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體咽块,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年欺税,在試婚紗的時候發(fā)現(xiàn)自己被綠了侈沪。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,599評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡晚凿,死狀恐怖亭罪,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情歼秽,我是刑警寧澤应役,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站燥筷,受9級特大地震影響箩祥,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜荆责,卻給世界環(huán)境...
    茶點故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一滥比、第九天 我趴在偏房一處隱蔽的房頂上張望亚脆。 院中可真熱鬧做院,春花似錦、人聲如沸濒持。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽柑营。三九已至屈雄,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間官套,已是汗流浹背酒奶。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留奶赔,地道東北人惋嚎。 一個月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像站刑,于是被迫代替她去往敵國和親另伍。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,465評論 2 348

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