目錄:
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指定分割槽 這...