Spark之Scala語言常見應用舉例

2021-07-08 19:54:41 字數 1532 閱讀 8370

作為乙個初學者,初次學習spark,分享一下自己的心得。

在學習spark程式設計時,首先得準備編譯環境,確定程式語言,本人用的是scala語言,intellij idea編譯環境,同時得準備四個包,分別是:spark-assembly-1.3.1-hd-2.6.0.jar、scala-compiler.jar、scala-library.jar、scala-reflect.jar。將這四個包匯入,才能開始自己的scala程式設計之旅。

由於hadoop環境沒有搭建好,所以在練習scala程式設計的時候,就不能再hadoop之上讀取hdfs的資料,不過不礙事,為了練習程式設計,我們可以讀取本地的txt檔案,然後將結果儲存到txt中,這樣不僅能感受到spark rdd的強大,也能達到我們練習程式設計的目的。下來主要是用例項說明一下spark rdd常用的一下操作。

首先我們得配置sparkconf(),一般是讀取hdfs上的檔案,但是這裡讀取本地txt檔案,配置sparkconf()如下:

解釋一下:local[n]:本地模式,使用 n 個執行緒。

下面這個程式是使用count()統計行數

object yb 

}

統計詞頻並按照詞頻排序:

object yb .sortbykey(true,1)

worldcounts.foreach(println)

}}

map()和flatmap()區別:
object yb

由上面程式可得

flatmap

是由map

和flatten

綜合而來,同時也可以發現

flatmap

最終都會輸出一串的序列,而

map輸出是多個集合。

union()用法:

object yb

}

笛卡爾積cartesian()用法:
object yb

}

groupbykey()和 reducebykey()區別:
object yb .sortbykey(false,1)//按照從大到小的順序排序

val topk=worldcounts.top(10)

topk.foreach(println)//輸出排名前十的詞頻

}}

groupbykey

不在本地

merge

統一在主節點

merge

reducebykey

在本地merge

然後在到主節點

merge

reduce ()用法:

object yb

}//reduce將rdd中元素兩兩傳遞給輸入函式,同時產生乙個新的值,新產生的值與rdd中下乙個元素再被傳遞給輸入函式直到最後只有乙個值為止

其本質相當於乙個滿二叉樹的左右孩子相加賦給根節點的過程。

安裝Scala語言和Spark

解壓tar xvf scala 2.11.6.tgz遷移目錄 sudo mv scala 2.11.6 usr local scala 修改環境變數 sudo vim bashrc export scala home usr local scala export path path scala ho...

Spark學習鏈結 Scala

spark初學者學習鏈結 1.scala 官方 2.spark官方指南 3.spark 機器學習庫官方指南 4.spark rdd程式設計指南 2中也有 官方 5.spark dataframe dataset程式設計指南 2中也有 6.pyspark程式設計指南 7.工具書 learning sp...

Spark基礎 Scala集合操作

1 scala的集合操作 package com.xlucas import scala.collection.mutable created by xlucas on 2017 8 17 0017.1 預設情況下map構造的是不可變的集合,裡面的內容不可修改,一旦修改就變成新的map,原有的map...