1. 程式人生 > >spark流式讀取hdfs中資料

spark流式讀取hdfs中資料

名詞解釋:

spark streaming:
定義
:一個對實時資料進行高容通量、容錯處理的流式處理系統,可以對多種資料來源進行Map、reduce和join等複雜操作,並將結果儲存到外部檔案系統、資料庫活應用到實時儀表盤。


流式資料:像流水一樣一點一點流過來流式資料被封裝成二進位制的流。
流式處理:同樣像流水一樣一點點處理。如果全部接受資料以後在處理的話會有很大延遲也會消耗大量記憶體。
計算流程:Sparkstreaming是將流式計算分解成短小的批處理作業。
spark streaming在內部的處理機制是接收實時流的資料,並根據一定的時間間隔拆分成一批批的資料,然後通過spark Engine處理這批資料,最終得到處理後的一批批結果資料。

#spark-shell

scala>

spark:


一:流式讀取資料 方法一


import org.apache.spark._
import org.apache.spark.streaming._
import org.apache.spark.streaming.StreamingContext._ 



val ssc = new StreamingContext(sc, Seconds(10))



//讀取hdfs上/sdzn_yhhx/tours_details/目錄下的檔案

val ssc = new StreamingContext(sc, Seconds(2))//Seconds(2)重新整理間隔時間

val lines = ssc.textFileStream("hdfs://192.168.200.45:8022/sdzn_yhhx/tours_details/")
val words = lines.flatMap(_.split(","))
val wordCounts = words.map(x => (x, 1)).reduceByKey(_ + _)

wordCounts.print()
wordCounts.saveAsTextFiles("hdfs://192.168.200.45:8022/sdzn_yhhx/spark/")//指定計算結果的儲存路徑
ssc.start()
ssc.awaitTermination()