本申請涉及數(shù)據(jù)處理和金融科技,尤其涉及一種基于spark的小文件合并方法、裝置、計算機設備及存儲介質(zhì)。
背景技術:
1、隨著計算機技術的發(fā)展,大數(shù)據(jù)技術在金融領域的應用日益廣泛,可以幫助金融機構(gòu)對數(shù)據(jù)進行分析處理,以更好地識別、評估和管理風險,包括信用風險、市場風險、操作風險等。apache?spark作為一個快速、通用的大規(guī)模數(shù)據(jù)處理引擎,在金融領域的數(shù)據(jù)分析和系統(tǒng)構(gòu)建中發(fā)揮著越來越重要的作用,可以應用于離線跑批計算、金融數(shù)據(jù)etl(extract(提取)、transform(轉(zhuǎn)換)、load(加載))處理、數(shù)據(jù)挖掘、機器學習等金融領域的大數(shù)據(jù)應用場景。使用spark的數(shù)據(jù)處理能力,對來自不同數(shù)據(jù)源的金融數(shù)據(jù)進行整合和清洗,可以獲得規(guī)范化的數(shù)據(jù)集。但是,利用spark?sql對數(shù)據(jù)進行etl處理寫入分布式存儲過程中,會產(chǎn)生較多的小文件,在spark任務達到一定規(guī)模時,產(chǎn)生的小文件數(shù)過多,會嚴重影響整個分布式集群的性能和穩(wěn)定,為spark任務增加了不穩(wěn)定性因素。因此如何減少小文件生成,進而提高spark任務的穩(wěn)定性成為了亟需解決的問題。
技術實現(xiàn)思路
1、本申請?zhí)峁┝艘环N基于spark的小文件合并方法、裝置、計算機設備及存儲介質(zhì),以減少小文件生成,進而提高spark任務的穩(wěn)定性。
2、第一方面,本申請?zhí)峁┝艘环N基于spark的小文件合并方法,所述方法包括:
3、在接收到待寫入數(shù)據(jù)時,獲取所述待寫入數(shù)據(jù)對應的數(shù)據(jù)查詢指令以及待寫入數(shù)據(jù)表;
4、基于所述數(shù)據(jù)查詢指令以及所述待寫入數(shù)據(jù)表,確定寫入邏輯計劃;
5、基于所述寫入邏輯計劃,對所述待寫入數(shù)據(jù)表進行重分區(qū),獲得重分區(qū)結(jié)果,并將所述待寫入數(shù)據(jù)寫入所述目標數(shù)據(jù)表中,以對小文件進行合并。
6、第二方面,本申請還提供了一種基于spark的小文件合并裝置,所述裝置包括:
7、待寫入表獲取模塊,用于在接收到待寫入數(shù)據(jù)時,獲取所述待寫入數(shù)據(jù)對應的數(shù)據(jù)查詢指令以及待寫入數(shù)據(jù)表;
8、邏輯計劃確定模塊,用于基于所述數(shù)據(jù)查詢指令以及所述待寫入數(shù)據(jù)表,確定寫入邏輯計劃;
9、數(shù)據(jù)寫入模塊,用于基于所述寫入邏輯計劃,對所述待寫入數(shù)據(jù)表進行重分區(qū),獲得重分區(qū)結(jié)果,并將所述待寫入數(shù)據(jù)寫入所述目標數(shù)據(jù)表中,以對小文件進行合并。
10、第三方面,本申請還提供了一種計算機設備,所述計算機設備包括存儲器和處理器;所述存儲器,用于存儲計算機程序;所述處理器,用于執(zhí)行所述計算機程序并在執(zhí)行所述計算機程序時實現(xiàn)如上述的基于spark的小文件合并方法。
11、第四方面,本申請還提供了一種計算機可讀存儲介質(zhì),所述計算機可讀存儲介質(zhì)存儲有計算機程序,所述計算機程序被處理器執(zhí)行時使所述處理器實現(xiàn)如上述的基于spark的小文件合并方法。
12、本申請公開了一種基于spark的小文件合并方法、裝置、計算機設備及存儲介質(zhì),在接收到待寫入數(shù)據(jù)時,獲取所述待寫入數(shù)據(jù)對應的數(shù)據(jù)查詢指令以及待寫入數(shù)據(jù)表;基于所述數(shù)據(jù)查詢指令以及所述待寫入數(shù)據(jù)表,確定寫入邏輯計劃;基于所述寫入邏輯計劃,對所述待寫入數(shù)據(jù)表進行重分區(qū),獲得重分區(qū)結(jié)果,并將所述待寫入數(shù)據(jù)寫入所述目標數(shù)據(jù)表中,以對小文件進行合并。本申請可以在獲得待寫入數(shù)據(jù)后以及在數(shù)據(jù)寫入之前對待寫入數(shù)據(jù)表進行重分區(qū)處理,將待寫入數(shù)據(jù)寫入到重分區(qū)后的待寫入數(shù)據(jù)表中,使得小文件得到自動合并,減少了小文件的產(chǎn)生,提高了spark任務的穩(wěn)定性。
1.一種基于spark的小文件合并方法,其特征在于,包括:
2.根據(jù)權利要求1所述的基于spark的小文件合并方法,其特征在于,所述基于所述寫入邏輯計劃,對所述待寫入數(shù)據(jù)表進行重分區(qū),獲得重分區(qū)結(jié)果,并將所述待寫入數(shù)據(jù)寫入所述目標數(shù)據(jù)表中,包括:
3.根據(jù)權利要求2所述的基于spark的小文件合并方法,其特征在于,所述預設條件包括所述數(shù)據(jù)查詢指令已解析、所述待寫入數(shù)據(jù)表的桶規(guī)格為空以及所述數(shù)據(jù)查詢指令中存在進行重分區(qū)的表達式。
4.根據(jù)權利要求2所述的基于spark的小文件合并方法,其特征在于,所述對所述待寫入數(shù)據(jù)表進行重分區(qū),獲得所述重分區(qū)結(jié)果,包括:
5.根據(jù)權利要求4所述的基于spark的小文件合并方法,其特征在于,所述基于所述寫入邏輯計劃,獲取所述待寫入數(shù)據(jù)表的動態(tài)分區(qū)列,包括:
6.根據(jù)權利要求4所述的基于spark的小文件合并方法,其特征在于,所述基于所述寫入邏輯計劃,獲取所述待寫入數(shù)據(jù)表的動態(tài)分區(qū)列,包括:
7.根據(jù)權利要求4-6任一項所述的基于spark的小文件合并方法,其特征在于,所述基于所述待寫入數(shù)據(jù)以及所述動態(tài)分區(qū)列,構(gòu)建重分區(qū)邏輯計劃,包括:
8.一種基于spark的小文件合并裝置,其特征在于,包括:
9.一種計算機設備,其特征在于,所述計算機設備包括存儲器和處理器;
10.一種計算機可讀存儲介質(zhì),其特征在于,所述計算機可讀存儲介質(zhì)存儲有計算機程序,所述計算機程序被處理器執(zhí)行時使所述處理器實現(xiàn)如權利要求1至7中任一項所述的基于spark的小文件合并方法。