導航:首頁 > 數據處理 > 網優spark怎麼分析數據

網優spark怎麼分析數據

發布時間:2022-12-26 22:23:39

❶ 什麼是Spark,如何使用Spark進行數據分析

Spark是UC Berkeley AMP lab (加州大學伯克利分校的AMP實驗室)所開源的類Hadoop MapRece的通用並行框架,Spark,擁有Hadoop MapRece所具有的優點;但不同於MapRece的是Job中間輸出結果可以保存在內存中,從而不再需要讀寫HDFS,因此Spark能更好地適用於數據挖掘與機器學習等需要迭代的MapRece的演算法
數據科學家為了回答一個問題或進行深入研究,會使用相關的技術分析數據。通常,他們的工作包含特殊的分析,所以他們使用互動式shell,以使得他們能在最短的時間內看到查詢結果和代碼片段。Spark的速度和簡單的API介面很好地符合這個目標,它的內建庫意味著很多演算法可以隨時使用。
Spark通過若干組件支持不同的數據科學任務。Spark shell使得用Python或Scala進行互動式數據分析變得簡單。Spark SQL也有一個獨立的SQL shell,可以用SQL進行數據分析,也可以在Spark程序中或Spark shell中使用Spark SQL。MLlib庫支持機器學習和數據分析。而且,支持調用外部的MATLAB或R語言編寫的程序。Spark使得數據科學家可以用R或Pandas等工具處理包含大量數據的問題。

❷ 如何使用spark做大數據分析

動手實驗Apache Spark的最好方式是使用互動式Shell命令行,Spark目前有Python Shell和Scala Shell兩種互動式命令行。
可以從 這里下載Apache Spark,下載時選擇最近預編譯好的版本以便能夠立即運行shell。
目前最新的Apache Spark版本是1.5.0,發布時間是2015年9月9日。
tar -xvzf ~/spark-1.5.0-bin-hadoop2.4.tgz

運行Python Shell
cd spark-1.5.0-bin-hadoop2.4
./bin/pyspark

在本節中不會使用Python Shell進行演示。
Scala互動式命令行由於運行在JVM上,能夠使用java庫。
運行Scala Shell
cd spark-1.5.0-bin-hadoop2.4
./bin/spark-shell

執行完上述命令行,你可以看到下列輸出:
Scala Shell歡迎信息
Welcome to
____ __
/ __/__ ___ _____/ /__
_\ \/ _ \/ _ `/ __/ '_/
/___/ .__/\_,_/_/ /_/\_\ version 1.5.0
/_/
Using Scala version 2.10.4 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_25)
Type in expressions to have them evaluated.
Type :help for more information.
15/08/24 21:58:29 INFO SparkContext: Running Spark version 1.5.0

下面是一些簡單的練習以便幫助使用shell。也許你現在不能理解我們做的是什麼,但在後面我們會對此進行詳細分析。在Scala Shell中,執行下列操作:
在Spark中使用README 文件創建textFileRDD
val textFile = sc.textFile("README.md")

獲取textFile RDD的第一個元素
textFile.first()
res3: String = # Apache Spark

對textFile RDD中的數據進行過濾操作,返回所有包含「Spark」關鍵字的行,操作完成後會返回一個新的RDD,操作完成後可以對返回的RDD的行進行計數
篩選出包括Spark關鍵字的RDD然後進行行計數
val linesWithSpark = textFile.filter(line => line.contains("Spark"))
linesWithSpark.count()
res10: Long = 19

要找出RDD linesWithSpark單詞出現最多的行,可以使用下列操作。使用map方法,將RDD中的各行映射成一個數,然後再使用rece方法找出包含單詞數最多的行。
找出RDD textFile 中包含單詞數最多的行
textFile.map(line => line.split(" ").size)
.rece((a, b) => if (a > b) a else b)
res11: Int = 14

返回結果表明第14行單詞數最多。
也可以引入其它java包,例如 Math.max()方法,因為map和rece方法接受scala函數字面量作為參數。
在scala shell中引入Java方法
import java.lang.Math
textFile.map(line => line.split(" ").size)
.rece((a, b) => Math.max(a, b))
res12: Int = 14

我們可以很容易地將數據緩存到內存當中。
將RDD linesWithSpark 緩存,然後進行行計數
linesWithSpark.cache()
res13: linesWithSpark.type =
MapPartitionsRDD[8] at filter at <console>:23
linesWithSpark.count()
res15: Long = 19

上面簡要地給大家演示的了如何使用Spark互動式命令行。
彈性分布式數據集(RDDs)
Spark在集群中可以並行地執行任務,並行度由Spark中的主要組件之一——RDD決定。彈性分布式數據集(Resilient distributed data, RDD)是一種數據表示方式,RDD中的數據被分區存儲在集群中(碎片化的數據存儲方式),正是由於數據的分區存儲使得任務可以並行執行。分區數量越多,並行越高。下圖給出了RDD的表示:

Display- Edit
想像每列均為一個分區(partition ),你可以非常方便地將分區數據分配給集群中的各個節點。
為創建RDD,可以從外部存儲中讀取數據,例如從Cassandra、Amazon簡單存儲服務(Amazon Simple Storage Service)、HDFS或其它Hadoop支持的輸入數據格式中讀取。也可以通過讀取文件、數組或JSON格式的數據來創建RDD。另一方面,如果對於應用來說,數據是本地化的,此時你僅需要使用parallelize方法便可以將Spark的特性作用於相應數據,並通過Apache Spark集群對數據進行並行化分析。為驗證這一點,我們使用Scala Spark Shell進行演示:

❸ 科普Spark,Spark是什麼,如何使用Spark

科普Spark,Spark是什麼,如何使用Spark


1.Spark基於什麼演算法的分布式計算(很簡單)

2.Spark與MapRece不同在什麼地方

3.Spark為什麼比Hadoop靈活

4.Spark局限是什麼

5.什麼情況下適合使用Spark

Spark與Hadoop的對比

Spark的中間數據放到內存中,對於迭代運算效率更高。

Spark更適合於迭代運算比較多的ML和DM運算。因為在Spark裡面,有RDD的抽象概念。

Spark比Hadoop更通用

Spark提供的數據集操作類型有很多種,不像Hadoop只提供了Map和Rece兩種操作。比如map, filter, flatMap, sample, groupByKey, receByKey, union, join, cogroup, mapValues, sort,partionBy等多種操作類型,Spark把這些操作稱為Transformations。同時還提供Count, collect, rece, lookup, save等多種actions操作。

這些多種多樣的數據集操作類型,給給開發上層應用的用戶提供了方便。各個處理節點之間的通信模型不再像Hadoop那樣就是唯一的Data Shuffle一種模式。用戶可以命名,物化,控制中間結果的存儲、分區等。可以說編程模型比Hadoop更靈活。

不過由於RDD的特性,Spark不適用那種非同步細粒度更新狀態的應用,例如web服務的存儲或者是增量的web爬蟲和索引。就是對於那種增量修改的應用模型不適合。

容錯性

在分布式數據集計算時通過checkpoint來實現容錯,而checkpoint有兩種方式,一個是checkpoint data,一個是logging the updates。用戶可以控制採用哪種方式來實現容錯。

可用性

Spark通過提供豐富的Scala, Java,Python API及互動式Shell來提高可用性。

Spark與Hadoop的結合

Spark可以直接對HDFS進行數據的讀寫,同樣支持Spark on YARN。Spark可以與MapRece運行於同集群中,共享存儲資源與計算,數據倉庫Shark實現上借用Hive,幾乎與Hive完全兼容。

Spark的適用場景

Spark是基於內存的迭代計算框架,適用於需要多次操作特定數據集的應用場合。需要反復操作的次數越多,所需讀取的數據量越大,受益越大,數據量小但是計算密集度較大的場合,受益就相對較小(大資料庫架構中這是是否考慮使用Spark的重要因素)

由於RDD的特性,Spark不適用那種非同步細粒度更新狀態的應用,例如web服務的存儲或者是增量的web爬蟲和索引。就是對於那種增量修改的應用模型不適合。總的來說Spark的適用面比較廣泛且比較通用。

運行模式

本地模式

Standalone模式

Mesoes模式

yarn模式

Spark生態系統

Shark ( Hive on Spark): Shark基本上就是在Spark的框架基礎上提供和Hive一樣的H iveQL命令介面,為了最大程度的保持和Hive的兼容性,Shark使用了Hive的API來實現query Parsing和 Logic Plan generation,最後的PhysicalPlan execution階段用Spark代替Hadoop MapRece。通過配置Shark參數,Shark可以自動在內存中緩存特定的RDD,實現數據重用,進而加快特定數據集的檢索。同時,Shark通過UDF用戶自定義函數實現特定的數據分析學習演算法,使得SQL數據查詢和運算分析能結合在一起,最大化RDD的重復使用。

Spark streaming: 構建在Spark上處理Stream數據的框架,基本的原理是將Stream數據分成小的時間片斷(幾秒),以類似batch批量處理的方式來處理這小部分數據。Spark Streaming構建在Spark上,一方面是因為Spark的低延遲執行引擎(100ms+)可以用於實時計算,另一方面相比基於Record的其它處理框架(如Storm),RDD數據集更容易做高效的容錯處理。此外小批量處理的方式使得它可以同時兼容批量和實時數據處理的邏輯和演算法。方便了一些需要歷史數據和實時數據聯合分析的特定應用場合。

Bagel: Pregel on Spark,可以用Spark進行圖計算,這是個非常有用的小項目。Bagel自帶了一個例子,實現了Google的PageRank演算法。

End.

❹ spark-shell讀取.log文件獲取日誌信息後,怎麼進行分析比如統計包含404的行數

用spark-shell去進行日誌信息的統計的話,首先第一步就是創建rdd,將數據載入進去。
第二步,就是進行map操作,然後調用filter進行過濾,包含404的頁面,然後調用count進行統計行數。

當然,如果你要進行更詳細的統計,或者操作(如果你的log,每列數量都相同的話),可以使用java編寫自定義的日誌處理類,然後在map的時候,對log進行操作。

閱讀全文

與網優spark怎麼分析數據相關的資料

熱點內容
信息量是怎麼算 瀏覽:778
大數據什麼是績效考核 瀏覽:622
旅遊優惠信息哪裡看 瀏覽:600
高速倒車多久會收到信息 瀏覽:401
杭州聯通信息中心電話是多少 瀏覽:356
電力系統單機信息上傳是怎麼工作 瀏覽:68
東鳳最大的市場是哪個 瀏覽:97
杭州地鐵技術管理人員待遇怎麼樣 瀏覽:176
工廠合資技術分多少 瀏覽:986
羅馬交易所的幣是哪裡來的 瀏覽:343
為什麼交易貓發貨了沒反應 瀏覽:768
哪些渠道可以獲取到新店信息 瀏覽:280
系統技術升級中請稍後登錄什麼意思 瀏覽:334
產權轉讓怎麼交易 瀏覽:754
如何看懂產品的分析 瀏覽:958
如何把手薄數據做成表格 瀏覽:934
數據分析設計需要什麼軟體 瀏覽:80
小程序中wps編輯完成後如何保存 瀏覽:729
如何地推賣產品 瀏覽:228
證券交易所為什麼是會員制 瀏覽:788