哪些spark大數據開發的實例可以用來快速入門?

程序猿猴寶庫



下面我們基於該文件進行 Spark Shell 操作。


1)利用本地文件系統的一個文本文件創建一個新 RDD。

scala>var textFile = sc.textFile(“file://home/Hadoop/SparkData/WordCount/text1”);

textFile:org.apache.spark.rdd.RDD[String] = MappedRDD[1] at textFile at

<console>:12/<console>


2)執行動作操作,計算文檔中有多少行。

scala>textFile.count() //RDD中有多少行

17/05/17 22:59:07 INFO spark.SparkContext:Job finished:count at<console>:15, took 5.654325469 s/<console>

resl:Long = 2

返回結果表明文檔中有“2”行。


3)執行動作操作,獲取文檔中的第一行內容。

scala>textFile.first() // RDD 第一行的內容

17/05/17 23:01:25 INFO spark.SparkContext:Job finished:first at <console>:15,took/<console>

返回結果表明文檔的第一行內容是“hello world”。


4)轉換操作會將一個 RDD 轉換成一個新的 RDD。獲取包含“hello”的行的代碼如下。

scala>var newRDD = textFile.filter (line => line.contains(“hello”)) //有多少行含有 hello

scala>newRDD.ount() // 有多少行含 hello

17/05/17 23:06:33 INFO spark.SparkContext:Job finished:count at <console>:15,took 0.867975549 s/<console>

res4:Long = 2

這段代碼首先通過轉換操作 filter 形成一個只包括含有“hello”的行的 RDD,然後再通過 count 計算有多少行。


5)Spark Shell 的 WordCount 實現

scala> val file = sc.textFile (“file://home/hendoop/SparkData/WordCount/text1”));

scala> val count = file.flatMap(line=>line.split(“”)).map(word => (word,1)).reduceByKey(_+_)

scala> count.collect()

17/05/17 23:11:46 INFO spark.SparkContext:Job finished: collect at<console>:17,/<console>

took 1.624248037 s

res5: Array[(String, Int)] = Array((hello,2),(world,1),(My,1),(is,1),(love,1),(I,1),(John,1),(hadoop,1),(name,1),(programming,1))

使用 sparkContext 類中的 textFile() 讀取本地文件,並生成 MappedBJDD。

使用 flatMap() 方法將文件內容按照空格拆分單詞,拆分形成 FlatMappedRDD。

使用 map(word=>(word,1)) 將拆分的單詞形成 數據對,此時生成 MappedBJDD。

使用 reduceByKey() 方法對單詞的頻度進行統計,由此生成 ShuffledRDD,並由 collect 運行作業得出結果。



i網絡心連心


這個問題我應該可以回答,零基礎學習spark,因為項目需要,硬著頭皮上了,先佔坑。

這幾天剛好被這貨折騰得死去活來的,晚上來答一發。

背景:某文科出長的三流985的cs專業本科,現大三,即將升大四,成績剛好夠保研,已放棄,準備找工作。大一,大二因為活躍於校內各社團,成績並不是很好,並且,尤其重要的是代碼能力很渣。

大三才開始真正接觸編程。

交代背景只是想讓看到這個答案的朋友具有更好的借鑑意義。

接觸 Spark 是因為老師的一個和企業合作的項目需要用到,真正開始接觸 Spark到現在也不過一個多月,不過確實學習到了非常多的東西。

1、首先,搭環境一定是必須的啦,答主當時搭環境,前前後後就折騰了一個星期,linux,linux不懂,各種奇怪的命令,當時折騰linux命令的時候心中一萬隻草泥馬奔騰而過,權限的各種奇奇怪怪的問題,跟著網上的教程來做還會出錯更是傷心。但是經歷這個初始的環境折騰之後,你最基礎的linux命令至少會了,環境搭建過程中的各種配置文件坑爹問題,經歷你的各種搜索之後,你也可以大概知道各種配置文件的作用,這有助於你後面程序出錯的時候查找錯誤。

2、環境搭建好之後,因為項目的關係,你開始要編程了,但是Spark啥也不懂怎麼辦啊。

沒關係,先搭好開發環境。搭好後得看你的項目需求了。根據你的項目需求來思考學習方向。

3、我的項目需求大概是,從mongoDB讀取數據,進行簡單的計算之後丟回mongoDB裡去。

3.1 先搜索Spark如何連接mongoDB,根據我當時的情況,我記得使用某度搜索,關鍵詞 Spark和mongoDB基本是沒啥有用的東西的,所以,這個時候,題主需要學會科學上網,這種比較新的東西,靠某度是沒啥用的,該飛越的時候還是要飛越的,mongo-hadoop-core。

3.2 連接好了之後,不懂 Scala怎麼辦,這個根本不是問題,首先,Spark基本是RDD之間的轉化操作,就map,split等幾個東西而已,剩下的只要大概懂最基本的語法就可以了(默認題主懂C語言),我們暫時不需要scala高級功能。你要是考我語法特性啥的,答主只能說,臣妾做不到啊。

3.3 項目新出了一個坑爹要求啊,要求將計算好的數據同時送到MySQL啊,簡直坑爹有木有,有木有。抱怨歸抱怨,程序還是要好好做的。當時國內某度依然搜索不到任何資料,又飛越了長城,這個問題我應該可以回答,零基礎學習spark,因為項目需要,硬著頭皮上了,先佔坑。

這幾天剛好被這貨折騰得死去活來的,晚上來答一發。

背景:某文科出長的三流985的cs專業本科,現大三,即將升大四,成績剛好夠保研,已放棄,準備找工作。大一,大二因為活躍於校內各社團,成績並不是很好,並且,尤其重要的是代碼能力很渣。

大三才開始真正接觸編程。

交代背景只是想讓看到這個答案的朋友具有更好的借鑑意義。

接觸 Spark 是因為老師的一個和企業合作的項目需要用到,真正開始接觸 Spark到現在也不過一個多月,不過確實學習到了非常多的東西。

1、首先,搭環境一定是必須的啦,答主當時搭環境,前前後後就折騰了一個星期,linux,linux不懂,各種奇怪的命令,當時折騰linux命令的時候心中一萬隻草泥馬奔騰而過,權限的各種奇奇怪怪的問題,跟著網上的教程來做還會出錯更是傷心。但是經歷這個初始的環境折騰之後,你最基礎的linux命令至少會了,環境搭建過程中的各種配置文件坑爹問題,經歷你的各種搜索之後,你也可以大概知道各種配置文件的作用,這有助於你後面程序出錯的時候查找錯誤。

2、環境搭建好之後,因為項目的關係,你開始要編程了,但是Spark啥也不懂怎麼辦啊。

沒關係,先搭好開發環境。搭好後得看你的項目需求了。根據你的項目需求來思考學習方向。

3、我的項目需求大概是,從mongoDB讀取數據,進行簡單的計算之後丟回mongoDB裡去。

3.1 先搜索Spark如何連接mongoDB,根據我當時的情況,我記得使用某度搜索,關鍵詞 Spark和mongoDB基本是沒啥有用的東西的,所以,這個時候,題主需要學會科學上網,這種比較新的東西,靠某度是沒啥用的,該飛越的時候還是要飛越的,mongo-hadoop-core。

3.2 連接好了之後,不懂 Scala怎麼辦,這個根本不是問題,首先,Spark基本是RDD之間的轉化操作,就map,split等幾個東西而已,剩下的只要大概懂最基本的語法就可以了(默認題主懂C語言),我們暫時不需要scala高級功能。你要是考我語法特性啥的,答主只能說,臣妾做不到啊。

3.3 項目新出了一個坑爹要求啊,要求將計算好的數據同時送到MySQL啊,簡直坑爹有木有,有木有。抱怨歸抱怨,程序還是要好好做的。當時國內某度依然搜索不到任何資料,又飛越了長城,發現Spark的新版本有個新功能,insertIntoJDBC,結果這貨也是個坑啊,哎,發現它不會自己關閉,插入數據較多的之後,MySQL連接池不夠用啊,而且這貨根據最新版Spark官方文檔,已經被廢棄了,因此自己寫了一個使用scala連接到MySQL的類(和java連接MySQL差不多)。

4、是的,你沒猜錯,我又遇到坑問題了。這個問題已經摺騰兩三天了,暫時還沒解決,希望各位前輩,能夠指點一點。

坑問題描述:

開發機環境,一個master,一個salve,程序不管是local模式還是standalone模式都運行正常。

服務器環境,一個master,兩個slave,程序在local模式下運行正確,standalone模式拋出java.lang.IllegalStateException open錯誤。目前有較大的可能性,是在連接mongodb進行查詢操作的時候,前面一個操作完之後直接關閉了連接,而後一個操作還沒操作完造成的錯誤。具體問題描述請看這裡mongodb - Spark on standalone cluster throws java.lang.illegalStateException

上面這個問題已經解決了,是因為mongo-hadoop-core版本支持的問題。而最關鍵的是我沒有清理編譯器的緩存,這也導致了,即使一開始我知道是connector版本可能有問題,也沒有解決,這也導致了我多花費了好幾天來搞了這個問題,但是,這次的經歷讓我對如何查找錯誤,如何解決問題,有了更深刻的體會。

強烈建議題主找一個實際項目做!

強烈建議題主找一個實際項目做!

強烈建議題主找一個實際項目做!

實在沒辦法,自己想一個需求,比如寫個程序,隨便找個地抓取一堆數據,然後用Spark來分析數據。知乎有很多如何抓取數據的好問題和好回答,題主可以自行搜索。

最後,提醒題主一句話,Spark並不是一顆銀彈。

估計有人會奇怪,答主說自己編程能力弱還敢搞這個東西,首先我這麼有信心的原因是我大二暑假去一個小公司實習,該公司需要有人做iOS,然後直接丟給我,答主當時,mac啥的,objective-c啥的也不懂,但是沒關係,隨便買兩本書,大概看一下語法,做了書本幾個相關的簡單例子就可以實際操作了,最後還是做成功了,雖然代碼有點亂。但是正是這次的完整的項目經歷,給了我學習的極大信息。

然後,最最重要的一點是,Spark是一個讓人會又恨又愛的東西,為什麼呢?因為你會遇到更種坑問題,但也正是因為如此,解決這種坑問題會給你極大的滿足感,能激發你持續進步。





中亞國際區塊鏈研究院



分享到:


相關文章: