Spark 2.4.0 程式設計指南--快速入門
阿新 • • 發佈:2018-12-26
Spark 2.4.0 程式設計指南–快速入門
更多資源
視訊
- Spark 2.4.0 程式設計指南–快速入門(bilibili視訊) : https://www.bilibili.com/video/av38193405/?p=2
文件
- (官網文件): http://spark.apache.org/docs/2.4.0/quick-start.html
- (英譯中)(官網文件)Spark 2.4.0 程式設計指南(快速入門)(pdf):
前置條件
- 已安裝好java(選用的是java 1.8.0_191)
- 已安裝好scala(選用的是scala 2.11.121)
- 已安裝好hadoop(選用的是Hadoop 3.1.1)
- 已安裝好spark(選用的是spark 2.4.0)
技能標籤
- Spark 2.4.0 Spark session available as ‘spark’
- 在Spark 2.0之後,RDD被資料集(Dataset)取代
- Spark session 讀取HDFS檔案做為資料集
- 資料集函式,count(),first(),filter(),reduce()
- 統計所有行單詞總個數
- 計算行中最多單詞的個數
- 計算最多單詞個數的行
- 按單詞分組統計個數(WordCount)
- 官網: http://spark.apache.org/docs/2.4.0/quick-start.html
示例
- Spark session 讀取HDFS檔案做為資料集
val dataSet = spark.read.textFile("/home/liuwen/data/a.txt")
- 資料集呼叫count()函式
dataSet.count()
- 資料集呼叫first()函式
//其實呼叫的是head()函式
dataSet.first()
- 資料集呼叫show()函式
dataSet.show() //預設取前20行資料,並進行20個字元的截斷
dataSet.show(10,false) //取前20行資料,並且不進行截斷
- 資料集呼叫filter()函式
dataSet.filter(line => line.contains("spark"))
- 統計所有行單詞總個數
import spark.implicits._
val lineWordLength = dataSet.map( line => line.split(" ").size)
val result = lineWordLength.reduce((a,b) => a + b)
- 計算行中最多有多少個單詞
import spark.implicits._
val lineWordLength = dataSet.map( line => line.split(" ").size)
val result = lineWordLength.reduce((a,b) => Math.max(a,b))
- 計算最多單詞個數的行
import spark.implicits._
val result = dataSet.reduce((a,b) => {
if(a.split(" ").size > b.split(" ").size) a else b
})
- 按單詞分組統計單詞個數(WorldCount)
import spark.implicits._
val distFile = spark.read.textFile("hdfs://standalone.com:9000/home/liuwen/data/word.txt")
//方式一
//val dataset = distFile.flatMap( line => line.split(" ")).groupByKey(x => x ).count()
//方式二
val dataset = distFile.flatMap( line => line.split(" ")).map(x => (x,1)).groupByKey(x => x).reduceGroups((a,b) => (a._1,a._2+b._2))
//方式三
//val dataset = distFile.flatMap( line => line.split(" ")).groupByKey(identity ).count()
end