新四季網

一種Hive數倉動態智能分區方法及系統與流程

2024-04-15 18:05:05


一種hive數倉動態智能分區方法及系統
技術領域
1.本發明涉及數倉動態分區技術領域,特別是涉及一種hive數倉動態智能分區方法及系統。


背景技術:

2.本部分的陳述僅僅是提供了與本發明相關的背景技術信息,不必然構成在先技術。
3.目前分布式能源併網數據量巨大,海量監測數據是hive數倉中一個或幾個分區所容納不了的,因此海量監測數據存入hive數倉的過程中會涉及hive數倉分區。
4.但是,現有hive數倉的分區是隨機的,因此插入分區表中的業務數據也是隨機的;那麼在後續進行查詢等操作時,存在處理效率低的問題,導致後續針對數倉數據應用時讀取效率低下,因此需要一種能夠提高處理效率的hive數倉動態智能分區技術。


技術實現要素:

5.為了解決上述問題,本發明提出了一種hive數倉動態智能分區方法及系統,通過設定影響hive數倉動態分區的動態因子,改變底層分區算法邏輯,且由此在查詢時過濾不需要掃描的分區,從而減少數據掃描量,提高查詢效率。
6.為了實現上述目的,本發明採用如下技術方案:
7.第一方面,本發明提供一種hive數倉動態智能分區方法,包括:
8.根據業務需要,設定hive數倉動態分區的動態因子;
9.獲取數據存儲指令;
10.根據數據存儲指令中待執行的sql語句信息,判定執行sql語句所需的動態因子;
11.根據確定的動態因子劃分存儲分區,並將對應的業務數據存儲至對應的分區中,動態完成hive數倉的分區。
12.作為可選擇的實施方式,所述動態因子包括四類;其中,動態因子0表示無需分區,動態因子1表示全國業務,動態因子2表示各省份業務,動態因子3表示各地市業務。
13.作為可選擇的實施方式,查詢業務數據時,接收查詢指令,確定所屬動態因子,根據動態因子掃描對應的分區,從而完成數據查詢。
14.作為可選擇的實施方式,掃描分區的過程中,初始化根節點x,獲取與根節點x直接連接的節點y,遞歸搜索以y為根的子樹,計算x的追溯值,直至得到全部x的追溯值,從而得到最小訪問時間的目標結果。
15.作為可選擇的實施方式,根據動態因子進行數據掃描,過濾不需要掃描的分區。
16.作為可選擇的實施方式,查詢業務數據的過程還包括:
17.初始化根節點x的時間戳與追溯值,確定根節點x的關係指向;
18.獲取與根節點x直接連接的第一個相鄰節點的序號;以及迭代獲取剩下的與根節點x直接連接的節點的序號,從而對每個相鄰節點的序號執行tarjan算法,循環依次判斷直
接相連的節點y的序號i是否被訪問過;
19.根據判斷結果,判斷是否進行分區以及進行數據搜索。
20.作為可選擇的實施方式,若當前節點y沒有被訪問過,且動態因子表示無需分區,則按原有邏輯執行;
21.若當前節點y沒有被訪問過,且動態因子表示需分區,則根據動態因子進行動態分區;
22.分區後,遞歸搜索以y為根的子樹,計算x的追溯值,直至得到全部x的追溯值,從而得到最小訪問時間的目標結果。
23.第二方面,本發明提供一種hive數倉動態智能分區系統,包括:
24.動態因子指定模塊,被配置為根據業務需要,設定hive數倉動態分區的動態因子;
25.指令獲取模塊,被配置為獲取數據存儲指令;
26.動態因子確定模塊,被配置為根據數據存儲指令中待執行的sql語句信息,判定執行sql語句所需的動態因子;
27.分區模塊,被配置為根據確定的動態因子劃分存儲分區,並將對應的業務數據存儲至對應的分區中,動態完成hive數倉的分區。
28.第三方面,本發明提供一種電子設備,包括存儲器和處理器以及存儲在存儲器上並在處理器上運行的計算機指令,所述計算機指令被處理器運行時,完成第一方面所述的方法。
29.第四方面,本發明提供一種計算機可讀存儲介質,用於存儲計算機指令,所述計算機指令被處理器執行時,完成第一方面所述的方法。
30.與現有技術相比,本發明的有益效果為:
31.本發明提出一種hive數倉動態智能分區方法及系統,將海量監測數據根據實際業務需求,即全國省市縣行政區域的數據按各自行政區域劃分分區,將全國各省的數據單獨分區存放,每個省各地市的分布式能源數據單獨分區存放,後續進行查詢等操作時,相比於hive數倉隨機分區、隨機存儲數據,本發明方法處理效率有很大提高。
32.本發明提出一種hive數倉動態智能分區方法及系統,通過設定hive數倉動態分區的動態因子,改變底層分區算法邏輯,且由此在查詢時過濾不需要掃描的分區,從而減少數據掃描量,提高執行性能,查詢效率更高。
33.本發明提出一種hive數倉動態智能分區方法及系統,將hive的自動分區技術優化為智能動態分區,更符合業務邏輯和人機操作邏輯,且通過查詢智能動態分區後的分區結構,提高查詢效率。涉及全國各省份、各地市行政區域性質的大數據智能存儲的業務,都可以用此基於改進tarjan算法的hive數倉智能分區技術,智能改變hive分區方式,提高海量數據的存儲、檢索等操作效率。
34.本發明附加方面的優點將在下面的描述中部分給出,部分將從下面的描述中變得明顯,或通過本發明的實踐了解到。
附圖說明
35.構成本發明的一部分的說明書附圖用來提供對本發明的進一步理解,本發明的示意性實施例及其說明用於解釋本發明,並不構成對本發明的不當限定。
36.圖1為本發明實施例1提供的hive數倉動態智能分區方法流程圖。
具體實施方式
37.下面結合附圖與實施例對本發明做進一步說明。
38.應該指出,以下詳細說明都是示例性的,旨在對本發明提供進一步的說明。除非另有指明,本文使用的所有技術和科學術語具有與本發明所屬技術領域的普通技術人員通常理解的相同含義。
39.需要注意的是,這裡所使用的術語僅是為了描述具體實施方式,而非意圖限制根據本發明的示例性實施方式。如在這裡所使用的,除非上下文另外明確指出,否則單數形式也意圖包括複數形式,此外,還應當理解的是,術語「包括」和「具有」以及他們的任何變形,意圖在於覆蓋不排他的包含,例如,包含了一系列步驟或單元的過程、方法、系統、產品或設備不必限於清楚地列出的那些步驟或單元,而是可包括沒有清楚地列出的或對於這些過程、方法、產品或設備固有的其它步驟或單元。
40.在不衝突的情況下,本發明中的實施例及實施例中的特徵可以相互組合。
41.實施例1
42.hive分區又分為單值分區、範圍分區,單值分區又分為靜態分區和動態分區。分區的含義:設一張表名為persionrank表,記錄每個人的評級,有id、name、score欄位,便可以創建分區rank,rank不是表中的列,可以把它當做虛擬列,並將相應數據導入指定分區,即將數據插入指定目錄。
43.hive分區相關的語句:
44.set hive.exec.dynamic.partition=true;
‑‑
是否允許動態分區;默認值:false;是否開啟動態分區功能,默認false關閉;使用動態分區時候,該參數必須設置成true。
45.set hive.exec.dynamic.partition.mode=nonstrict;
‑‑
分區模式設置;默認值:strict;動態分區的模式,默認strict,表示必須指定至少一個分區為靜態分區。nonstrict模式:表示允許所有的分區欄位都可以使用動態分區。
46.set hive.exec.max.dynamic.partitions.pernode=1000;
‑‑
單個節點上的mapper/reducer允許創建的最大分區;默認值:100;在每個執行mr的節點上,最大可以創建多少個動態分區,該參數需要根據實際的數據來設定;比如:源數據中包含了一年的數據,即day欄位有365個值,那麼該參數就需要設置成大於365,如果使用默認值100,則會報錯。
47.set hive.exec.max.dynamic.partitions=1500;
‑‑
允許動態分區的最大數量;默認值:1000;在所有執行mr的節點上,最大一共可以創建多少個動態分區。
48.hive.exec.max.created.files=100000;
‑‑
一個mapreduce作業能創建的hdfs文件最大數;默認值:100000;整個mr job中,最大可以創建多少個hdfs文件。一般默認值足夠了,除非你的數據量非常大,需要創建的文件數大於100000,可根據實際情況加以調整。
49.hive.error.on.empty.partition=false;
‑‑
在動態分區插入產生空結果時是否拋出異常。
50.在本實施例中,提供一種基於改進tarjan算法的hive數倉動態智能分區方法,提高hive數倉查詢效率,解決隨機分區不均勻導致的查詢效率慢的問題;
51.如圖1所示,具體包括:
52.根據業務需要,設定hive數倉動態分區的動態因子;
53.獲取數據存儲指令;
54.根據數據存儲指令中待執行的sql語句信息,判定執行sql語句所需的動態因子;
55.根據確定的動態因子劃分存儲分區,並將對應的業務數據存儲至對應的分區中,動態完成hive數倉的分區。
56.在本實施例中,根據業務實際需要,基於改進的tarjan算法,增加一個代表影響hive數倉動態分區的動態因子;
57.所述動態因子包括四類;其中,動態因子0表示無需分區;動態因子1表示全國業務;動態因子2表示各省份業務;動態因子3表示各地市業務。
58.在本實施例中,獲取此次需要執行的sql語句信息;判定此次執行sql語句需要動態分區的動態因子,動態修改分區算法,智能生成分區參數;根據智能分區參數,自動動態實現hive數倉的分區。
59.數倉層內部的劃分不是為了分層而分層,分層是為了解決etl任務及工作流的組織、數據的流向、讀寫權限的控制、不同需求的滿足等各類問題。當一個大表和小表進行join,大表的join列是分區列,小表的join列不是分區列時,hive的動態分區剪裁就會收集小表的join列的集合,發送給tez am,am在為大表計算split時,會根據集合的值過濾大表不需要掃描的分區,從而減少數據掃描量,提高sql執行性能,這是採用本實施例方法通過設置動態因子,按省市縣行政區域劃分分區後查詢效率高的依據。本實施例通過改進的tarjan算法,改變底層分區算法邏輯,過濾大表不需要掃描的分區,從而減少數據掃描量,提高sql執行性能。
60.在本實施例中,改進後的數據處理邏輯中,輸入參數為:當前搜索樹的根節點、當前搜索樹根節點代表的序號和動態因子。
61.具體流程包括:
62.(1)在搜索之前,初始化根節點x的時間戳與追溯值,確定根節點x的關係指向;
63.其中,追溯值表示從當前節點x作為搜索樹的根節點出發,能夠訪問到的所有節點中時間戳最小的值;
64.時間戳用來標記每個節點在進行深度優先搜索時被訪問的時間順序。
65.(2)通過head變量獲取與根節點x直接連接的第一個相鄰節點的序號;
66.(3)通過next變量,迭代獲取剩下的與根節點x直接連接的節點的序號;
67.(4)對每個相鄰節點的序號執行tarjan算法,進行深度優先遞歸操作,循環依次判斷直接相連的節點y的序號i是否被訪問過;
68.(4-1)若當前節點y沒有被訪問過,且「動態因子」為0,即不需要動態分區,則按原有邏輯繼續執行;
69.(4-2)若當前節點y沒有被訪問過,且「動態因子」不為0,則代表需要根據動態因子進行動態分區;
70.(4-3)根據確定的動態因子劃分存儲分區,並將對應的業務數據存儲至對應的分區中,動態完成hive數倉的分區。
71.(5)最後,根據動態因子動態分區後,遞歸搜索以y為根的子樹,計算x的追溯值,直
至得到全部x的追溯值,從而得到最小訪問時間的目標結果。
72.在本實施例中,增加智能分區動態因子,根據動態因子進行動態分區,通過遞歸搜索以y為根的子樹,得到的x的追溯值是一組強聯通分量,可以直接給出最小訪問時間的目標結果,從而提高本分區方法下查詢檢索得效率。
73.在本實施例中,原有的數據處理邏輯為:
74.(1)初始化根節點x的時間戳與追溯值,確定根節點x的關係指向;
75.(2)通過head變量獲取與根節點x直接連接的第一個相鄰節點的序號;
76.(3)通過next變量,迭代獲取剩下的與根節點x直接連接的節點的序號;
77.(4)對每個相鄰節點的序號執行tarjan算法,進行深度優先遞歸操作,循環依次判斷直接相連的節點y的序號i是否被訪問過;
78.(4-1)若沒有被訪問過,遞歸搜索以y為根的子樹;
79.(4-2)若被訪問過,則無需繼續遞歸,直接更新low下標;
80.(4-3)計算x的追溯值,結束。
81.在本實施例中,基於改進的tarjan算法實現hive數倉的動態分區,將hive的自動分區技術優化為智能動態分區,更符合業務邏輯和人機操作邏輯,且通過查詢智能動態分區後的分區結構,提高查詢效率。涉及全國各省份、各地市行政區域性質的大數據智能存儲的業務,都可以用此基於改進tarjan算法的hive數倉智能分區技術,智能改變hive分區方式,提高海量數據的存儲、檢索等操作效率。
82.實施例2
83.本實施例提供一種hive數倉動態智能分區系統,包括:
84.動態因子指定模塊,被配置為根據業務需要,設定hive數倉動態分區的動態因子;
85.指令獲取模塊,被配置為獲取數據存儲指令;
86.動態因子確定模塊,被配置為根據數據存儲指令中待執行的sql語句信息,判定執行sql語句所需的動態因子;
87.分區模塊,被配置為根據確定的動態因子劃分存儲分區,並將對應的業務數據存儲至對應的分區中,動態完成hive數倉的分區。
88.此處需要說明的是,上述模塊對應於實施例1中所述的步驟,上述模塊與對應的步驟所實現的示例和應用場景相同,但不限於上述實施例1所公開的內容。需要說明的是,上述模塊作為系統的一部分可以在諸如一組計算機可執行指令的計算機系統中執行。
89.在更多實施例中,還提供:
90.一種電子設備,包括存儲器和處理器以及存儲在存儲器上並在處理器上運行的計算機指令,所述計算機指令被處理器運行時,完成實施例1中所述的方法。為了簡潔,在此不再贅述。
91.應理解,本實施例中,處理器可以是中央處理單元cpu,處理器還可以是其他通用處理器、數位訊號處理器dsp、專用集成電路asic,現成可編程門陣列fpga或者其他可編程邏輯器件、分立門或者電晶體邏輯器件、分立硬體組件等。通用處理器可以是微處理器或者該處理器也可以是任何常規的處理器等。
92.存儲器可以包括只讀存儲器和隨機存取存儲器,並向處理器提供指令和數據、存儲器的一部分還可以包括非易失性隨機存儲器。例如,存儲器還可以存儲設備類型的信息。
93.一種計算機可讀存儲介質,用於存儲計算機指令,所述計算機指令被處理器執行時,完成實施例1中所述的方法。
94.實施例1中的方法可以直接體現為硬體處理器執行完成,或者用處理器中的硬體及軟體模塊組合執行完成。軟體模塊可以位於隨機存儲器、快閃記憶體、只讀存儲器、可編程只讀存儲器或者電可擦寫可編程存儲器、寄存器等本領域成熟的存儲介質中。該存儲介質位於存儲器,處理器讀取存儲器中的信息,結合其硬體完成上述方法的步驟。為避免重複,這裡不再詳細描述。
95.本領域普通技術人員可以意識到,結合本實施例描述的各示例的單元即算法步驟,能夠以電子硬體或者計算機軟體和電子硬體的結合來實現。這些功能究竟以硬體還是軟體方式來執行,取決於技術方案的特定應用和設計約束條件。專業技術人員可以對每個特定的應用來使用不同方法來實現所描述的功能,但是這種實現不應認為超出本技術的範圍。
96.上述雖然結合附圖對本發明的具體實施方式進行了描述,但並非對本發明保護範圍的限制,所屬領域技術人員應該明白,在本發明的技術方案的基礎上,本領域技術人員不需要付出創造性勞動即可做出的各種修改或變形仍在本發明的保護範圍以內。

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀