spark2 SparkSession思考與總結1

2021-08-25 02:39:56 字數 3855 閱讀 7398

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] 純文字檢視

複製**?

1valrddlist=sc.makerdd(list(1,2,3,4,5))

[scala] 純文字檢視

複製**?

1valrl=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 ...