記錄一些spark快取中的方法

2021-08-19 23:33:28 字數 1160 閱讀 3161

此為使用者自己選擇釋放需要的已經快取的rdd。

def unpersistunuse(rddstring: set[string], sc: sparkcontext) = 

})}

針對多個sp序列跑,其中採用多個sp之間進行重新new sparkcontext和sc.stop進行,否則中間許多快取問題無法解決,始終會有記憶體溢位的問題,重新初始化sparkcontext會大概有40s到50s 的時間,針對幾百g的資料跑數來說,微乎其微,主要考慮安全性,可以大表初始化一次sparkcontext,多個小表初始化一次。多次測試進行優化

採用insert into 表名 (字段,欄位1)select 字段,欄位1 from 表名,hive支援這種方式的insert into方式,可以解決一些關於表與表之前插入資料時表結構不一致的情況。(一般為增加或減少字段問題)

spark 提交模式中,yarn-client模式和yarn-cluster模式在使用過程有部分差異,其中表現為:yarn-client會顯示stage進度,yarn-cluster是不會顯示的。程式中如果存在多次sparkcontext初始化,中間出現sc.stop,yarn-client會繼續初始化,而yarn-cluster不會繼續初始化。

count(distinct a)over(partion by c,d)

該函式在hive 1.2中不支援,在hive2.1以後才支援,使用

count(a) over (partion by c,d,a)這種方式來解決。

count(distinct a)這種方式是支援的

找到乙個比較好的辦法來檢驗已經替換的sparksql語法,將原先改變之後的語法邏輯,在oracle上做減集 a minus b,b minus a,比較是否出現差集。

parquet如果在多次讀寫錯誤資料,有可能是parquet被寫壞了,將表刪除重新建立,還有一種情況,第一次寫,不出錯,第二次寫parquet出錯,報parquet找不到,處理方法,要麼使用refresh table,清理下之前的表,要麼使用count()觸發一下rdd。注意觸發一定要在writeparquet前觸發

在xml解析中,報表層邏輯複雜步驟多,所以測試時最好將多個臨時表落地,才能夠將後面的步驟進行測試,否則每次重跑前面多步,使得測試開發效率大大降低。

不支援null這種資料型別,必須使用『0』等數字代替

Spark中的一些概念

一次action操作會觸發rdd的延遲計算,我們把這樣的一次計算稱作乙個job。窄依賴指的是 每個parent rdd 的 partition 最多被 child rdd的乙個partition使用 寬依賴指的是 每個parent rdd 的 partition 被多個 child rdd的part...

一些常用方法的記錄

1.建立臨時目錄 建立臨時目錄 try catch ioexception e 結果 2.正規表示式的組 測試正規表示式 string slippingwindowpointoprand s s s string slippingwindowpointcollectoprand slippingwi...

iOS中的一些快取處理

獲取本地快取目錄路徑 nsstring imagecachedir 獲取本地快取目錄url nsurl imagecacheurl check本地是否存在指定檔案 會根據檔案字尾名自動判定到哪個目錄尋找檔案 param filename 檔名 return y 存在 n 不存在 bool filee...