數(shù)據(jù)查詢方法、裝置及系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種數(shù)據(jù)查詢方法、裝置及裝置,屬于數(shù)據(jù)存儲領(lǐng)域。所述方法包括:Hive獲取針對所述數(shù)據(jù)庫集群的HQL查詢語句,所述HQL查詢語句中指定的Hive表對應(yīng)于所述數(shù)據(jù)庫集群中關(guān)聯(lián)的至少兩張分區(qū)表;根據(jù)所述HQL查詢語句生成MapReduce執(zhí)行計劃;將所述MapReduce執(zhí)行計劃發(fā)送給并行計算架構(gòu)Hadoop;接收所述Hadoop反饋的查詢結(jié)果。解決了目前多張關(guān)聯(lián)的分區(qū)表無法支持一些關(guān)系型查詢和統(tǒng)計功能的問題;達(dá)到了借助Hive和Hadoop的分布式并行計算特性,來實(shí)現(xiàn)對數(shù)據(jù)庫集群中多張關(guān)聯(lián)的分區(qū)表的關(guān)系型查詢和統(tǒng)計功能的效果。
【專利說明】數(shù)據(jù)查詢方法、裝置及系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)存儲領(lǐng)域,特別涉及一種數(shù)據(jù)查詢方法、裝置及系統(tǒng)。
【背景技術(shù)】
[0002]MySQL數(shù)據(jù)庫是一種被廣泛使用的數(shù)據(jù)庫。隨著數(shù)據(jù)訪問壓力的幾何倍速增長,單個MySQL數(shù)據(jù)庫的存儲能力以及查詢能力都會越來越成為數(shù)據(jù)系統(tǒng)的瓶頸。
[0003]目前常采用多個MySQL數(shù)據(jù)庫組成數(shù)據(jù)庫集群來共同提供服務(wù),通過把原始存儲在單個MySQL中的表進(jìn)行水平分區(qū)后,存放到多個MySQL數(shù)據(jù)庫的多張分區(qū)表中,每個分區(qū)表存儲原表中的一部分?jǐn)?shù)據(jù),從而滿足大規(guī)模的數(shù)據(jù)庫存儲需求。
[0004]在實(shí)現(xiàn)本發(fā)明的過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在以下問題:對于單一的數(shù)據(jù)表,支持各種各樣靈活的查詢SQL語句;但對于多張關(guān)聯(lián)的分區(qū)表,由于每張分區(qū)表只存儲原表的一部分?jǐn)?shù)據(jù),所以無法支持一些關(guān)系型查詢和統(tǒng)計功能。
【發(fā)明內(nèi)容】
[0005]為了解決對于多張關(guān)聯(lián)的分區(qū)表無法支持一些關(guān)系型查詢和統(tǒng)計功能的問題,本發(fā)明實(shí)施例提供了一種數(shù)據(jù)查詢方法、裝置及系統(tǒng)。所述技術(shù)方案如下:
[0006]第一方面,提供了一種數(shù)據(jù)查詢方法,用于與數(shù)據(jù)庫集群相連的并行數(shù)據(jù)倉庫工具Hive中,所述方法包括:
[0007]獲取針對所述數(shù)據(jù)庫集群的HQL查詢語句,所述HQL查詢語句中指定的Hive表對應(yīng)于所述數(shù)據(jù)庫集群中關(guān)聯(lián)的至少兩張分區(qū)表;
[0008]根據(jù)所述HQL查詢語句生成MapReduce執(zhí)行計劃;
[0009]將所述MapReduce執(zhí)行計劃發(fā)送給并行計算架構(gòu)Hadoop ;
[0010]接收所述Hadoop反饋的查詢結(jié)果,所述查詢結(jié)果是所述Hadoop根據(jù)所述MapReduce執(zhí)行計劃為所述數(shù)據(jù)庫集群中的每個分區(qū)表啟動一個Mapper映射任務(wù)后,通過Reduce化簡任務(wù)匯總每個Mapper映射任務(wù)的查詢結(jié)果得到的。
[0011]可選地,所述根據(jù)所述HQL查詢語句生成MapReduce執(zhí)行計劃,包括:
[0012]獲取所述HQL查詢語句所指定的Hive表在所述數(shù)據(jù)庫集群對應(yīng)的分區(qū)描述信息;
[0013]根據(jù)所述HQL查詢語句、所述Hive表和所述Hive表的分區(qū)描述信息生成所述MapReduce執(zhí)行計劃。
[0014]可選地,所述獲取所述HQL查詢語句所指定的Hive表在所述數(shù)據(jù)庫集群對應(yīng)的分區(qū)描述信息,包括:
[0015]預(yù)先存儲所述數(shù)據(jù)庫集群的連接信息;根據(jù)所述連接信息從所述數(shù)據(jù)庫集群獲取所述分區(qū)描述信息;
[0016]或,
[0017]獲取預(yù)先存儲的所述分區(qū)描述信息。[0018]可選地,所述根據(jù)所述HQL查詢語句、所述Hive表和所述Hive表的分區(qū)描述信息生成所述MapReduce執(zhí)行計劃,包括:
[0019]根據(jù)所述HQL查詢語句確定所述數(shù)據(jù)庫集群中每個分區(qū)表所對應(yīng)的查詢條件;
[0020]根據(jù)所述Hive表生成所述數(shù)據(jù)庫集群在所述Hadoop中的輸入格式;
[0021]將所述查詢條件、所述分區(qū)描述信息和所述數(shù)據(jù)庫集群在所述Hadoop中的輸入格式生成為所述MapReduce執(zhí)行計劃的內(nèi)容。
[0022]第二方面,提供了一種數(shù)據(jù)查詢方法,用于與數(shù)據(jù)庫集群相連的并行計算架構(gòu)Hadoop中,所述方法包括:
[0023]獲取MapReduce執(zhí)行計劃,所述MapReduce執(zhí)行計劃是并行數(shù)據(jù)倉庫工具Hive根據(jù)針對所述數(shù)據(jù)庫集群的HQL查詢語句生成的,所述HQL查詢語句指定的Hive表對應(yīng)于所述數(shù)據(jù)庫集群中關(guān)聯(lián)的至少兩張分區(qū)表;
[0024]根據(jù)所述MapReduce執(zhí)行計劃為所述數(shù)據(jù)庫集群中的每個分區(qū)表啟動一個Mapper映射任務(wù)進(jìn)行查詢;
[0025]通過Reduce化簡任務(wù)匯總每個Mapper映射任務(wù)的查詢結(jié)果;
[0026]向所述Hive反饋匯總后的查詢結(jié)果。
[0027]可選地,所述根據(jù)所述MapReduce執(zhí)行計劃為所述數(shù)據(jù)庫集群中的每個分區(qū)表啟動一個Mapper映射任務(wù),包括:
[0028]根據(jù)所述分區(qū)描述信息和所述數(shù)據(jù)庫集群在所述Hadoop中的輸入格式將所述數(shù)據(jù)庫集群的各個分區(qū)表轉(zhuǎn)換為各自對應(yīng)的輸入分片;
[0029]對于每個所述輸入分片,啟動相應(yīng)的所述Mapper映射任務(wù)執(zhí)行相應(yīng)分區(qū)表的查詢。
[0030]可選地,所述對于每個所述輸入分片,啟動相應(yīng)的所述Mapper映射任務(wù)執(zhí)行相應(yīng)分區(qū)表的查詢,包括:
[0031]對于每個所述映射任務(wù),根據(jù)所述Mapper映射任務(wù)所對應(yīng)的分區(qū)表所對應(yīng)的查詢條件生成分區(qū)查詢語句;
[0032]通過所述分區(qū)查詢語句在所述分區(qū)表對應(yīng)的輸入分片中讀取數(shù)據(jù)作為查詢結(jié)果。
[0033]第三方面,提供了一種數(shù)據(jù)查詢裝置,用于與數(shù)據(jù)庫集群相連的并行數(shù)據(jù)倉庫工具Hive中,所述裝置包括:
[0034]語句接收模塊,用于獲取針對所述數(shù)據(jù)庫集群的HQL查詢語句,所述HQL查詢語句中指定的Hive表對應(yīng)于所述數(shù)據(jù)庫集群中關(guān)聯(lián)的至少兩張分區(qū)表;
[0035]計劃生成模塊,用于根據(jù)所述HQL查詢語句生成MapReduce執(zhí)行計劃;
[0036]計劃發(fā)送模塊,用于將所述MapReduce執(zhí)行計劃發(fā)送給并行計算架構(gòu)Hadoop ;
[0037]結(jié)果接收模塊,用于接收所述Hadoop反饋的查詢結(jié)果,所述查詢結(jié)果是所述Hadoop根據(jù)所述MapReduce執(zhí)行計劃為所述數(shù)據(jù)庫集群中的每個分區(qū)表啟動一個Mapper映射任務(wù)后,通過Reduce化簡任務(wù)匯總每個Mapper映射任務(wù)的查詢結(jié)果得到的。
[0038]可選地,所述計劃生成模塊,包括:信息獲取單元和計劃生成單元;
[0039]所述信息獲取單元,用于獲取所述HQL查詢語句所指定的Hive表在所述數(shù)據(jù)庫集群對應(yīng)的分區(qū)描述信息;
[0040]所述計劃生成單元,用于根據(jù)所述HQL查詢語句、所述Hive表和所述Hive表的分區(qū)描述信息生成所述MapReduce執(zhí)行計劃。
[0041]可選地,所述信息獲取單元,包括:
[0042]連接存儲子單元,用于預(yù)先存儲所述數(shù)據(jù)庫集群的連接信息;第一獲取子單元,用于根據(jù)所述連接信息從所述數(shù)據(jù)庫集群獲取所述分區(qū)描述信息;
[0043]或,
[0044]第二獲取子單元,用于獲取預(yù)先存儲的所述分區(qū)描述信息。
[0045]可選地,所述計劃生成單元,包括:
[0046]條件生成子單元、格式生成子單元和計劃生成子單元;
[0047]所述條件生成子單元,用于根據(jù)所述HQL查詢語句確定所述數(shù)據(jù)庫集群中每個分區(qū)表所對應(yīng)的查詢條件;
[0048]所述格式生成子單元,用于根據(jù)所述Hive表生成所述數(shù)據(jù)庫集群在所述Hadoop中的輸入格式;
[0049]所述計劃生成子單元,用于將所述查詢條件、所述分區(qū)描述信息和所述數(shù)據(jù)庫集群在所述Hadoop中的輸入格式生成為所述MapReduce執(zhí)行計劃的內(nèi)容。
[0050]第四方面,提供了一種數(shù)據(jù)查詢裝置,用于與數(shù)據(jù)庫集群相連的并行計算架構(gòu)Hadoop中,所述裝置包括:
[0051 ] 計劃獲取模塊,用于獲取MapReduce執(zhí)行計劃,所述MapReduce執(zhí)行計劃是并行數(shù)據(jù)倉庫工具Hive根據(jù)針對所述數(shù)據(jù)庫集群的HQL查詢語句生成的,所述HQL查詢語句指定的Hive表對應(yīng)于所述數(shù)據(jù)庫集群中關(guān)聯(lián)的至少兩張分區(qū)表;
[0052]分區(qū)查詢模塊,用于根據(jù)所述MapReduce執(zhí)行計劃為所述數(shù)據(jù)庫集群中的每個分區(qū)表啟動一個Mapper映射任務(wù)進(jìn)行查詢;
[0053]結(jié)果匯總模塊,用于通過Reduce化簡任務(wù)匯總每個Mapper映射任務(wù)的查詢結(jié)果;
[0054]結(jié)果反饋t吳塊,用于向所述Hive反饋匯總后的查詢結(jié)果。
[0055]可選地,所述分區(qū)查詢模塊,包括:
[0056]分片生成單元和分區(qū)查詢單元;
[0057]所述分片生成單元,用于根據(jù)所述分區(qū)描述信息和所述數(shù)據(jù)庫集群在所述Hadoop中的輸入格式將所述數(shù)據(jù)庫集群的各個分區(qū)表轉(zhuǎn)換為各自對應(yīng)的輸入分片;
[0058]所述分區(qū)查詢單元,用于對于每個所述輸入分片,啟動相應(yīng)的所述Mapper映射任務(wù)執(zhí)行相應(yīng)分區(qū)表的查詢。
[0059]可選地,所述分區(qū)查詢單元,包括:
[0060]語句生成子單元和分片查詢子單元;
[0061]所述語句生成子單元,用于對于每個所述映射任務(wù),根據(jù)所述Mapper映射任務(wù)所對應(yīng)的分區(qū)表所對應(yīng)的查詢條件生成分區(qū)查詢語句;
[0062]所述分片查詢子單元,用于通過所述分區(qū)查詢語句在所述分區(qū)表對應(yīng)的輸入分片中讀取數(shù)據(jù)作為查詢結(jié)果。
[0063]第五方面,提供了一種數(shù)據(jù)查詢系統(tǒng),所述系統(tǒng)包括數(shù)據(jù)庫集群、與所述數(shù)據(jù)庫集群相連的并行數(shù)據(jù)倉庫工具Hive,以及與所述數(shù)據(jù)庫集群和所述Hive分別相連的并行計算架構(gòu)Hadoop ;[0064]所述數(shù)據(jù)庫集群,存儲有關(guān)聯(lián)的至少兩個分區(qū)表;
[0065]所述Hive,包括如第三方面提供的所述的數(shù)據(jù)查詢裝置;
[0066]所述Hadoop,包括如第四方面提供的所述的數(shù)據(jù)查詢裝置。
[0067]本發(fā)明實(shí)施例提供的技術(shù)方案帶來的有益效果是:
[0068]通過由Hive將針對數(shù)據(jù)庫集群的HQL查詢語句轉(zhuǎn)化為MapReduce執(zhí)行計劃,由Hadoop來執(zhí)行該MapReduce執(zhí)行計劃在數(shù)據(jù)庫集群的各個分區(qū)表中查詢數(shù)據(jù);解決了目前多張關(guān)聯(lián)的分區(qū)表無法支持一些關(guān)系型查詢和統(tǒng)計功能的問題;達(dá)到了借助Hive和Hadoop的分布式并行計算特性,來實(shí)現(xiàn)對數(shù)據(jù)庫集群中多張關(guān)聯(lián)的分區(qū)表的關(guān)系型查詢和統(tǒng)計功能的效果。
【專利附圖】
【附圖說明】
[0069]為了更清楚地說明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對實(shí)施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0070]圖1是本發(fā)明實(shí)施例提供的數(shù)據(jù)查詢方法所涉及的實(shí)施環(huán)境的結(jié)構(gòu)示意圖;
[0071]圖2是本發(fā)明一個實(shí)施例提供的數(shù)據(jù)查詢方法的方法流程圖;
[0072]圖3A是本發(fā)明另一實(shí)施例提供的數(shù)據(jù)查詢方法的方法流程圖;
[0073]圖3B是圖3A實(shí)施例提供的數(shù)據(jù)查詢方法在具體實(shí)施時的實(shí)施示意圖;
[0074]圖4是本發(fā)明一個實(shí)施例提供的數(shù)據(jù)查詢系統(tǒng)的結(jié)構(gòu)方框圖;
[0075]圖5是本發(fā)明另一實(shí)施例提供的數(shù)據(jù)查詢系統(tǒng)的結(jié)構(gòu)方框圖。
【具體實(shí)施方式】
[0076]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對本發(fā)明實(shí)施方式作進(jìn)一步地詳細(xì)描述。
[0077]請參考圖1,其示出了本發(fā)明實(shí)施例提供的數(shù)據(jù)查詢方法所涉及的實(shí)施環(huán)境的結(jié)構(gòu)示意圖。該實(shí)施環(huán)境包括數(shù)據(jù)庫集群120、與數(shù)據(jù)庫集群120相連的并行數(shù)據(jù)倉庫工具Hivel40、與數(shù)據(jù)庫集群120相連的并行計算架構(gòu)Hadoopl60。并行計算架構(gòu)Hadoopl60還與并行數(shù)據(jù)倉庫工具HiveHO相連。
[0078]數(shù)據(jù)庫集群120存儲有關(guān)聯(lián)的至少兩張分區(qū)表以及這些分區(qū)表的分區(qū)描述信息。分區(qū)描述信息用于描述一張?jiān)急肀徊鸱譃橹辽賰蓮埛謪^(qū)表時的拆分信息,比如,一張表被拆分為幾張分區(qū)表,每張分區(qū)表分布在數(shù)據(jù)庫集群120中的哪個服務(wù)器上。數(shù)據(jù)庫集群120可以是MySQL數(shù)據(jù)庫集群。
[0079]Hivel40是基于并行計算架構(gòu)Hadoop的一個并行數(shù)據(jù)倉庫工具。Hivel40中會建立一張Hive表,該Hive表與數(shù)據(jù)庫集群120中的所有分區(qū)表相關(guān)聯(lián)。Hivel40用于接收用戶的HQL查詢語句,然后將該HQL查詢語句轉(zhuǎn)換為MapReduce (映射-化簡)執(zhí)行計劃。HiveHO通常包括有驅(qū)動器142、編譯器144、元數(shù)據(jù)存儲區(qū)146和執(zhí)行引擎148。
[0080]Hadoop 160用于執(zhí)行Hive 140提交的MapReduce執(zhí)行計劃,根據(jù)該MapReduce執(zhí)行計劃從數(shù)據(jù)庫集群120查詢數(shù)據(jù),并向HiveHO返回查詢結(jié)果。Hadoopl60通常包括工作跟蹤器JOB TRACKER162,用于根據(jù)MapReduce執(zhí)行計劃生成MapperTask映射任務(wù)和Reduce化簡任務(wù)。HadoopieO通常還包括:映射任務(wù)跟蹤器164和化簡任務(wù)跟蹤器166。
[0081]請參考圖2,其示出了本發(fā)明一個實(shí)施例提供的數(shù)據(jù)查詢方法的方法流程圖。本實(shí)施例以該數(shù)據(jù)查詢方法應(yīng)用于圖1所示的實(shí)施環(huán)境來舉例說明。該數(shù)據(jù)查詢方法包括:
[0082]步驟201,Hive獲取針對數(shù)據(jù)庫集群的HQL查詢語句;
[0083]該HQL查詢語句中指定的Hive表對應(yīng)于數(shù)據(jù)庫集群中關(guān)聯(lián)的至少兩張分區(qū)表;
[0084]步驟202, Hive根據(jù)該HQL查詢語句生成MapReduce執(zhí)行計劃;
[0085]步驟203, Hive將MapReduce執(zhí)行計劃發(fā)送給Hadoop ;
[0086]步驟204, Hadoop 獲取 MapReduce 執(zhí)行計劃;
[0087]該MapReduce執(zhí)行計劃是并行數(shù)據(jù)倉庫工具Hive根據(jù)針對所述數(shù)據(jù)庫集群的HQL查詢語句生成的,所述HQL查詢語句指定的Hive表對應(yīng)于所述數(shù)據(jù)庫集群中關(guān)聯(lián)的至少兩張分區(qū)表。
[0088]步驟205, Hadoop根據(jù)MapReduce執(zhí)行計劃為數(shù)據(jù)庫集群中的每個分區(qū)表啟動一個Mapper映射任務(wù);
[0089]步驟206, Hadoop通過Reduce化簡任務(wù)匯總每個Mapper映射任務(wù)的查詢結(jié)果;
[0090]步驟207, Hadoop向Hive反饋匯總后的查詢結(jié)果。
[0091]對應(yīng)地,Hive接收Hadoop反饋的查詢結(jié)果。
[0092]綜上所述,本實(shí)施例提供的數(shù)據(jù)查詢方法,通過由Hive將針對數(shù)據(jù)庫集群的HQL查詢語句轉(zhuǎn)化為MapReduce執(zhí)行計劃,由Hadoop來執(zhí)行該MapReduce執(zhí)行計劃在數(shù)據(jù)庫集群的各個分區(qū)表中查詢數(shù)據(jù);解決了目前多張關(guān)聯(lián)的分區(qū)表無法支持一些關(guān)系型查詢和統(tǒng)計功能的問題;達(dá)到了借助Hive和Hadoop的分布式并行計算特性,來實(shí)現(xiàn)對數(shù)據(jù)庫集群中多張關(guān)聯(lián)的分區(qū)表的關(guān)系型查詢和統(tǒng)計功能的效果。
[0093]其中,上述步驟201至步驟203可以單獨(dú)實(shí)現(xiàn)成為Hive側(cè)的數(shù)據(jù)查詢方法;上述步驟204至步驟207可以單獨(dú)實(shí)現(xiàn)成為Hadoop側(cè)的數(shù)據(jù)查詢方法。
[0094]請參考圖3A,其示出了本發(fā)明另一實(shí)施例提供的數(shù)據(jù)查詢方法的方法流程圖。本實(shí)施例以該數(shù)據(jù)查詢方法應(yīng)用于圖1所示的實(shí)施環(huán)境來舉例說明。該數(shù)據(jù)查詢方法包括:
[0095]步驟301,Hive獲取針對數(shù)據(jù)庫集群的HQL查詢語句,HQL查詢語句中指定的Hive表對應(yīng)于數(shù)據(jù)庫集群中關(guān)聯(lián)的至少兩張分區(qū)表;
[0096]Hive可以預(yù)先建立一張Hive表,該Hive表對應(yīng)于數(shù)據(jù)庫集群中關(guān)聯(lián)的全部分區(qū)表。比如,一張?jiān)急碓贛ySQL集群中被拆分為關(guān)聯(lián)的100張分區(qū)表,則Hive可以建立一張Hive表與該關(guān)聯(lián)的100張分區(qū)表對應(yīng)。
[0097]在用戶希望對數(shù)據(jù)庫集群進(jìn)行查詢時,通過Hive提供的用戶界面向Hive發(fā)出HQL查詢語句。Hive通過驅(qū)動器獲取該HQL查詢語句,該HQL查詢語句中所指定的Hive表即為對應(yīng)于數(shù)據(jù)庫集群中關(guān)聯(lián)的多張分區(qū)表。
[0098]步驟302,Hive獲取該Hive表在數(shù)據(jù)庫集群對應(yīng)的分區(qū)描述信息;
[0099]由于該Hive表與數(shù)據(jù)庫集群中的多張分區(qū)表對應(yīng),而這些分區(qū)表的分區(qū)描述信息描述了這些分區(qū)表的拆分信息以及這些分區(qū)表在數(shù)據(jù)庫集群中的存儲位置,所以Hive需要獲取該Hive表在數(shù)據(jù)庫集群對應(yīng)的分區(qū)描述信息。
[0100]Hive中的驅(qū)動器在接收到的HQL查詢語句后,會將該HQL查詢語句交給Hive中的編譯器進(jìn)行處理。Hive中的編譯器通過元數(shù)據(jù)存儲區(qū)獲取分區(qū)描述信息。
[0101]具體來講,本步驟有兩種不同的實(shí)現(xiàn)方式:
[0102]第一,Hive預(yù)先存儲數(shù)據(jù)庫集群的連接信息,根據(jù)連接信息從數(shù)據(jù)庫集群獲取分區(qū)描述信息;
[0103]也即,此種方式下分區(qū)描述信息存儲在數(shù)據(jù)庫集群中,Hive可以通過在Hive表中預(yù)先存儲的連接信息從數(shù)據(jù)庫集群獲取分區(qū)描述信息。
[0104]第二,Hive獲取在Hive表中預(yù)先存儲的分區(qū)描述信息。
[0105]也即,此種方式下,分區(qū)描述信息被預(yù)先存儲在元數(shù)據(jù)存儲區(qū),Hive中的編譯器從元數(shù)據(jù)存儲區(qū)獲取該分區(qū)描述信息。
[0106]步驟303,Hive根據(jù)HQL查詢語句、Hive表和Hive表的分區(qū)描述信息生成MapReduce執(zhí)行計劃。
[0107]本步驟具體包括如下子步驟:
[0108]第一,Hive根據(jù)HQL查詢語句確定數(shù)據(jù)庫集群中每個分區(qū)表所對應(yīng)的查詢條件;
[0109]由于HQL查詢語句是針對所有分區(qū)表的,所以Hive中的編譯器需要根據(jù)將HQL查詢語句確定數(shù)據(jù)庫集群中每個分區(qū)表所對應(yīng)的查詢條件。比如,對于分區(qū)表a需要查詢所有數(shù)據(jù),對于分區(qū)表b需要查詢符合某一條件的數(shù)據(jù)等。
[0110]第二,Hive根據(jù)Hive表生成數(shù)據(jù)庫集群在Hadoop中的輸入格式;
[0111]輸入格式(InputFormat)是Hadoop中執(zhí)行MapReduce執(zhí)行計劃時的關(guān)鍵因素。由于本實(shí)施例中需要將數(shù)據(jù)庫集群中的各個分區(qū)表作為Hadoop執(zhí)行MapReduce執(zhí)行計劃時所需要處理的數(shù)據(jù),所以Hive中的編譯器需要根據(jù)Hive表生成數(shù)據(jù)庫集群在Hadoop中的輸入格式。
[0112]第三,Hive將查詢條件、分區(qū)描述信息和數(shù)據(jù)庫集群在Hadoop中的輸入格式生成為MapReduce執(zhí)行計劃的內(nèi)容。
[0113]步驟304, Hive將MapReduce執(zhí)行計劃發(fā)送給Hadoop ;
[0114]Hive中的編譯器生成MapReduce執(zhí)行計劃后,將該MapReduce執(zhí)行計劃內(nèi)部傳輸給驅(qū)動器,驅(qū)動器再將該MapReduce執(zhí)行計劃內(nèi)部傳輸給執(zhí)行引擎。執(zhí)行引擎則將該MapReduce執(zhí)行計劃傳輸給Hadoop執(zhí)行。
[0115]步驟305, Hadoop 獲取 MapReduce 執(zhí)行計劃;
[0116]該MapReduce執(zhí)行計劃是Hive根據(jù)針對數(shù)據(jù)庫集群的HQL查詢語句生成的,HQL查詢語句指定的Hive表對應(yīng)于數(shù)據(jù)庫集群中關(guān)聯(lián)的至少兩張分區(qū)表。
[0117]步驟306, Hadoop根據(jù)MapReduce執(zhí)行計劃為數(shù)據(jù)庫集群中的每個分區(qū)表啟動一個Mapper映射任務(wù)進(jìn)行查詢;
[0118]由于MapReduce執(zhí)行計劃本身即為分布式計算架構(gòu),原理即為將一個總的執(zhí)行計劃分配為多個并行任務(wù)來處理。而本實(shí)施例則針對每個分區(qū)表分別啟動一個Mapper映射任務(wù)來進(jìn)行查詢。利用MapReduce執(zhí)行計劃的分布式計算特性來實(shí)現(xiàn)多張分區(qū)表的綜合查詢和統(tǒng)計。具體來講,本步驟包括:
[0119]第一,根據(jù)分區(qū)描述信息和數(shù)據(jù)庫集群在Hadoop中的輸入格式將數(shù)據(jù)庫集群的各個分區(qū)表轉(zhuǎn)換為各自對應(yīng)的輸入分片;
[0120]Hadoop中的工作跟蹤器JOB TRACKER在得到MapReduce執(zhí)行計劃后,根據(jù)分區(qū)描述信息和數(shù)據(jù)庫集群在Hadoop中的輸入格式將數(shù)據(jù)庫集群的各個分區(qū)表轉(zhuǎn)換為各自對應(yīng)的輸入分片(InputSplit)。
[0121]結(jié)合圖3B可知,以MySQL數(shù)據(jù)庫為例,JOB TRACKER根據(jù)分區(qū)描述信息和MySQL輸入格式將每個分區(qū)表32切分為一個輸入分片34。
[0122]第二,對于每個輸入分片,啟動相應(yīng)的Mapper映射任務(wù)執(zhí)行相應(yīng)分區(qū)表的查詢。
[0123]Hadoop中的工作跟蹤器JOB TRACKER,還對于每個輸入分片,啟動相應(yīng)的Mapper映射任務(wù)36執(zhí)行相應(yīng)分區(qū)表的查詢。Mapper映射任務(wù)36的執(zhí)行過程由映射任務(wù)跟蹤器164管理。
[0124]具體來講,對于每個映射任務(wù),Hadoop根據(jù)Mapper映射任務(wù)所對應(yīng)的分區(qū)表所對應(yīng)的查詢條件生成分區(qū)查詢語句,比如SQL語句,并通過分區(qū)查詢語句在分區(qū)表對應(yīng)的輸入分片中讀取數(shù)據(jù)作為查詢結(jié)果。讀取數(shù)據(jù)的過程可以由記錄讀取器RecordReader實(shí)現(xiàn),記錄讀取器從輸入分片中讀出一條條K-V鍵值供Mapper映射任務(wù)使用。
[0125]步驟307, Hadoop通過Reduce化簡任務(wù)匯總每個Mapper映射任務(wù)的查詢結(jié)果;
[0126]每個Mapper映射任務(wù)的查詢結(jié)果將會交給對應(yīng)的Reduce化簡任務(wù),Reduce化簡任務(wù)匯總每個Mapper映射任務(wù)的查詢結(jié)果,得到最終匯總后的查詢結(jié)果。
[0127]步驟308, Hadoop向Hive反饋匯總后的查詢結(jié)果。
[0128]Hadoop中的工作跟蹤器JOB TRACKER向Hive反饋匯總后的查詢結(jié)果。Hive接收Hadoop反饋的匯總后的查詢結(jié)果。也即,Hive中的執(zhí)行引擎將匯總后的查詢結(jié)果內(nèi)部傳輸給驅(qū)動器,驅(qū)動器將匯總后的查詢結(jié)果反饋給用戶。
[0129]至此,完成整個查詢統(tǒng)計過程。
[0130]綜上所述,本實(shí)施例提供的數(shù)據(jù)查詢方法,通過由Hive將針對數(shù)據(jù)庫集群的HQL查詢語句轉(zhuǎn)化為MapReduce執(zhí)行計劃,由Hadoop來執(zhí)行該MapReduce執(zhí)行計劃在數(shù)據(jù)庫集群的各個分區(qū)表中查詢數(shù)據(jù);解決了目前多張關(guān)聯(lián)的分區(qū)表無法支持一些關(guān)系型查詢和統(tǒng)計功能的問題;達(dá)到了借助Hive和Hadoop的分布式并行計算特性,來實(shí)現(xiàn)對數(shù)據(jù)庫集群中多張關(guān)聯(lián)的分區(qū)表的關(guān)系型查詢和統(tǒng)計功能的效果。
[0131]本實(shí)施例提供的數(shù)據(jù)查詢方法,還通過Hive中的Hive表來與數(shù)據(jù)庫集群中的多張分區(qū)表進(jìn)行關(guān)聯(lián),借助HQL查詢語句來實(shí)現(xiàn)多張分區(qū)表的結(jié)構(gòu)化查詢,區(qū)解決了目前多張關(guān)聯(lián)的分區(qū)表無法支持一些關(guān)系型查詢和統(tǒng)計功能的問題。同時,還通過實(shí)現(xiàn)數(shù)據(jù)庫集群(如MySQL)中的分區(qū)表至Hadoop中的輸入分片的映射,使得Hadoop的MapReduce能夠運(yùn)行在數(shù)據(jù)庫集群上查詢,借助MapReduce的并行計算特性,實(shí)現(xiàn)了數(shù)據(jù)庫集群的并行查詢能力。
[0132]其中,上述步驟301至步驟304可以單獨(dú)實(shí)現(xiàn)成為Hive側(cè)的數(shù)據(jù)查詢方法;上述步驟305至步驟308可以單獨(dú)實(shí)現(xiàn)成為Hadoop側(cè)的數(shù)據(jù)查詢方法。
[0133]請參考圖4,其示出了本發(fā)明一個實(shí)施例提供的數(shù)據(jù)查詢系統(tǒng)的結(jié)構(gòu)方框圖。該數(shù)據(jù)查詢系統(tǒng)包括數(shù)據(jù)庫集群40、與數(shù)據(jù)庫集群40相連的并行數(shù)據(jù)倉庫工具Hive400,以及與數(shù)據(jù)庫集群40和Hive400分別相連的并行計算架構(gòu)Hadoop500。
[0134]所述數(shù)據(jù)庫集群40,存儲有關(guān)聯(lián)的至少兩個分區(qū)表。
[0135]并行數(shù)據(jù)倉庫工具Hive400包括一數(shù)據(jù)查詢裝置,該數(shù)據(jù)查詢裝置能夠通過軟件、硬件或者兩者的結(jié)合實(shí)現(xiàn)成為Hive的全部或者一部分。該數(shù)據(jù)查詢裝置包括:語句接收模塊420、計劃生成模塊440、計劃發(fā)送模塊460和結(jié)果接收模塊480。
[0136]語句接收模塊420,用于獲取針對所述數(shù)據(jù)庫集群的HQL查詢語句,所述HQL查詢語句中指定的Hive表對應(yīng)于所述數(shù)據(jù)庫集群中關(guān)聯(lián)的至少兩張分區(qū)表;
[0137]計劃生成模塊440,用于根據(jù)所述HQL查詢語句生成MapReduce執(zhí)行計劃;
[0138]計劃發(fā)送模塊460,用于將所述MapReduce執(zhí)行計劃發(fā)送給并行計算架構(gòu)Hadoop ;
[0139]結(jié)果接收模塊480,用于接收所述Hadoop反饋的查詢結(jié)果,所述查詢結(jié)果是所述Hadoop根據(jù)所述MapReduce執(zhí)行計劃為所述數(shù)據(jù)庫集群中的每個分區(qū)表啟動一個Mapper映射任務(wù)后,通過Reduce化簡任務(wù)匯總每個Mapper映射任務(wù)的查詢結(jié)果得到的。
[0140]并行計算架構(gòu)HadOOp500包括一數(shù)據(jù)查詢裝置,該數(shù)據(jù)查詢裝置能夠通過軟件、硬件或者兩者的結(jié)合實(shí)現(xiàn)成為Hive的全部或者一部分。該數(shù)據(jù)查詢裝置包括:計劃獲取模塊520、分區(qū)查詢模塊540、結(jié)果匯總模塊560和結(jié)果反饋模塊580。
[0141]計劃獲取模塊520,用于獲取MapReduce執(zhí)行計劃,所述MapReduce執(zhí)行計劃是并行數(shù)據(jù)倉庫工具Hive根據(jù)針對所述數(shù)據(jù)庫集群的HQL查詢語句生成的,所述HQL查詢語句指定的Hive表對應(yīng)于所述數(shù)據(jù)庫集群中關(guān)聯(lián)的至少兩張分區(qū)表;
[0142]分區(qū)查詢模塊540,用于根據(jù)所述MapReduce執(zhí)行計劃為所述數(shù)據(jù)庫集群中的每個分區(qū)表啟動一個Mapper映射任務(wù)進(jìn)行查詢;
[0143]結(jié)果匯總模塊560,用于通過Reduce化簡任務(wù)匯總每個Mapper映射任務(wù)的查詢結(jié)果;
[0144]結(jié)果反饋t旲塊580,用于向所述Hive反饋匯總后的查詢結(jié)果。
[0145]綜上所述,本實(shí)施例提供的數(shù)據(jù)查詢系統(tǒng),通過由Hive將針對數(shù)據(jù)庫集群的HQL查詢語句轉(zhuǎn)化為MapReduce執(zhí)行計劃,由Hadoop來執(zhí)行該MapReduce執(zhí)行計劃在數(shù)據(jù)庫集群的各個分區(qū)表中查詢數(shù)據(jù);解決了目前多張關(guān)聯(lián)的分區(qū)表無法支持一些關(guān)系型查詢和統(tǒng)計功能的問題;達(dá)到了借助Hive和Hadoop的分布式并行計算特性,來實(shí)現(xiàn)對數(shù)據(jù)庫集群中多張關(guān)聯(lián)的分區(qū)表的關(guān)系型查詢和統(tǒng)計功能的效果。
[0146]請參考圖5,其示出了本發(fā)明另一實(shí)施例提供的數(shù)據(jù)查詢系統(tǒng)的結(jié)構(gòu)方框圖。該數(shù)據(jù)查詢系統(tǒng)包括數(shù)據(jù)庫集群40、與數(shù)據(jù)庫集群40相連的并行數(shù)據(jù)倉庫工具Hive400,以及與數(shù)據(jù)庫集群40和Hive400分別相連的并行計算架構(gòu)Hadoop500。
[0147]所述數(shù)據(jù)庫集群40,存儲有關(guān)聯(lián)的至少兩個分區(qū)表。
[0148]并行數(shù)據(jù)倉庫工具Hive400包括一數(shù)據(jù)查詢裝置,該數(shù)據(jù)查詢裝置能夠通過軟件、硬件或者兩者的結(jié)合實(shí)現(xiàn)成為Hive的全部或者一部分。該數(shù)據(jù)查詢裝置包括:語句接收模塊420、計劃生成模塊440、計劃發(fā)送模塊460和結(jié)果接收模塊480。
[0149]語句接收模塊420,用于獲取針對所述數(shù)據(jù)庫集群的HQL查詢語句,所述HQL查詢語句中指定的Hive表對應(yīng)于所述數(shù)據(jù)庫集群中關(guān)聯(lián)的至少兩張分區(qū)表;
[0150]計劃生成模塊440,用于根據(jù)所述HQL查詢語句生成MapReduce執(zhí)行計劃;
[0151]計劃發(fā)送模塊460,用于將所述MapReduce執(zhí)行計劃發(fā)送給并行計算架構(gòu)Hadoop ;
[0152]結(jié)果接收模塊480,用于接收所述Hadoop反饋的查詢結(jié)果,所述查詢結(jié)果是所述Hadoop根據(jù)所述MapReduce執(zhí)行計劃為所述數(shù)據(jù)庫集群中的每個分區(qū)表啟動一個Mapper映射任務(wù)后,通過Reduce化簡任務(wù)匯總每個Mapper映射任務(wù)的查詢結(jié)果得到的。
[0153]可選地,所述計劃生成模塊440,包括:信息獲取單元442和計劃生成單元444 ;
[0154]所述信息獲取單元442,用于獲取所述HQL查詢語句所指定的Hive表在所述數(shù)據(jù)庫集群對應(yīng)的分區(qū)描述信息;
[0155]所述計劃生成單元444,用于根據(jù)所述HQL查詢語句、所述Hive表和所述Hive表的分區(qū)描述信息生成所述MapReduce執(zhí)行計劃。
[0156]可選地,所述信息獲取單元442,包括:
[0157]連接存儲子單元,用于預(yù)先存儲所述數(shù)據(jù)庫集群的連接信息;第一獲取子單元,用于根據(jù)所述連接信息從所述數(shù)據(jù)庫集群獲取所述分區(qū)描述信息;
[0158]或,
[0159]第二獲取子單元,用于獲取預(yù)先存儲的所述分區(qū)描述信息。
[0160]可選地,所述計劃生成單元444,包括:
[0161]條件生成子單元、格式生成子單元和計劃生成子單元;
[0162]所述條件生成子單元,用于根據(jù)所述HQL查詢語句確定所述數(shù)據(jù)庫集群中每個分區(qū)表所對應(yīng)的查詢條件;
[0163]所述格式生成子單元,用于根據(jù)所述Hive表生成所述數(shù)據(jù)庫集群在所述并行計算結(jié)構(gòu)中的輸入格式;
[0164]所述計劃生成子單元,用于將所述查詢條件、所述分區(qū)描述信息和所述數(shù)據(jù)庫集群在所述并行計算結(jié)構(gòu)中的輸入格式生成為所述MapReduce執(zhí)行計劃的內(nèi)容。
[0165]并行計算架構(gòu)HadOOp500包括一數(shù)據(jù)查詢裝置,該數(shù)據(jù)查詢裝置能夠通過軟件、硬件或者兩者的結(jié)合實(shí)現(xiàn)成為Hive的全部或者一部分。該數(shù)據(jù)查詢裝置包括:計劃獲取模塊520、分區(qū)查詢模塊540、結(jié)果匯總模塊560和結(jié)果反饋模塊580。
[0166]計劃獲取模塊520,用于獲取MapReduce執(zhí)行計劃,所述MapReduce執(zhí)行計劃是并行數(shù)據(jù)倉庫工具Hive根據(jù)針對所述數(shù)據(jù)庫集群的HQL查詢語句生成的,所述HQL查詢語句指定的Hive表對應(yīng)于所述數(shù)據(jù)庫集群中關(guān)聯(lián)的至少兩張分區(qū)表;
[0167]分區(qū)查詢模塊540,用于根據(jù)所述MapReduce執(zhí)行計劃為所述數(shù)據(jù)庫集群中的每個分區(qū)表啟動一個Mapper映射任務(wù)進(jìn)行查詢;
[0168]結(jié)果匯總模塊560,用于通過Reduce化簡任務(wù)匯總每個Mapper映射任務(wù)的查詢結(jié)果;
[0169]結(jié)果反饋t旲塊580,用于向所述Hive反饋匯總后的查詢結(jié)果。
[0170]所述分區(qū)查詢模塊540,包括:分片生成單元542和分區(qū)查詢單元544 ;
[0171]所述分片生成單元542,用于根據(jù)所述分區(qū)描述信息和所述數(shù)據(jù)庫集群在所述Hadoop中的輸入格式將所述數(shù)據(jù)庫集群的各個分區(qū)表轉(zhuǎn)換為各自對應(yīng)的輸入分片;
[0172]所述分區(qū)查詢單元544,用于對于每個所述輸入分片,啟動相應(yīng)的所述Mapper映射任務(wù)執(zhí)行相應(yīng)分區(qū)表的查詢。
[0173]可選地,所述分區(qū)查詢單元544,包括:語句生成子單元和分片查詢子單元;
[0174]所述語句生成子單元,用于對于每個所述映射任務(wù),根據(jù)所述Mapper映射任務(wù)所對應(yīng)的分區(qū)表所對應(yīng)的查詢條件生成分區(qū)查詢語句;
[0175]所述分片查詢子單元,用于通過所述分區(qū)查詢語句在所述分區(qū)表對應(yīng)的輸入分片中讀取數(shù)據(jù)作為查詢結(jié)果。
[0176]綜上所述,本實(shí)施例提供的數(shù)據(jù)查詢系統(tǒng),通過由Hive將針對數(shù)據(jù)庫集群的HQL查詢語句轉(zhuǎn)化為MapReduce執(zhí)行計劃,由Hadoop來執(zhí)行該MapReduce執(zhí)行計劃在數(shù)據(jù)庫集群的各個分區(qū)表中查詢數(shù)據(jù);解決了目前多張關(guān)聯(lián)的分區(qū)表無法支持一些關(guān)系型查詢和統(tǒng)計功能的問題;達(dá)到了借助Hive和Hadoop的分布式并行計算特性,來實(shí)現(xiàn)對數(shù)據(jù)庫集群中多張關(guān)聯(lián)的分區(qū)表的關(guān)系型查詢和統(tǒng)計功能的效果。
[0177]本實(shí)施例提供的數(shù)據(jù)查詢系統(tǒng),還通過Hive中的Hive表來與數(shù)據(jù)庫集群中的多張分區(qū)表進(jìn)行關(guān)聯(lián),借助HQL查詢語句來實(shí)現(xiàn)多張分區(qū)表的結(jié)構(gòu)化查詢,區(qū)解決了目前多張關(guān)聯(lián)的分區(qū)表無法支持一些關(guān)系型查詢和統(tǒng)計功能的問題。同時,還通過實(shí)現(xiàn)數(shù)據(jù)庫集群(如MySQL)中的分區(qū)表至Hadoop中的輸入分片的映射,使得Hadoop的MapReduce能夠運(yùn)行在數(shù)據(jù)庫集群上查詢,借助MapReduce的并行計算特性,實(shí)現(xiàn)了數(shù)據(jù)庫集群的并行查詢能力。
[0178]需要說明的是:上述實(shí)施例提供的數(shù)據(jù)查詢系統(tǒng)在查詢數(shù)據(jù)時,僅以上述各功能模塊的劃分進(jìn)行舉例說明,實(shí)際應(yīng)用中,可以根據(jù)需要而將上述功能分配由不同的功能模塊完成,即將設(shè)備的內(nèi)部結(jié)構(gòu)劃分成不同的功能模塊,以完成以上描述的全部或者部分功能。另外,上述實(shí)施例提供的數(shù)據(jù)查詢系統(tǒng)與數(shù)據(jù)查詢方法實(shí)施例屬于同一構(gòu)思,其具體實(shí)現(xiàn)過程詳見方法實(shí)施例,這里不再贅述。
[0179]上述本發(fā)明實(shí)施例序號僅僅為了描述,不代表實(shí)施例的優(yōu)劣。
[0180]本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例的全部或部分步驟可以通過硬件來完成,也可以通過程序來指令相關(guān)的硬件完成,所述的程序可以存儲于一種計算機(jī)可讀存儲介質(zhì)中,上述提到的存儲介質(zhì)可以是只讀存儲器,磁盤或光盤等。
[0181 ] 以上所述僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種數(shù)據(jù)查詢方法,其特征在于,用于與數(shù)據(jù)庫集群相連的并行數(shù)據(jù)倉庫工具Hive中,所述方法包括: 獲取針對所述數(shù)據(jù)庫集群的HQL查詢語句,所述HQL查詢語句中指定的Hive表對應(yīng)于所述數(shù)據(jù)庫集群中關(guān)聯(lián)的至少兩張分區(qū)表; 根據(jù)所述HQL查詢語句生成MapReduce執(zhí)行計劃; 將所述MapReduce執(zhí)行計劃發(fā)送給并行計算架構(gòu)Hadoop ; 接收所述Hadoop反饋的查詢結(jié)果,所述查詢結(jié)果是所述Hadoop根據(jù)所述MapReduce執(zhí)行計劃為所述數(shù)據(jù)庫集群中的每個分區(qū)表啟動一個Mapper映射任務(wù)后,通過Reduce化簡任務(wù)匯總每個Mapper映射任務(wù)的查詢結(jié)果得到的。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述根據(jù)所述HQL查詢語句生成MapReduce執(zhí)行計劃,包括: 獲取所述HQL查詢語句所指定的Hive表在所述數(shù)據(jù)庫集群對應(yīng)的分區(qū)描述信息; 根據(jù)所述HQL查詢語句、所述Hive表和所述Hive表的分區(qū)描述信息生成所述MapReduce執(zhí)行計劃。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述獲取所述HQL查詢語句所指定的Hive表在所述數(shù)據(jù)庫集群對應(yīng)的分區(qū)描述信息,包括: 預(yù)先存儲所述數(shù)據(jù)庫集群的連接信息;根據(jù)所述連接信息從所述數(shù)據(jù)庫集群獲取所述分區(qū)描述信息; 或, 獲取預(yù)先存儲的所述分區(qū)描述信息。
4.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述根據(jù)所述HQL查詢語句、所述Hive表和所述Hive表的分區(qū)描述信息生成所述MapReduce執(zhí)行計劃,包括: 根據(jù)所述HQL查詢語句確定所述數(shù)據(jù)庫集群中每個分區(qū)表所對應(yīng)的查詢條件; 根據(jù)所述Hive表生成所述數(shù)據(jù)庫集群在所述Hadoop中的輸入格式; 將所述查詢條件、所述分區(qū)描述信息和所述數(shù)據(jù)庫集群在所述Hadoop中的輸入格式生成為所述MapReduce執(zhí)行計劃的內(nèi)容。
5.一種數(shù)據(jù)查詢方法,其特征在于,用于與數(shù)據(jù)庫集群相連的并行計算架構(gòu)Hadoop中,所述方法包括: 獲取MapReduce執(zhí)行計劃,所述MapReduce執(zhí)行計劃是并行數(shù)據(jù)倉庫工具Hive根據(jù)針對所述數(shù)據(jù)庫集群的HQL查詢語句生成的,所述HQL查詢語句指定的Hive表對應(yīng)于所述數(shù)據(jù)庫集群中關(guān)聯(lián)的至少兩張分區(qū)表; 根據(jù)所述MapReduce執(zhí)行計劃為所述數(shù)據(jù)庫集群中的每個分區(qū)表啟動一個Mapper映射任務(wù)進(jìn)行查詢; 通過Reduce化簡任務(wù)匯總每個Mapper映射任務(wù)的查詢結(jié)果; 向所述Hive反饋匯總后的查詢結(jié)果。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述根據(jù)所述MapReduce執(zhí)行計劃為所述數(shù)據(jù)庫集群中的每個分區(qū)表啟動一個Mapper映射任務(wù),包括: 根據(jù)所述分區(qū)描述信息和所述數(shù)據(jù)庫集群在所述Hadoop中的輸入格式將所述數(shù)據(jù)庫集群的各個分區(qū)表轉(zhuǎn)換為各自對應(yīng)的輸入分片;對于每個所述輸入分片,啟動相應(yīng)的所述Mapper映射任務(wù)執(zhí)行相應(yīng)分區(qū)表的查詢。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述對于每個所述輸入分片,啟動相應(yīng)的所述Mapper映射任務(wù)執(zhí)行相應(yīng)分區(qū)表的查詢,包括: 對于每個所述映射任務(wù),根據(jù)所述Mapper映射任務(wù)所對應(yīng)的分區(qū)表所對應(yīng)的查詢條件生成分區(qū)查詢語句; 通過所述分區(qū)查詢語句在所述分區(qū)表對應(yīng)的輸入分片中讀取數(shù)據(jù)作為查詢結(jié)果。
8.一種數(shù)據(jù)查詢裝置,其特征在于,用于與數(shù)據(jù)庫集群相連的并行數(shù)據(jù)倉庫工具Hive中,所述裝置包括: 語句接收模塊,用于獲取針對所述數(shù)據(jù)庫集群的HQL查詢語句,所述HQL查詢語句中指定的Hive表對應(yīng)于所述數(shù)據(jù)庫集群中關(guān)聯(lián)的至少兩張分區(qū)表; 計劃生成模塊,用于根據(jù)所述HQL查詢語句生成MapReduce執(zhí)行計劃; 計劃發(fā)送模塊,用于將所述MapReduce執(zhí)行計劃發(fā)送給并行計算架構(gòu)Hadoop ; 結(jié)果接收模塊,用于接收所述Hadoop反饋的查詢結(jié)果,所述查詢結(jié)果是所述Hadoop根據(jù)所述MapReduce執(zhí)行計劃為所述數(shù)據(jù)庫集群中的每個分區(qū)表啟動一個Mapper映射任務(wù)后,通過Reduce化簡任務(wù)匯總每個Mapper映射任務(wù)的查詢結(jié)果得到的。
9.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述計劃生成模塊,包括:信息獲取單元和計劃生成單元; 所述信息獲取單元,用于獲取所述HQL查詢語句所指定的Hive表在所述數(shù)據(jù)庫集群對應(yīng)的分區(qū)描述信息; 所述計劃生成單元,用于根據(jù)所述HQL查詢語句、所述Hive表和所述Hive表的分區(qū)描述信息生成所述MapReduce執(zhí)行計劃。
10.根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述信息獲取單元,包括: 連接存儲子單元,用于預(yù)先存儲所述數(shù)據(jù)庫集群的連接信息;第一獲取子單元,用于根據(jù)所述連接信息從所述數(shù)據(jù)庫集群獲取所述分區(qū)描述信息; 或, 第二獲取子單元,用于獲取預(yù)先存儲的所述分區(qū)描述信息。
11.根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述計劃生成單元,包括: 條件生成子單元、格式生成子單元和計劃生成子單元; 所述條件生成子單元,用于根據(jù)所述HQL查詢語句確定所述數(shù)據(jù)庫集群中每個分區(qū)表所對應(yīng)的查詢條件; 所述格式生成子單元,用于根據(jù)所述Hive表生成所述數(shù)據(jù)庫集群在所述Hadoop中的輸入格式; 所述計劃生成子單元,用于將所述查詢條件、所述分區(qū)描述信息和所述數(shù)據(jù)庫集群在所述Hadoop中的輸入格式生成為所述MapReduce執(zhí)行計劃的內(nèi)容。
12.—種數(shù)據(jù)查詢裝置,其特征在于,用于與數(shù)據(jù)庫集群相連的并行計算架構(gòu)Hadoop中,所述裝置包括: 計劃獲取模塊,用于獲取MapReduce執(zhí)行計劃,所述MapReduce執(zhí)行計劃是并行數(shù)據(jù)倉庫工具Hive根據(jù)針對所述數(shù)據(jù)庫集群的HQL查詢語句生成的,所述HQL查詢語句指定的Hive表對應(yīng)于所述數(shù)據(jù)庫集群中關(guān)聯(lián)的至少兩張分區(qū)表;分區(qū)查詢模塊,用于根據(jù)所述MapReduce執(zhí)行計劃為所述數(shù)據(jù)庫集群中的每個分區(qū)表啟動一個Mapper映射任務(wù)進(jìn)行查詢; 結(jié)果匯總模塊,用于通過Reduce化簡任務(wù)匯總每個Mapper映射任務(wù)的查詢結(jié)果; 結(jié)果反饋模塊,用于向所述Hive反饋匯總后的查詢結(jié)果。
13.根據(jù)權(quán)利要求12所述的裝置,其特征在于,所述分區(qū)查詢模塊,包括: 分片生成單元和分區(qū)查詢單元; 所述分片生成單元,用于根據(jù)所述分區(qū)描述信息和所述數(shù)據(jù)庫集群在所述Hadoop中的輸入格式將所述數(shù)據(jù)庫集群的各個分區(qū)表轉(zhuǎn)換為各自對應(yīng)的輸入分片; 所述分區(qū)查詢單元,用于對于每個所述輸入分片,啟動相應(yīng)的所述Mapper映射任務(wù)執(zhí)行相應(yīng)分區(qū)表的查詢。
14.根據(jù)權(quán)利要求13所述的裝置,其特征在于,所述分區(qū)查詢單元,包括: 語句生成子單元和分片查詢子單元; 所述語句生成子單元,用于對于每個所述映射任務(wù),根據(jù)所述Mapper映射任務(wù)所對應(yīng)的分區(qū)表所對應(yīng)的查詢條件生成分區(qū)查詢語句; 所述分片查詢子單元,用于通過所述分區(qū)查詢語句在所述分區(qū)表對應(yīng)的輸入分片中讀取數(shù)據(jù)作為查詢結(jié)果。
15.一種數(shù)據(jù)查詢系統(tǒng),其特征在于,所述系統(tǒng)包括數(shù)據(jù)庫集群、與所述數(shù)據(jù)庫集群相連的并行數(shù)據(jù)倉庫工具Hive,以及與所述數(shù)據(jù)庫集群和所述Hive分別相連的并行計算架構(gòu) Hadoop ; 所述數(shù)據(jù)庫集群,存儲有關(guān)聯(lián)的至少兩個分區(qū)表; 所述Hive,包括如權(quán)利要求8至11任一所述的數(shù)據(jù)查詢裝置; 所述Hadoop,包括如權(quán)利要求12至14任一所述的數(shù)據(jù)查詢裝置。
【文檔編號】G06F17/30GK103927331SQ201410108733
【公開日】2014年7月16日 申請日期:2014年3月21日 優(yōu)先權(quán)日:2014年3月21日
【發(fā)明者】喻先兵 申請人:珠海多玩信息技術(shù)有限公司