1.你認為為何出現sparksession?
2.sparksession如何建立rdd?
3.sparksession通過那個類來例項化?
4.bulider包含哪些函式?
為何出現sparksession
對於spark1.x的版本,我們最常用的是rdd,如果我們想使用dataframe,則需要通過rdd轉換。隨著dataframe和dataset使用的越來越多,所以spark就尋找了新的切入點--sparksession。如果rdd使用sparkcontext,dateframe和dataset使用sparksession,然後還有sqlcontext和hivecontext,想必太麻煩了。所以官網用sparksession封裝了sqlcontext和hivecontext。然而在2.2版本中,streamingcontext還是單獨存在的。所以我們在使用sparkstreaming,還必須使用streamingcontext來作為入口。
sparksession如何建立rdd
這裡如果你思考的話,可能會想,spark2是否還支援rdd。當然還是支援的。
這裡以下面為例:
我們進入spark-shell,通過sparksession獲取sparkcontext
[scala] 純文字檢視
複製**?
[scala] 純文字檢視
複製**?
1sc.makerdd(list(
1
,
2
,
3
,
4
,
5
))
[scala] 純文字檢視
複製**?
1val
rddlist
=
sc.makerdd(list(
1
,
2
,
3
,
4
,
5
))
[scala] 純文字檢視
複製**?
1val
rl
=
rddlist.map(x
=
>x*x)
[scala] 純文字檢視
複製**?
sparksession如何例項化
通過靜態類builder來例項化。
builder又有很多方法,包括:
用來設定應用程式名字,會顯示在spark web ui中
值型別:sparksession.builder
2.config函式
這裡有很多過載函式。其實從這裡我們可以看出過載函式,是針對不同的情況,使用不同的函式,但是他們的功能都是用來設定配置項的。
1.config(sparkconf conf)
根據給定的sparkconf設定配置選項列表。
2.config(string key, boolean value)
設定配置項,針對值為boolean的
3.config(string key, double value)
設定配置項,針對值為double的
4.config(string key, long value)
設定配置項,針對值為long 的
5.config(string key, string value)
設定配置項,針對值為string 的
值型別:sparksession.builder
3.enablehivesupport函式
表示支援hive,包括 鏈結持久化hive metastore, 支援hive serdes, 和hive使用者自定義函式
值型別:
sparksession.builder
4.getorcreate函式
getorcreate()
獲取已經得到的 sparksession,或則如果不存在則建立乙個新的基於builder選項的sparksession
值型別:
sparksession
5.master函式
master(string master)
設定spark master url 連線,比如"local" 設定本地執行,"local[4]"本地執行4cores,或則"spark://master:7077"執行在spark standalone 集群。
值型別:sparksession.builder
6.withextensions函式
withextensions(scala.function1f)
這允許使用者新增analyzer rules, optimizer rules, planning strategies 或則customized parser.這一函式我們是不常見的。
值型別:sparksession.builder
了解了上面函式,對於官網提供的sparksession的例項化,我們則更加容易理解
[scala] 純文字檢視
複製**?
1234
5sparksession.builder
.master(
"local"
)
"word count"
)
.config(
"spark.some.config.option"
,
"some-value"
)
.getorcreate()
對於上面你是否又發現乙個問題?
這時候我們看到他們的值型別都為sparksession.builder,每呼叫一次,返回值都為sparksession.builder,那麼sparksession.builder能呼叫自己的函式,是理所當然的。
這裡參考官網spark2.2文件
關於spark2 x後的SparkSession
apache spark2.0 引入了sparksession,其為使用者提供了乙個統一的切入點來使用spark的各項功能,並且允許使用者通過它呼叫dataframe和dataset相關api來編寫spark程式。最重要的是,它減少了使用者需要了解的一些概念,使得我們可以很容易地與spark互動,在...
Spark學習筆記 2
val input sc.textfile file path val wordsrdd input.map x x.split method 1 val result wordsrdd.map x x,1 reducebykey x,y x y method 2 val result wordsr...
Spark 寒假 實驗2
printf 級數的前n項和為 f n sum 測試截圖 圓形 class circle point point,r double extends shape point point with drawable 重寫,列印 override def draw unit 重寫,移動 override ...