最近對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)址下載硫眨,下載后直接安裝即可:
(2) 如果你還沒有安裝R足淆,請下載并安裝R,可通過R官方網(wǎng)站進(jìn)行下載礁阁。
(3) 如果你沒有R的基礎(chǔ)巧号,可以觀看@松鼠在網(wǎng)易云課堂上發(fā)布的免費R入門課程:
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
即可),輸入java
和javac
查看是否有返回結(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)如下圖所示的界面莹桅,提示我們選擇
Spark
和Hadoop
的版本,一般情況下烛亦,我們按照默認(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