BigData之Spark:Spark计算引擎的简介、下载、经典案例之详细攻略
BigData之Spark:Spark計(jì)算引擎的簡介、下載、經(jīng)典案例之詳細(xì)攻略
?
?
?
目錄
Spark的簡介
1、Spark三大特點(diǎn)
Spark的下載
Spark的經(jīng)典案例
1、Word Count
2、Pi Estimation
3、Text Search
4、Prediction with Logistic Regression
?
?
?
?
Spark的簡介
? ? ? ? Apache Spark 是專為大規(guī)模數(shù)據(jù)處理而設(shè)計(jì)的快速通用的計(jì)算引擎。Spark是UC Berkeley AMP lab (加州大學(xué)伯克利分校的AMP實(shí)驗(yàn)室)所開源的類Hadoop MapReduce的通用并行框架,Spark,擁有Hadoop MapReduce所具有的優(yōu)點(diǎn);但不同于MapReduce的是Job中間輸出結(jié)果可以保存在內(nèi)存中,從而不再需要讀寫HDFS,因此Spark能更好地適用于數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)等需要迭代的MapReduce的算法。
? ? ? ? Spark 是一種與 Hadoop 相似的開源集群計(jì)算環(huán)境,但是兩者之間還存在一些不同之處,這些有用的不同之處使 Spark 在某些工作負(fù)載方面表現(xiàn)得更加優(yōu)越,換句話說,Spark 啟用了內(nèi)存分布數(shù)據(jù)集,除了能夠提供交互式查詢外,它還可以優(yōu)化迭代工作負(fù)載。
? ? ? ? Spark 是在 Scala 語言中實(shí)現(xiàn)的,它將 Scala 用作其應(yīng)用程序框架。與 Hadoop 不同,Spark 和 Scala 能夠緊密集成,其中的 Scala 可以像操作本地集合對象一樣輕松地操作分布式數(shù)據(jù)集。
? ? ? ? 盡管創(chuàng)建 Spark 是為了支持分布式數(shù)據(jù)集上的迭代作業(yè),但是實(shí)際上它是對 Hadoop 的補(bǔ)充,可以在 Hadoop 文件系統(tǒng)中并行運(yùn)行。通過名為 Mesos 的第三方集群框架可以支持此行為。Spark 由加州大學(xué)伯克利分校 AMP 實(shí)驗(yàn)室 (Algorithms, Machines, and People Lab) 開發(fā),可用來構(gòu)建大型的、低延遲的數(shù)據(jù)分析應(yīng)用程序。
?
?
1、Spark三大特點(diǎn)
- Spark 應(yīng)用開發(fā)者可以專注于應(yīng)用所要做的計(jì)算本身:高級 API 剝離了對集群本身的關(guān)注,Spark 應(yīng)用開發(fā)者可以專注于應(yīng)用所要做的計(jì)算本身。
- Spark速度更快:Spark 很快,支持交互式計(jì)算和復(fù)雜算法。內(nèi)存計(jì)算下,Spark 比 Hadoop 快100倍。使用最先進(jìn)的DAG調(diào)度程序、查詢優(yōu)化器和物理執(zhí)行引擎,實(shí)現(xiàn)了批處理和流數(shù)據(jù)的高性能。
- Spark易用性強(qiáng):用Java、Scala、Python、R和SQL快速編寫應(yīng)用程序。Spark 提供了80多個(gè)高級運(yùn)算符。是一個(gè)通用引擎,可用它來完成各種各樣的運(yùn)算,包括 SQL 查詢、文本處理、機(jī)器學(xué)習(xí)等,而在 Spark 出現(xiàn)之前,我們一般需要學(xué)習(xí)各種各樣的引擎來分別處理這些需求。
?
?
?
Spark的下載
下載地址:https://spark.apache.org/downloads.html
?
?
?
Spark的經(jīng)典案例
推薦:http://spark.apache.org/examples.html
1、Word Count
text_file = sc.textFile("hdfs://...") counts = text_file.flatMap(lambda line: line.split(" ")) \.map(lambda word: (word, 1)) \.reduceByKey(lambda a, b: a + b) counts.saveAsTextFile("hdfs://...")?
2、Pi Estimation
def inside(p):x, y = random.random(), random.random()return x*x + y*y < 1count = sc.parallelize(xrange(0, NUM_SAMPLES)) \.filter(inside).count() print "Pi is roughly %f" % (4.0 * count / NUM_SAMPLES)?
3、Text Search
textFile = sc.textFile("hdfs://...")# Creates a DataFrame having a single column named "line" df = textFile.map(lambda r: Row(r)).toDF(["line"]) errors = df.filter(col("line").like("%ERROR%")) # Counts all the errors errors.count() # Counts errors mentioning MySQL errors.filter(col("line").like("%MySQL%")).count() # Fetches the MySQL errors as an array of strings errors.filter(col("line").like("%MySQL%")).collect()?
4、Prediction with Logistic Regression
# Every record of this DataFrame contains the label and # features represented by a vector. df = sqlContext.createDataFrame(data, ["label", "features"])# Set parameters for the algorithm. # Here, we limit the number of iterations to 10. lr = LogisticRegression(maxIter=10)# Fit the model to the data. model = lr.fit(df)# Given a dataset, predict each point's label, and show the results. model.transform(df).show()?
?
?
?
?
總結(jié)
以上是生活随笔為你收集整理的BigData之Spark:Spark计算引擎的简介、下载、经典案例之详细攻略的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Appendix之setup.py:附录
- 下一篇: Py之albumentations:al