BigData之Spark:Spark计算引擎的简介、下载、经典案例之详细攻略
BigData之Spark:Spark計算引擎的簡介、下載、經典案例之詳細攻略
?
?
?
目錄
Spark的簡介
1、Spark三大特點
Spark的下載
Spark的經典案例
1、Word Count
2、Pi Estimation
3、Text Search
4、Prediction with Logistic Regression
?
?
?
?
Spark的簡介
? ? ? ? Apache Spark 是專為大規模數據處理而設計的快速通用的計算引擎。Spark是UC Berkeley AMP lab (加州大學伯克利分校的AMP實驗室)所開源的類Hadoop MapReduce的通用并行框架,Spark,擁有Hadoop MapReduce所具有的優點;但不同于MapReduce的是Job中間輸出結果可以保存在內存中,從而不再需要讀寫HDFS,因此Spark能更好地適用于數據挖掘與機器學習等需要迭代的MapReduce的算法。
? ? ? ? Spark 是一種與 Hadoop 相似的開源集群計算環境,但是兩者之間還存在一些不同之處,這些有用的不同之處使 Spark 在某些工作負載方面表現得更加優越,換句話說,Spark 啟用了內存分布數據集,除了能夠提供交互式查詢外,它還可以優化迭代工作負載。
? ? ? ? Spark 是在 Scala 語言中實現的,它將 Scala 用作其應用程序框架。與 Hadoop 不同,Spark 和 Scala 能夠緊密集成,其中的 Scala 可以像操作本地集合對象一樣輕松地操作分布式數據集。
? ? ? ? 盡管創建 Spark 是為了支持分布式數據集上的迭代作業,但是實際上它是對 Hadoop 的補充,可以在 Hadoop 文件系統中并行運行。通過名為 Mesos 的第三方集群框架可以支持此行為。Spark 由加州大學伯克利分校 AMP 實驗室 (Algorithms, Machines, and People Lab) 開發,可用來構建大型的、低延遲的數據分析應用程序。
?
?
1、Spark三大特點
- Spark 應用開發者可以專注于應用所要做的計算本身:高級 API 剝離了對集群本身的關注,Spark 應用開發者可以專注于應用所要做的計算本身。
- Spark速度更快:Spark 很快,支持交互式計算和復雜算法。內存計算下,Spark 比 Hadoop 快100倍。使用最先進的DAG調度程序、查詢優化器和物理執行引擎,實現了批處理和流數據的高性能。
- Spark易用性強:用Java、Scala、Python、R和SQL快速編寫應用程序。Spark 提供了80多個高級運算符。是一個通用引擎,可用它來完成各種各樣的運算,包括 SQL 查詢、文本處理、機器學習等,而在 Spark 出現之前,我們一般需要學習各種各樣的引擎來分別處理這些需求。
?
?
?
Spark的下載
下載地址:https://spark.apache.org/downloads.html
?
?
?
Spark的經典案例
推薦: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()?
?
?
?
?
總結
以上是生活随笔為你收集整理的BigData之Spark:Spark计算引擎的简介、下载、经典案例之详细攻略的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Appendix之setup.py:附录
- 下一篇: Py之albumentations:al