Scala語言的主要應(yīng)用領(lǐng)域與作用?

Scala語言的主要應(yīng)用領(lǐng)域與作用?

Scala的特性1.面向?qū)ο筇匦許cala是一種純面向?qū)ο蟮恼Z言,每一個值都是對象。對象的數(shù)據(jù)類型以及行為由類和特征(Trait)描述。

類抽象機制的擴展有兩種途徑。

一種途徑是子類繼承,另一種途徑是靈活的混入(Mixin)機制。這兩種途徑能避免多重繼承的種種問題。2.函數(shù)式編程Scala也是一種函數(shù)式語言,其函數(shù)也能當成值來使用。Scala提供了輕量級的語法用以定義匿名函數(shù),支持高階函數(shù),允許嵌套多層函數(shù),并支持柯里化。

Scala的CaseClass及其內(nèi)置的模式匹配相當于函數(shù)式編程語言中常用的代數(shù)類型(AlgebraicType)。更進一步,程序員可以利用Scala的模式匹配,編寫類似正則表達式的代碼處理XML數(shù)據(jù)。在這些情形中,順序容器的推導(dǎo)式(comprehension)功能對編寫公式化查詢非常有用。

由于JVM不支持尾部遞歸,Scala也不能完全支持尾部遞歸優(yōu)化。不過,在簡單的情況下,Scala編譯器可以把尾部遞歸優(yōu)化成循環(huán)。4.靜態(tài)類型Scala是具備類型系統(tǒng),通過編譯時的檢查,保證代碼的安全性和一致性。

類型系統(tǒng)具體支持以下特性:泛型類,型變注釋(VarianceAnnotation),類型繼承結(jié)構(gòu)的上限和下限,把類別和抽象類型作為對象成員,復(fù)合類型,引用自己時顯式指定類型,視圖,多態(tài)方法。5.擴展性Scala的設(shè)計承認一個事實,即在實踐中,某個領(lǐng)域特定的應(yīng)用程序開發(fā)往往需要特定于該領(lǐng)域的語言擴展。Scala提供了許多獨特的語言機制,可以以庫的形式輕易無縫添加新的語言結(jié)構(gòu):任何方法可用作前綴或后綴操作符,可以根據(jù)預(yù)期類型自動構(gòu)造閉包。

聯(lián)合使用以上兩個特性,使你可以定義新的語句而無須擴展語法也無須使用宏之類的元編程特性。5.使用Scala的框架Lift是一個開源的Web應(yīng)用框架,旨在提供類似RubyonRails的東西。因為Lift使用了Scala,所以Lift應(yīng)用程序可以使用所有的Java庫和Web容器。scala語言主要應(yīng)用領(lǐng)域cala運行于JVM之上,并且它可以訪問任何的java類庫并且與java框架進行互操作,scala也大量重用了java類型和類庫。

大數(shù)據(jù)的開發(fā)語言是Scala的原因:1:大數(shù)據(jù)的本身是計算數(shù)據(jù),而Scala即有面向?qū)ο蠼M織項目工程的能力,又有計算數(shù)據(jù)的功能。2:現(xiàn)在大數(shù)據(jù)事實上的計算標準框架Spark,它是用Scala開發(fā)的,因為計算數(shù)據(jù),Scala它是函數(shù)式編程,它實現(xiàn)算法非常簡潔優(yōu)雅。例:kafka,它是一個消息中間件,如果外部數(shù)據(jù)要流進大數(shù)據(jù)中心,我們一般都要用kafka作適配器,那如果大數(shù)據(jù)中心的數(shù)據(jù)流到外部,也是用kafka(如Spark計算的數(shù)據(jù)要交給HBASE或MySql,期間我們都會用kafka),很多的大數(shù)據(jù)組件都是用的Scala編寫的,所以,如果你想成為一個較高級的大數(shù)據(jù)開發(fā)高手,你一定要掌握Scala。

Scala在大數(shù)據(jù)處理方面有何優(yōu)勢?

首先,Scala不把程序員當傻子。當馬丁?奧德斯基宣布Scala 2.12(http://www.scala-lang.org/news/roadmap-next)將要簡化語法,推出Scala\”Don Giovanni\”項目的時候,在視頻中說的很清楚:“Scala現(xiàn)在是為聰明人創(chuàng)造的,以后也是為聰明人服務(wù)的。百科

”所以不同于Python讓程序員用一種方法做所有事情,Scala提供一整套工具,讓程序員自由選擇,無論是mutable數(shù)據(jù)結(jié)構(gòu),immutable數(shù)據(jù)結(jié)構(gòu),并行(parallel)數(shù)據(jù)結(jié)構(gòu)。

然后在這些選擇中,Scala再針對他們進行算法層面的特殊優(yōu)化。Scala相信程序員的聰明才智,讓程序員自行選擇合適的結(jié)構(gòu),以針對變化萬千的任務(wù)需求,這點是Scala做得極好的地方。

為什么選擇Scala,它在大數(shù)據(jù)處理方面有何優(yōu)勢

大數(shù)據(jù)(big data),是指無法在可承受的時間范圍內(nèi)用常規(guī)軟件工具進行捕捉、管理和處理的數(shù)據(jù)**。有人把數(shù)據(jù)比喻為蘊 藏能量的煤礦。

煤炭按照性質(zhì)有焦煤、無煙煤、肥煤、貧煤等分類,而露天煤礦、深山煤礦的挖掘成本又不一樣。

與此類似,大數(shù)據(jù)并不在“大”,而在于“有用”。價值含量、挖掘成本比數(shù)量更為重要。對于很多行業(yè)而言,如何利用這些大規(guī)模數(shù)據(jù)是成為贏得競爭的關(guān)鍵。大數(shù)據(jù)的價值體現(xiàn)在以下幾個方面:1)對大量消費者提**品或服務(wù)的企業(yè)可以利用大數(shù)據(jù)進行精準營銷;2) 做小而美模式的中長尾企業(yè)可以利用大數(shù)據(jù)做服務(wù)轉(zhuǎn)型;3) 面臨互聯(lián)網(wǎng)壓力之下必須轉(zhuǎn)型的傳統(tǒng)企業(yè)需要與時俱進充分利用大數(shù)據(jù)的價值。

大數(shù)據(jù)為什么要選擇Spark

Spark是一個基于內(nèi)存計算的開源集群計算系統(tǒng),目的是更快速的進行數(shù)據(jù)分析。Spark由加州伯克利大學(xué)AMP實驗室Matei為主的小團隊使用Scala開發(fā)開發(fā),其核心部分的代碼只有63個Scala文件,非常輕量級。

Spark 提供了與 Hadoop 相似的開源集群計算環(huán)境,但基于內(nèi)存和迭代優(yōu)化的設(shè)計,Spark 在某些工作負載表現(xiàn)更**。

大數(shù)據(jù)處理為何選擇spark?

大數(shù)據(jù)處理為何選擇Spark,而不是Hadoop? 一、基礎(chǔ)知識 1、Spark Spark是一個用來實現(xiàn)快速而通用的集群計算的平臺。 在速度方面,Spark擴展了廣泛使用的MapReduce計算模型,而且高效地支持更多計算模式,包括交互式查詢和流處理。

Spark項目包含多個緊密集成的組件。

Spark的核心是一個對由很多計算任務(wù)組成的、運行在多個工作機器或者是一個計算集群上的應(yīng)用進行調(diào)度、分發(fā)以及監(jiān)控的計算引擎。2、Hadoop Hadoop是一個由Apache基金會所開發(fā)的分布式系統(tǒng)基礎(chǔ)架構(gòu)。 用戶可以在不了解分布式底層細節(jié)的情況下,開發(fā)分布式程序。充分利用集群的威力進行高速運算和存儲。

Hadoop的框架最核心的設(shè)計就是:HDFS和MapReduce。HDFS為海量的數(shù)據(jù)提供了存儲,則MapReduce為海量的數(shù)據(jù)提供了計算。 很多初學(xué)者,對大數(shù)據(jù)的概念都是模糊不清的,大數(shù)據(jù)是什么,能做什么,學(xué)的時候,該按照什么線路去學(xué)習,學(xué)完往哪方面發(fā)展,想深入了解,想學(xué)習的同學(xué)歡迎加入大數(shù)據(jù)學(xué)習**群:740041381,有大量干貨(零基礎(chǔ)以及進階的經(jīng)典實戰(zhàn))分享給大家,并且有清華大學(xué)畢業(yè)的資深大數(shù)據(jù)講師給大家免費授課,給大家分享目前國內(nèi)最完整的大數(shù)據(jù)高端實戰(zhàn)實用學(xué)習流程體系。

二、大數(shù)據(jù)處理選擇 Spark和Hadoop都可以進行大數(shù)據(jù)處理,那如何選擇處理平臺呢? 1.處理速度和性能 Spark擴展了廣泛使用的MapReduce計算模型,支持循環(huán)數(shù)據(jù)流和內(nèi)存計算。 Hadoop進行計算時,需要從磁盤讀或者寫數(shù)據(jù),同時整個計算模型需要**傳輸,導(dǎo)致MapReduce具有高延遲的弱點。 據(jù)統(tǒng)計,基于Spark內(nèi)存的計算速度比Hadoop MapReduce快100倍以上,基于磁盤的計算速度也要快10倍以上。

2.開發(fā)難易度 Spark提供多語言(包括Scala、Java、Python)API,能夠快速實現(xiàn)應(yīng)用,相比MapReduce更簡潔的代碼,安裝部署也無需復(fù)雜配置。使用API可以輕松地構(gòu)建分布式應(yīng)用,同時也可以使用Scala和Python腳本進行交互式編程。