在hive中寫sql生成的mapreduce程式,卡了12個小時。
經過我的一番調查,認為是產生了資料傾斜,我的主表需要4個表一塊union all,所以資料量還是很多的。
collect_list輸出乙個陣列,中間結果會放到記憶體中,所以如果collect_list聚合太多資料,會導致記憶體溢位。而且我還要將該陣列排序,使用了sort_array。也就是我要對全部的手機號,做這種聚合操作,如果shuffle後相同的key過多,那麼hash的結果就是大量相同的key進入到同乙個reduce中,導致資料傾斜。
1.調整reduce所執行的記憶體大小與reduce的個數
我這裡已經是調到8個g了
2.使用distribute by和sort by 排序,我這裡儘管沒有解決collect_list聚合太多資料導致的問題。但我改變了用sort_array排序
distribute by的功能是:distribute by 控制map結果的分發,它會將具有相同欄位的map輸出分發到乙個reduce節點上做處理。
sort by是區域性排序。sort by會根據資料量的大小啟動一到多個reducer來幹活。
工作中遇到的問題
1.環境oracle9 vs2008 問題 aspnet提示 無法載入 dll oramts.dll 找不到指定的模組。異常來自 hresult 0x8007007e 翻來覆去折騰了好久最後終於解決方法是 執行oracle安裝檔案增加oracle windows inte ces 模組功能。糾結啊!...
工作中遇到的問題
問題背景 第二天領導要去給客戶演示專案,讓我在演示電腦上部署我們的專案。由於我們的專案的資料庫使用的是oracle 10g,但是我從來沒有進行過導資料庫和還原資料庫的操作,第一次操作都是找度娘,而且還是很迷茫。剛開始我一直想辦法在我的plsql上把資料庫匯出來,但是一直摸不到竅門,而且我們的資料庫較...
工作中遇到的問題
一 cannot connect to the docker daemon at unix var run docker.sock.is the docker daemon running?docker本身已安裝正常,當執行docker images命令時,出現 cannot connect to ...