這篇文章主要講解了“Spark支持的編程語言有哪幾種”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Spark支持的編程語言有哪幾種”吧!
創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的曲沃網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
1、Spark的核心是什么?
RDD是Spark的基本抽象,是對(duì)分布式內(nèi)存的抽象使用,實(shí)現(xiàn)了以操作本地集合的方式來操作分布式數(shù)據(jù)集的抽象實(shí)現(xiàn)。RDD也是Spark非常核心的東西,它表示已被分區(qū),不可變的并能夠被并行操作的數(shù)據(jù)集合,不同的數(shù)據(jù)集格式對(duì)應(yīng)不同的RDD實(shí)現(xiàn)。
RDD必須是可序列化的。RDD可以cache到內(nèi)存中,每次對(duì)RDD數(shù)據(jù)集的操作之后的結(jié)果,都可以存放到內(nèi)存中,下一個(gè)操作可以直接從內(nèi)存中輸入,省去了MapReduce大量的磁盤IO操作。這對(duì)于迭代運(yùn)算比較常見的機(jī)器學(xué)習(xí)算法,交互式數(shù)據(jù)挖掘來說,效率提升比較大。
2、Spark的適用場(chǎng)景有哪些?
由于RDD的特性,Spark不適用那種異步細(xì)粒度更新狀態(tài)的應(yīng)用,例如web服務(wù)的存儲(chǔ)或者是增量的web爬蟲和索引。就是對(duì)于那種增量修改的應(yīng)用模型不適合??偟膩碚fSpark的適用面比較廣泛且比較通用。
3、Spark支持的編程語言有哪幾種?
Spark通過與編程語言集成的方式暴露RDD的操作,類似于DryadLINQ和FlumeJava,每個(gè)數(shù)據(jù)集都表示為RDD對(duì)象,對(duì)數(shù)據(jù)集的操作就表示成對(duì)RDD對(duì)象的操作。Spark主要支持的編程語言是Scala、java、python。
1)Scala。Spark使用Scala開發(fā),默認(rèn)使用Scala作為編程語言。編寫Spark程序比編寫Hadoop MapReduce程序要簡(jiǎn)單的多,SparK提供了Spark-Shell,可以在Spark-Shell測(cè)試程序。
2)Java。Spark支持Java編程,但對(duì)于使用Java就沒有了Spark-Shell這樣方便的工具,其它與Scala編程是一樣的,因?yàn)槎际荍VM上的語言,Scala與Java可以互操作,Java編程接口其實(shí)就是對(duì)Scala的封裝。
3)Python?,F(xiàn)在Spark也提供了Python編程接口,Spark使用py4j來實(shí)現(xiàn)python與java的互操作,從而實(shí)現(xiàn)使用python編寫Spark程序。Spark也同樣提供了pyspark,一個(gè)Spark的python shell,可以以交互式的方式使用Python編寫Spark程序。
相對(duì)于MapReduce,Spark憑借基于內(nèi)存計(jì)算和可以直接讀寫Hadoop上任何格式數(shù)據(jù)的優(yōu)勢(shì),進(jìn)行批處理時(shí)更加高效,并有更低的延遲。
感謝各位的閱讀,以上就是“Spark支持的編程語言有哪幾種”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)Spark支持的編程語言有哪幾種這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!