Spark系列之分布式資料集 DataFrame

2022-06-29 21:03:15 字數 1140 閱讀 4953

目錄:

1、df的建立

2、臨時表

3、sql查詢

4、rdd到df的轉換

5、df的api

簡介dataframe是一種不可變的分布式資料集,資料被組織成指定的列。和資料庫中的表類似。

以下的spark變數均由sparksession建立。

1、dataframe的建立

jsondf = spark.read.json(jsonstriing)

jsondf = spark.createdataframe(jsonstringrdd,schema)  schema是第四部分的模式

2、通過df建立臨時表

jsondf.createorreplacetempview("jsontable")aaaa

3、sql查詢

spark.sql("select * from jsontable").collect()

spark.sql()執行完成後生成的是df,可以進一步註冊臨時表。

使用spark sql 分析查詢最常見的儲存格式是parquet檔案格式。

4、rdd到df的轉換,有兩種方式:

1) 反射推斷模式

2)程式設計方式指定

4.1 反射推斷模式是框架自行推斷的根據資料型別

4.2 程式設計方式指定是使用structtype和structfiled定義指定。

如:schema = structtype([

structfield("id",longtype(),true),

structfield("name",stringtype(),true) ])

其中structfield中的三個引數,分別代表:

第乙個引數,欄位的名字

第二個引數,欄位的型別

第三個引數,此欄位是否為空

5、df的常用函式

1) count,統計df中的行數

2)select ,篩選字段,df.select("id","name")  或 df.select(df.id, df.name)

3)filter,過濾字句 df.select("id","name").filter("name=11")   或 df.select("name","age").filter("name like 'b%'").show()

Redis系列之分布式快取

由於原有快取失效,新快取未到期間所有原本應該訪問快取的請求都去查詢資料庫了,而對資料庫 cpu 和記憶體造成巨大壓力,嚴重的會造成資料庫宕機。快取穿透是指使用者查詢資料,在資料庫沒有,自然在快取中也不會有。這樣就導致使用者查詢的時候,在快取中找不到,每次都要去資料庫再查詢一遍,然後返回空 相當於進行...

分布式之分布式事務

被人問到分布式事務,之前學rabbitmq 的時候學到過rabbitmq 高階的事務,因為沒有用過,所有沒有回答好。這裡總結一下。1.單機版事務。事務的四大特性 acid a.原子性 b.一致性 c.隔離性 d.永續性 單機事務可以通過設定事務的隔離級別 參見spring 的事務隔離級別 2.分布式...

spark分布式資料集RDD 的建立

1 啟動spark spark shell master local 2 2 建立乙個最簡單的rdd val rdd sc.makerdd list 1,2,3,4,5 3 檢視rdd rdd.collect 返回res0 array int array 1,2,3,4,5 4 rdd指定分割槽 這...