一種數(shù)據(jù)文件處理方法和裝置的制造方法
【專利摘要】本發(fā)明公開了一種數(shù)據(jù)文件處理方法和裝置,該方法和裝置根據(jù)定義的檢索字段從原始數(shù)據(jù)文件中檢索并收集與檢索字段相同的特定關(guān)鍵值,然后對特定關(guān)鍵值進(jìn)行分析,獲取特定關(guān)鍵值的值域分布情況,然后結(jié)合Hadoop數(shù)據(jù)存放環(huán)境的集群資源使用情況確定文件存儲策略和文件拆分策略,然后根據(jù)文件拆分策略對原始數(shù)據(jù)文件拆分為多個(gè)子文件,最終將各個(gè)子文件分別存儲到HDFS集群的不同節(jié)點(diǎn)上。由上可知,本發(fā)明提供的數(shù)據(jù)文件處理方法和裝置實(shí)現(xiàn)了數(shù)據(jù)文件的分布式存儲。該分布式存儲的子文件為數(shù)據(jù)文件的多線程操作提供了可能,因此,可以實(shí)現(xiàn)對多個(gè)子文件同時(shí)并行處理,提升數(shù)據(jù)處理效率。
【專利說明】
一種數(shù)據(jù)文件處理方法和裝置
技術(shù)領(lǐng)域
[0001 ]本發(fā)明涉及數(shù)據(jù)處理技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)文件處理方法和裝置。
【背景技術(shù)】
[0002]目前,針對超大規(guī)模的數(shù)據(jù)文件,例如銀行交易系統(tǒng)中的交易流水?dāng)?shù)據(jù),其數(shù)據(jù)量可能會達(dá)到TB級。現(xiàn)有技術(shù)中通常將該超大規(guī)模的數(shù)據(jù)文件作為一個(gè)整體存儲成一個(gè)大的數(shù)據(jù)文件。如此針對該數(shù)據(jù)量巨大的數(shù)據(jù)文件在數(shù)據(jù)交互過程中的數(shù)據(jù)的存儲和導(dǎo)入加工均會消耗大量的時(shí)間,進(jìn)而導(dǎo)致處理困難,時(shí)效性滯后。
[0003]而且,由于數(shù)據(jù)表作為一個(gè)整體存成一個(gè)數(shù)據(jù)文件,對這樣一個(gè)數(shù)據(jù)量巨大的數(shù)據(jù)文件的操作往往只能是單線程,因此,對該數(shù)據(jù)文件的處理也會消耗大量的時(shí)間。
【發(fā)明內(nèi)容】
[0004]有鑒于此,本發(fā)明提供了一種數(shù)據(jù)文件處理方法和裝置,以減小處理數(shù)據(jù)消耗的時(shí)間,提高處理效率。
[0005]為了達(dá)到上述發(fā)明目的,本發(fā)明采用了如下技術(shù)方案:
[0006]一種數(shù)據(jù)文件處理方法,包括:
[0007]根據(jù)定義的檢索字段從原始數(shù)據(jù)文件中檢索并收集與所述檢索字段相同的特定關(guān)鍵值;
[0008]對收集到的特定關(guān)鍵值進(jìn)行分析,計(jì)算所述原始數(shù)據(jù)文件的特定關(guān)鍵值的值域分布;
[0009]根據(jù)所述特定關(guān)鍵值的值域分布,結(jié)合HDFS集群中的節(jié)點(diǎn)數(shù)以及各節(jié)點(diǎn)存儲資源使用情況確定所述原始數(shù)據(jù)文件的存儲策略和拆分策略;
[0010]根據(jù)所述拆分策略將所述原始數(shù)據(jù)文件拆分為多個(gè)子文件;
[0011 ]根據(jù)所述存儲策略將各個(gè)子文件分別存儲在相應(yīng)節(jié)點(diǎn)上。
[0012]可選地,所述根據(jù)所述拆分策略將所述原始數(shù)據(jù)文件拆分為多個(gè)子文件,具體包括:
[0013]根據(jù)拆分策略確定各個(gè)子文件的特定關(guān)鍵值的值域上下限;
[0014]在所述原始數(shù)據(jù)文件中定位各個(gè)子文件的特定關(guān)鍵值的值域上下限;
[0015]根據(jù)各個(gè)子文件的特定關(guān)鍵值的值域上下限,對所述原始數(shù)據(jù)文件進(jìn)行拆分,提取出各個(gè)子文件。
[0016]可選地,所述對收集到的特定關(guān)鍵值進(jìn)行分析,計(jì)算所述原始數(shù)據(jù)文件的特定關(guān)鍵值的值域分布,具體包括:
[0017]基于Spark的流處理技術(shù)將收集到的特定關(guān)鍵值抽取到內(nèi)存中;
[0018]對抽取到內(nèi)存中的特定關(guān)鍵值進(jìn)行并發(fā)快速分析,計(jì)算所述原始數(shù)據(jù)文件中的特定關(guān)鍵值的值域分布。
[0019]可選地,所述根據(jù)各個(gè)子文件的特定關(guān)鍵值的值域上下限,對所述原始數(shù)據(jù)文件進(jìn)行拆分,提取出各個(gè)子文件,具體包括:
[0020]利用Spark管道處理技術(shù),根據(jù)各個(gè)子文件的特定關(guān)鍵值的值域上下限,對所述原始數(shù)據(jù)文件進(jìn)行拆分,提取出各個(gè)子文件。
[0021]可選地,所述根據(jù)所述存儲策略將各個(gè)子文件分別存儲在相應(yīng)節(jié)點(diǎn)上后,還包括:
[0022]當(dāng)原始數(shù)據(jù)文件需要與關(guān)系型數(shù)據(jù)庫對接時(shí),制定開發(fā)對接元數(shù)據(jù),通過外部表的方式利用多線程將存儲在HDFS集群節(jié)點(diǎn)中的各個(gè)子文件并發(fā)導(dǎo)入數(shù)據(jù)庫。
[0023]可選地,所述根據(jù)所述存儲策略將各個(gè)子文件分別存儲在相應(yīng)節(jié)點(diǎn)上后,還包括:
[0024]當(dāng)前臺應(yīng)用需要查詢原始數(shù)據(jù)文件時(shí),制定開發(fā)查詢元數(shù)據(jù),通過類sql方法實(shí)現(xiàn)前臺應(yīng)用對存儲在各個(gè)節(jié)點(diǎn)上的子文件的查詢。
[0025]可選地,所述根據(jù)所述存儲策略將各個(gè)子文件分別存儲在相應(yīng)節(jié)點(diǎn)上后,還包括:
[0026]當(dāng)Webservice需要對原始數(shù)據(jù)文件進(jìn)行訪問時(shí),制定開發(fā)Webservice元數(shù)據(jù),通過類sql方法實(shí)現(xiàn)Webservice對存儲在各個(gè)節(jié)點(diǎn)上的子文件的訪問,并進(jìn)行結(jié)果展示。
[0027]可選地,所述原始數(shù)據(jù)文件為壓縮格式的數(shù)據(jù)文件或非壓縮格式的數(shù)據(jù)文件。
[0028]一種數(shù)據(jù)文件處理裝置,包括:
[0029]檢索和收集單元,用于根據(jù)定義的檢索字段從原始數(shù)據(jù)文件中檢索并收集與所述檢索字段相同的特定關(guān)鍵值;
[0030]分析單元,用于對收集到的特定關(guān)鍵值進(jìn)行分析,計(jì)算所述原始數(shù)據(jù)文件的特定關(guān)鍵值的值域分布;
[0031]確定單元,用于根據(jù)所述特定關(guān)鍵值的值域分布,結(jié)合HDFS集群中的節(jié)點(diǎn)數(shù)以及各節(jié)點(diǎn)存儲資源使用情況確定所述原始數(shù)據(jù)文件的存儲策略和拆分策略;
[0032]拆分單元,用于根據(jù)所述拆分策略將所述原始數(shù)據(jù)文件拆分為多個(gè)子文件;
[0033]存儲單元,用于根據(jù)所述存儲策略將各個(gè)子文件分別存儲在相應(yīng)節(jié)點(diǎn)上。
[0034]可選地,所述拆分單元包括:
[0035]確定子單元,用于根據(jù)拆分策略確定各個(gè)子文件的特定關(guān)鍵值的值域上下限;
[0036]定位子單元,用于在所述原始數(shù)據(jù)文件中定位各個(gè)子文件的特定關(guān)鍵值的值域上下限;
[0037]提取子單元,用于根據(jù)各個(gè)子文件的特定關(guān)鍵值的值域上下限,對所述原始數(shù)據(jù)文件進(jìn)行拆分,提取出各個(gè)子文件。
[0038]可選地,所述分析單元包括:
[0039]抽取子單元,用于基于Spark的流處理技術(shù)將收集到的特定關(guān)鍵值抽取到內(nèi)存中;
[0040]計(jì)算子單元,用于對抽取到內(nèi)存中的特定關(guān)鍵值進(jìn)行并發(fā)快速分析,計(jì)算所述原始數(shù)據(jù)文件中的特定關(guān)鍵值的值域分布。
[0041]可選地,所述提取子單元包括利用Spark管道處理技術(shù),根據(jù)各個(gè)子文件的特定關(guān)鍵值的值域上下限,對所述原始數(shù)據(jù)文件進(jìn)行拆分,提取出各個(gè)子文件的子單元。
[0042]可選地,所述裝置還包括:
[0043]數(shù)據(jù)庫對接單元,用于當(dāng)原始數(shù)據(jù)文件需要與關(guān)系型數(shù)據(jù)庫對接時(shí),制定開發(fā)對接元數(shù)據(jù),通過外部表的方式利用多線程將存儲在HDFS集群節(jié)點(diǎn)中的各個(gè)子文件并發(fā)導(dǎo)入數(shù)據(jù)庫。
[0044]可選地,所述裝置還包括:
[0045]查詢單元,用于當(dāng)前臺應(yīng)用需要查詢原始數(shù)據(jù)文件時(shí),制定開發(fā)查詢元數(shù)據(jù),通過類sql方法實(shí)現(xiàn)前臺應(yīng)用對存儲在各個(gè)節(jié)點(diǎn)上的子文件的查詢。
[0046]可選地,所述裝置還包括:
[0047]Webservice訪問單元,用于當(dāng)Webservice需要對原始數(shù)據(jù)文件進(jìn)行訪問時(shí),制定開發(fā)Webservice元數(shù)據(jù),通過類sql方法實(shí)現(xiàn)Webservice對存儲在各個(gè)節(jié)點(diǎn)上的子文件的訪問,并進(jìn)行結(jié)果展示。
[0048]可選地,所述原始數(shù)據(jù)文件為壓縮格式的數(shù)據(jù)文件或非壓縮格式的數(shù)據(jù)文件。[0049 ]相較于現(xiàn)有技術(shù),本發(fā)明具有以下有益效果:
[0050]通過以上技術(shù)方案可知,本發(fā)明提供的數(shù)據(jù)文件處理方法首先根據(jù)定義的檢索字段從原始數(shù)據(jù)文件中檢索并收集與檢索字段相同的特定關(guān)鍵值,然后對特定關(guān)鍵值進(jìn)行分析,獲取特定關(guān)鍵值的值域分布情況,然后結(jié)合Hadoop數(shù)據(jù)存放環(huán)境的集群資源使用情況確定文件存儲策略和文件拆分策略,然后根據(jù)文件拆分策略對原始數(shù)據(jù)文件拆分為多個(gè)子文件,最終將各個(gè)子文件分別存儲到HDFS集群的不同節(jié)點(diǎn)上。由上可知,本發(fā)明提供的數(shù)據(jù)文件處理方法實(shí)現(xiàn)了數(shù)據(jù)文件的分布式存儲。該分布式存儲的子文件為數(shù)據(jù)文件的多線程操作提供了可能,因此,可以實(shí)現(xiàn)對多個(gè)子文件同時(shí)并行處理,提升數(shù)據(jù)處理效率。
【附圖說明】
[0051]為了清楚地理解本發(fā)明的技術(shù)方案,下面將描述本發(fā)明【具體實(shí)施方式】時(shí)用到的附圖做一簡要說明。
[0052]圖1是本發(fā)明實(shí)施例提供的數(shù)據(jù)文件處理方法流程示意圖;
[0053]圖2是本發(fā)明實(shí)施例提供的圖1中的步驟SlOl的一個(gè)具體實(shí)現(xiàn)方式流程示意圖;
[0054]圖3是本發(fā)明實(shí)施例提供的一種數(shù)據(jù)文件處理裝置結(jié)構(gòu)示意圖;
[0055]圖4是本發(fā)明實(shí)施例提供的拆分單元的結(jié)構(gòu)示意圖;
[0056]圖5是本發(fā)明實(shí)施例提供的分析單元結(jié)構(gòu)示意圖;
[0057]圖6是本發(fā)明實(shí)施例提供的另一種數(shù)據(jù)文件處理裝置結(jié)構(gòu)示意圖;
[0058]圖7是基于圖6所示的處理裝置的數(shù)據(jù)處理方法流程示意圖。
【具體實(shí)施方式】
[0059]為使本發(fā)明的目的、技術(shù)手段和技術(shù)效果更加清楚、完整,下面結(jié)合附圖對本發(fā)明的【具體實(shí)施方式】進(jìn)行詳細(xì)描述。
[0060]為了清楚地理解本發(fā)明的技術(shù)方案,在介紹本發(fā)明的【具體實(shí)施方式】之前,首先介紹與本發(fā)明【具體實(shí)施方式】相關(guān)的技術(shù)術(shù)語。
[0061 ] Hadoop:分布式數(shù)據(jù)存儲框架,通過分布式文件系統(tǒng)HDFS(Hadoop DistributedFile System)可以將海量數(shù)據(jù)快速存儲,并提供了多種快速檢索處理的手段。
[0062]Spark:是一種基于內(nèi)存的快速并行計(jì)算框架,它可以提供靈活強(qiáng)大的數(shù)據(jù)處理計(jì)算功能。它提高了在海量數(shù)據(jù)環(huán)境下數(shù)據(jù)處理的快速響應(yīng),同時(shí)保證了高容錯(cuò)性,成本低廉。
[0063]文件拆分:根據(jù)特定關(guān)鍵值的值域分布,以及Hadoop文件系統(tǒng)的存儲資源使用情況對數(shù)據(jù)文件進(jìn)行拆分。由于文件拆分為多個(gè),可以并發(fā)操作,大幅提升性能。
[0064]外部表:是指不存在于數(shù)據(jù)庫中的表。通過向Oracle提供描述外部表的元數(shù)據(jù),我們可以把一個(gè)操作系統(tǒng)文件當(dāng)成一個(gè)只讀的數(shù)據(jù)庫表,就像這些數(shù)據(jù)存儲在一個(gè)普通數(shù)據(jù)庫表中一樣來進(jìn)行訪問。外部表是對數(shù)據(jù)庫表的延伸。通過外部表可以實(shí)現(xiàn)對數(shù)據(jù)文件的增加、刪除、修改和查找操作。
[0065]元數(shù)據(jù):又稱中介數(shù)據(jù)、中繼數(shù)據(jù),為描述數(shù)據(jù)的數(shù)據(jù)(dataabout data),主要是描述數(shù)據(jù)屬性(property)的信息,用來支持如指示存儲位置、歷史數(shù)據(jù)、資源查找、文件記錄等功能。
[0066]下面結(jié)合附圖對本發(fā)明的【具體實(shí)施方式】進(jìn)行詳細(xì)描述。
[0067]為了解決超大規(guī)模的數(shù)據(jù)文件作為一個(gè)整體存儲成一個(gè)大的數(shù)據(jù)文件導(dǎo)致的后續(xù)對數(shù)據(jù)加工處理只能單線程操作,消耗大量時(shí)間的問題,本發(fā)明實(shí)施例提供了一種數(shù)據(jù)文件處理方法,該數(shù)據(jù)文件處理方法可以快速對大規(guī)模數(shù)據(jù)文件進(jìn)行分析、拆分、存儲和管理,能夠有效解決上述技術(shù)問題。該數(shù)據(jù)處理方法充分利用了 Hadoop適用于海量數(shù)據(jù)存儲的特點(diǎn),通過分布式文件系統(tǒng)HDFS可以將一個(gè)大的數(shù)據(jù)文件拆分成多個(gè)子文件,然后將這些子文件分別存儲在HDFS的不同節(jié)點(diǎn)上,從而實(shí)現(xiàn)了數(shù)據(jù)文件的分布式存儲。
[0068]圖1是本發(fā)明實(shí)施例提供的數(shù)據(jù)文件處理方法流程示意圖。如圖1所示,該方法包括以下步驟:
[0069]SlOl、根據(jù)定義的檢索字段從原始數(shù)據(jù)文件中檢索并收集與所述檢索字段相同的特定關(guān)鍵值:
[0070]需要說明的是,本發(fā)明提供的數(shù)據(jù)文件處理方法不僅支持非壓縮格式的數(shù)據(jù)文件,還支持壓縮格式的數(shù)據(jù)文件。當(dāng)原始數(shù)據(jù)文件為壓縮格式的數(shù)據(jù)文件時(shí),能夠大幅節(jié)約存儲空間。
[0071 ]需要說明的是,作為本發(fā)明的一個(gè)具體實(shí)施例,當(dāng)預(yù)先獲知了原始數(shù)據(jù)文件中的關(guān)鍵值時(shí),步驟SlOl的具體實(shí)現(xiàn)方式可以如下所示:預(yù)先定義檢索字段,然后掃描原始數(shù)據(jù)文件,根據(jù)預(yù)先定義的檢索字段從原始數(shù)據(jù)文件中檢索并收集與所述檢索字段相同的特定關(guān)鍵值。
[0072]需要說明的是,本發(fā)明實(shí)施例定義的檢索字段可以為原始數(shù)據(jù)文件中的任一關(guān)鍵值,例如可以為數(shù)據(jù)記錄的主鍵ID。此外,本發(fā)明實(shí)施例的檢索字段可以為文字型字段,還可以為數(shù)值型字段,與之對應(yīng)地,特定關(guān)鍵值可以為文字型字段,也可以為數(shù)值型字段。
[0073]此外,作為本發(fā)明的另一具體實(shí)施例,當(dāng)預(yù)先無法獲知原始數(shù)據(jù)文件中的關(guān)鍵值時(shí),步驟SlOl的具體實(shí)現(xiàn)方式可以如下:先掃描原始數(shù)據(jù)文件,對原始數(shù)據(jù)文件中的關(guān)鍵值進(jìn)行摸底,即此時(shí)掃描原始數(shù)據(jù)文件的目的是為了獲知原始數(shù)據(jù)文件中的關(guān)鍵值,然后根據(jù)獲知的原始數(shù)據(jù)文件的關(guān)鍵值定義檢索字段,然后再掃描原始數(shù)據(jù)文件根據(jù)檢索字段從原始數(shù)據(jù)文件中檢索并收集與檢索字段相同的特定關(guān)鍵值。
[0074]此外,作為本發(fā)明的又一具體實(shí)施例,步驟SlOl的具體實(shí)現(xiàn)方式還可以如圖2所示,其包括以下步驟:
[0075]SlOl 1、掃描原始數(shù)據(jù)文件;
[0076]S1012、判斷是否定義了檢索字段,如果是,執(zhí)行步驟S1013;如果否,執(zhí)行步驟S1014;
[0077]S1013、掃描原始數(shù)據(jù)文件根據(jù)檢索字段從原始數(shù)據(jù)文件中檢索并收集與檢索字段相同的特定關(guān)鍵值。
[0078]S1014、定義檢索字段,返回執(zhí)行步驟S1011,或者返回執(zhí)行步驟S1013。
[0079]S102、對收集到的特定關(guān)鍵值進(jìn)行分析,計(jì)算所述原始數(shù)據(jù)文件的特定關(guān)鍵值的值域分布:
[0080]需要說明的是,作為本發(fā)明的一個(gè)可選實(shí)施例,可以基于Spark的流處理技術(shù)對收集到的關(guān)鍵值進(jìn)行分析,計(jì)算原始數(shù)據(jù)文件的關(guān)鍵值的值域分布。
[0081 ]其中,基于Spark的流處理技術(shù)對收集到的關(guān)鍵值進(jìn)行分析,計(jì)算原始數(shù)據(jù)文件的關(guān)鍵值的值域分布的具體實(shí)現(xiàn)過程包括以下兩個(gè)步驟:
[0082]Al、基于Spark的流處理技術(shù)將收集到的特定關(guān)鍵值抽取到內(nèi)存中。
[0083]A2、對抽取到內(nèi)存中的特定關(guān)鍵值進(jìn)行并發(fā)快速分析,計(jì)算所述原始數(shù)據(jù)文件中的特定關(guān)鍵值的值域分布:
[0084]具體地,針對特定關(guān)鍵值為數(shù)值型關(guān)鍵值的情況,特定關(guān)鍵值的值域分布即為特定關(guān)鍵值的值在原始數(shù)據(jù)文件中跨越的數(shù)值范圍。例如,針對銀行交易系統(tǒng)中的存款交易流水或貸款交易流水,當(dāng)特定關(guān)鍵值為數(shù)據(jù)記錄的主鍵ID時(shí),當(dāng)10000條記錄的主鍵ID分布在1000至9999之間時(shí),則該主鍵ID的值域分布為1000到9999之間的范圍。
[0085]針對特定關(guān)鍵值為文字型關(guān)鍵值的情況,在計(jì)算原始數(shù)據(jù)文件的特定關(guān)鍵值的值域分布之前,需要預(yù)先對文字型關(guān)鍵值進(jìn)行分類,例如根據(jù)字典數(shù)據(jù)內(nèi)容將文字型關(guān)鍵值分為不同類,文字型關(guān)鍵值的類別即為該文字型關(guān)鍵值的值。此時(shí),計(jì)算原始數(shù)據(jù)文件中的特定關(guān)鍵值的值域分布就是計(jì)算原始數(shù)據(jù)文件中的文字類別的數(shù)量。
[0086]S103、根據(jù)所述特定關(guān)鍵值的值域分布,結(jié)合HDFS集群中的節(jié)點(diǎn)數(shù)以及各節(jié)點(diǎn)存儲資源使用情況確定所述原始數(shù)據(jù)文件的存儲策略和拆分策略:
[0087]其中,HDFS集群中各節(jié)點(diǎn)存儲資源使用情況可以為各節(jié)點(diǎn)的剩余存儲空間。下面舉例說明本步驟的【具體實(shí)施方式】:
[0088]例如,HDFS集群中的節(jié)點(diǎn)數(shù)為10,可以將將該原始數(shù)據(jù)文件拆分為10個(gè)子文件,而且根據(jù)各節(jié)點(diǎn)的剩余存儲空間和特定關(guān)鍵值的值域分布,確定拆分的各個(gè)子文件的大小以及各個(gè)子文件的值域分布上下限。舉例說明:銀行交易流水表中的10000條記錄的主鍵ID分布在1000至9999之間,1000至3000的記錄有9000條,那這9000條記錄可以拆分成9個(gè)子文件,而3000至9000的數(shù)據(jù)為一個(gè)子文件。其中,拆分的子文件個(gè)數(shù)以及拆分的各個(gè)子文件的大小以及根據(jù)子文件的大小將其存儲在大小適應(yīng)的節(jié)點(diǎn)上的策略可以稱之為存儲策略。如何對原始數(shù)據(jù)文件進(jìn)行拆分的策略稱之為拆分策略。
[0089]需要說明的是,當(dāng)特定關(guān)鍵值為數(shù)值型關(guān)鍵值時(shí),其對應(yīng)的值域分布中可能存在特定關(guān)鍵值的極值。當(dāng)值域分布中存在特定關(guān)鍵值的極值時(shí),為了后續(xù)拆分文件的方便,可以在文件拆分之前將這些極值從值域分布中去除,或者將這些極值從值域分布中提取出來,將這些極值數(shù)據(jù)形成單獨(dú)的極值數(shù)據(jù)子文件。
[0090]S104、根據(jù)所述拆分策略將所述原始數(shù)據(jù)文件拆分為多個(gè)子文件:
[0091]本發(fā)明實(shí)施例可以利用Spark管道處理技術(shù)根據(jù)所述拆分策略將原始數(shù)據(jù)文件拆分為多個(gè)子文件。
[0092]作為本發(fā)明的一個(gè)示例,本步驟的具體實(shí)現(xiàn)方式可以包括以下步驟:
[0093]B1、根據(jù)拆分策略確定各個(gè)子文件的特定關(guān)鍵值的值域分布上下限:
[0094]上述步驟S103根據(jù)特定關(guān)鍵值的值域分布,結(jié)合HDFS集群中的各節(jié)點(diǎn)的存儲資源情況以及節(jié)點(diǎn)數(shù)可以確定原始數(shù)據(jù)文件的拆分策略。
[0095]根據(jù)該拆分策略可以確定各個(gè)子文件的特定關(guān)鍵值的值域分布的上下限。
[0096]B2、在所述原始數(shù)據(jù)文件中定位各個(gè)子文件的特定關(guān)鍵值的值域分布上下限。
[0097]B3、根據(jù)各個(gè)子文件的特定關(guān)鍵值值域分布上下限,對所述原始數(shù)據(jù)文件進(jìn)行拆分,提取出各個(gè)子文件:
[0098]利用Spark流處理技術(shù)根據(jù)各個(gè)子文件的特定關(guān)鍵值的值域分布上下限,對原始數(shù)據(jù)文件進(jìn)行拆分,從原始數(shù)據(jù)文件中提取出各個(gè)子文件,提取出的各個(gè)子文件即為拆分后的子文件。
[0099]S105、根據(jù)所述存儲策略將各個(gè)子文件分別存儲在相應(yīng)節(jié)點(diǎn)上:
[0100]在本發(fā)明實(shí)施例中,數(shù)據(jù)存儲采用分布式存儲框架Hadoop中的分布式文件系統(tǒng)HDFS,拆分出的各個(gè)子文件可以根據(jù)存儲策略和各個(gè)子文件的文件大小分別存儲到相應(yīng)節(jié)點(diǎn)上。
[0101]為了實(shí)現(xiàn)將上述存儲的數(shù)據(jù)文件導(dǎo)入數(shù)據(jù)庫中,作為本發(fā)明的可選實(shí)施例,上述所述的數(shù)據(jù)文件處理方法還可以包括以下步驟:
[0102]S106、判斷原始數(shù)據(jù)文件是否需要與關(guān)系型數(shù)據(jù)庫對接,如果是,執(zhí)行步驟S107,如果否,結(jié)束運(yùn)行:
[0103]S107、制定開發(fā)對接元數(shù)據(jù),通過外部表的方式利用多線程將存儲在HDFS集群節(jié)點(diǎn)中的各個(gè)子文件并發(fā)導(dǎo)入數(shù)據(jù)庫。
[0104]通過以上【具體實(shí)施方式】,本發(fā)明實(shí)施例利用外部表可以多線程對HDFS分布式存儲的子文件并發(fā)操作,將各個(gè)子文件并發(fā)導(dǎo)入數(shù)據(jù)庫。相較于現(xiàn)有技術(shù)中只能通過單線程將整個(gè)數(shù)據(jù)文件導(dǎo)入數(shù)據(jù)庫的方式,本發(fā)明實(shí)施例使HDFS集群每個(gè)階段的資源都被充分調(diào)動(dòng)起來,處理效率成倍提升。
[0105]另外,本發(fā)明提供的數(shù)據(jù)文件處理方法能夠支持壓縮文件直接轉(zhuǎn)換入庫,所以,該數(shù)據(jù)文件處理方法不僅能夠大幅提升數(shù)據(jù)處理效率,而且還能夠節(jié)省很多存儲空間。
[0106]為了實(shí)現(xiàn)前臺應(yīng)用對原始數(shù)據(jù)文件的查詢統(tǒng)計(jì),作為本發(fā)明的另一實(shí)施例,在上述實(shí)施例的基礎(chǔ)上,還可以包括以下步驟:
[0107]S108、判斷前臺應(yīng)用是否查詢統(tǒng)計(jì)原始數(shù)據(jù)文件,如果是,執(zhí)行步驟S109,如果否,結(jié)束運(yùn)行。
[0108]S109、制定開發(fā)查詢元數(shù)據(jù),通過類sql (結(jié)構(gòu)化查詢語言,Structured QueryLanguage)方法實(shí)現(xiàn)前臺應(yīng)用對存儲在各個(gè)節(jié)點(diǎn)上的子文件的查詢:
[0109]其中,標(biāo)準(zhǔn)sql語句通過Spark解析后可以完成一系列ETL操作,提供給前臺頁面。其中,ETL,是英文Extract-Transform-Load的縮寫,用來描述將數(shù)據(jù)從來源端經(jīng)過抽取(extract)、轉(zhuǎn)換(transform)、加載(load)至目的端的過程。
[Ο??Ο]為了實(shí)現(xiàn)Webservice訪問原始數(shù)據(jù)文件,作為本發(fā)明的又一實(shí)施例,在上述任一實(shí)施例的基礎(chǔ)上,還可以進(jìn)一步包括以下步驟:
[0111]S110、判斷webservice是否需要訪問原始數(shù)據(jù)文件,如果是,執(zhí)行步驟Slll,如果否,結(jié)束運(yùn)行。
[0112]Slll、制定開發(fā)Webservice元數(shù)據(jù),通過類sql方法實(shí)現(xiàn)Webservice對存儲在各個(gè)節(jié)點(diǎn)上的子文件的訪問,并進(jìn)行結(jié)果展示。
[0113]以上為本發(fā)明實(shí)施例提供的數(shù)據(jù)文件處理方法的【具體實(shí)施方式】。在該【具體實(shí)施方式】中,由于原始數(shù)據(jù)文件可以拆分為多個(gè)子文件,并將拆分后的多個(gè)子文件分別存儲在HDFS集群中的不同節(jié)點(diǎn)上。因此,本發(fā)明提供的數(shù)據(jù)文件處理方法實(shí)現(xiàn)了數(shù)據(jù)文件的分布式存儲,所以,該數(shù)據(jù)文件處理方法的數(shù)據(jù)存儲過程能夠充分利用存儲資源,使存儲資源利用更合理。而且,該分布式存儲的子文件為數(shù)據(jù)文件的多線程操作提供了可能,因此,可以實(shí)現(xiàn)對子文件的訪問能夠?qū)崿F(xiàn)并發(fā)多節(jié)點(diǎn)讀寫,使數(shù)據(jù)的訪問操作效率實(shí)現(xiàn)了成倍提升。此外,HDFS可以部署在廉價(jià)的PC集群中,大幅節(jié)約成本。
[0114]另外,本發(fā)明實(shí)施例在計(jì)算特定關(guān)鍵值值域分布和原始數(shù)據(jù)文件拆分成子文件的過程中均利用了 Spark流處理技術(shù)。因此,該數(shù)據(jù)處理方法充分發(fā)揮了 Spark基于內(nèi)存的并行計(jì)算優(yōu)勢,并且使用分布式文件系統(tǒng)的數(shù)據(jù)特點(diǎn),大幅提高了數(shù)據(jù)處理效率。
[0115]此外,在對分布式存儲數(shù)據(jù)文件的訪問過程中,可以采用多線程并行訪問處理,極大地提升了數(shù)據(jù)訪問性能。另外,在該數(shù)據(jù)處理方法中,前臺應(yīng)用或Webservice可以直接對數(shù)據(jù)文件進(jìn)行查詢分析,不再在數(shù)據(jù)文件訪問處理前,先將數(shù)據(jù)先導(dǎo)入數(shù)據(jù)庫的操作。
[0116]基于上述實(shí)施例提供的數(shù)據(jù)文件處理方法,本發(fā)明實(shí)施例還提供了一種數(shù)據(jù)文件處理裝置,具體參見以下實(shí)施例。
[0117]圖3是本發(fā)明實(shí)施例提供的數(shù)據(jù)文件處理裝置結(jié)構(gòu)示意圖。如圖3所示,該處理裝置包括以下單元:
[0118]檢索和收集單元31,用于根據(jù)定義的檢索字段從原始數(shù)據(jù)文件中檢索并收集與所述檢索字段相同的特定關(guān)鍵值;
[0119]分析單元32,用于對收集到的特定關(guān)鍵值進(jìn)行分析,計(jì)算所述原始數(shù)據(jù)文件的特定關(guān)鍵值的值域分布;
[0120]確定單元33,用于根據(jù)所述特定關(guān)鍵值的值域分布,結(jié)合HDFS集群中的節(jié)點(diǎn)數(shù)以及各節(jié)點(diǎn)存儲資源使用情況確定所述原始數(shù)據(jù)文件的存儲策略和拆分策略;
[0121 ]拆分單元34,用于根據(jù)所述拆分策略將所述原始數(shù)據(jù)文件拆分為多個(gè)子文件;
[0122]存儲單元35,用于根據(jù)所述存儲策略將各個(gè)子文件分別存儲在相應(yīng)節(jié)點(diǎn)上。
[0123]作為本發(fā)明的一個(gè)具體實(shí)施例,拆分單元34的結(jié)構(gòu)示意圖如圖4所示,其可以具體包括:
[0124]確定子單元341,用于根據(jù)拆分策略確定各個(gè)子文件的特定關(guān)鍵值的值域上下限;
[0125]定位子單元342,用于在所述原始數(shù)據(jù)文件中定位各個(gè)子文件的特定關(guān)鍵值的值域上下限;
[0126]提取子單元343,用于根據(jù)各個(gè)子文件的特定關(guān)鍵值的值域上下限,對所述原始數(shù)據(jù)文件進(jìn)行拆分,提取出各個(gè)子文件。
[0127]作為本發(fā)明的另一具體實(shí)施例,分析單元32的結(jié)構(gòu)示意圖如圖5所示,可以具體包括:
[0128]抽取子單元321,用于基于Spark的流處理技術(shù)將收集到的特定關(guān)鍵值抽取到內(nèi)存中;
[0129]計(jì)算子單元322,用于對抽取到內(nèi)存中的特定關(guān)鍵值進(jìn)行并發(fā)快速分析,計(jì)算所述原始數(shù)據(jù)文件中的特定關(guān)鍵值的值域分布。
[0130]為了利用Spark管道處理技術(shù)進(jìn)行數(shù)據(jù)文件拆分,所述提取子單元343包括利用Spark管道處理技術(shù),根據(jù)各個(gè)子文件的特定關(guān)鍵值的值域上下限,對所述原始數(shù)據(jù)文件進(jìn)行拆分,提取出各個(gè)子文件的子單元。
[0131]為了實(shí)現(xiàn)數(shù)據(jù)文件與數(shù)據(jù)庫的對接,上述所述的數(shù)據(jù)文件處理裝置還可以包括:
[0132]數(shù)據(jù)庫對接單元36,用于當(dāng)原始數(shù)據(jù)文件需要與關(guān)系型數(shù)據(jù)庫對接時(shí),制定開發(fā)對接元數(shù)據(jù),通過外部表的方式利用多線程將存儲在HDFS集群節(jié)點(diǎn)中的各個(gè)子文件并發(fā)導(dǎo)入數(shù)據(jù)庫。
[0133]為了實(shí)現(xiàn)前臺應(yīng)用對原始數(shù)據(jù)文件的查詢統(tǒng)計(jì),作為本發(fā)明的另一實(shí)施例,上述所述的數(shù)據(jù)文件處理裝置還可以包括:
[0134]查詢單元37,用于當(dāng)前臺應(yīng)用需要查詢原始數(shù)據(jù)文件時(shí),制定開發(fā)查詢元數(shù)據(jù),通過類sql方法實(shí)現(xiàn)前臺應(yīng)用對存儲在各個(gè)節(jié)點(diǎn)上的子文件的查詢。
[0135]為了實(shí)現(xiàn)Webservice訪問原始數(shù)據(jù)文件,作為本發(fā)明的又一實(shí)施例,所述裝置還可以包括:
[ΟΙ36] Webservice訪問單元38,用于當(dāng)Webservice需要對原始數(shù)據(jù)文件進(jìn)行訪問時(shí),制定開發(fā)Webservice元數(shù)據(jù),通過類sql方法實(shí)現(xiàn)Webservice對存儲在各個(gè)節(jié)點(diǎn)上的子文件的訪問,并進(jìn)行結(jié)果展示。
[0137]以上為本發(fā)明實(shí)施例提供的數(shù)據(jù)文件處理裝置的【具體實(shí)施方式】。需要說明的是,上述實(shí)施例所述的數(shù)據(jù)文件處理裝置中的各個(gè)功能單元是與圖1所示的處理方法的各個(gè)步驟相對應(yīng)的。
[0138]另外,由于本發(fā)明實(shí)施例提供的數(shù)據(jù)文件方法可以快速對大規(guī)模數(shù)據(jù)文件進(jìn)行分析、拆分、存儲和管理的過程,因此,還可以認(rèn)為上述實(shí)施例提供的數(shù)據(jù)文件處理裝置包括4個(gè)功能模塊。每個(gè)功能模塊內(nèi)包括多個(gè)功能單元。此時(shí),本發(fā)明實(shí)施例提供的數(shù)據(jù)文件處理裝置框架示意圖如圖6所示,其包括以下模塊:數(shù)據(jù)探索模塊61、數(shù)據(jù)拆分模塊62、數(shù)據(jù)存儲模塊63和數(shù)據(jù)訪問模塊64。
[0139]其中,數(shù)據(jù)探索模塊61能夠?qū)崿F(xiàn)以下功能:根據(jù)定義的檢索字段從原始數(shù)據(jù)文件中檢索并收集與所述檢索字段相同的特定關(guān)鍵值;對收集到的特定關(guān)鍵值進(jìn)行分析,計(jì)算所述原始數(shù)據(jù)文件的特定關(guān)鍵值的值域分布;根據(jù)所述特定關(guān)鍵值的值域分布,結(jié)合HDFS集群中的節(jié)點(diǎn)數(shù)以及各節(jié)點(diǎn)存儲資源使用情況確定所述原始數(shù)據(jù)文件的存儲策略和拆分策略。
[0140]數(shù)據(jù)拆分模塊62能夠?qū)崿F(xiàn)以下功能:根據(jù)所述拆分策略將所述原始數(shù)據(jù)文件拆分為多個(gè)子文件;該數(shù)據(jù)拆分模塊62實(shí)現(xiàn)的功能更具體為:根據(jù)拆分策略確定各個(gè)子文件的特定關(guān)鍵值的值域上下限;在所述原始數(shù)據(jù)文件中定位各個(gè)子文件的特定關(guān)鍵值的值域上下限;根據(jù)各個(gè)子文件的特定關(guān)鍵值的值域上下限,對所述原始數(shù)據(jù)文件進(jìn)行拆分,提取出各個(gè)子文件。
[0141 ]數(shù)據(jù)存儲模塊63能夠?qū)崿F(xiàn)以下功能:根據(jù)所述存儲策略將各個(gè)子文件分別存儲在相應(yīng)節(jié)點(diǎn)上,從而實(shí)現(xiàn)數(shù)據(jù)文件的分布式存儲。如圖4所示,將原始數(shù)據(jù)文件存儲成η個(gè)子文件。其中,η彡2,且η為整數(shù)。
[0142]數(shù)據(jù)訪問模塊64能夠?qū)崿F(xiàn)以下功能:當(dāng)原始數(shù)據(jù)文件需要與關(guān)系型數(shù)據(jù)庫對接時(shí),制定開發(fā)對接元數(shù)據(jù),通過外部表的方式利用多線程將存儲在HDFS集群節(jié)點(diǎn)中的各個(gè)子文件并發(fā)導(dǎo)入數(shù)據(jù)庫。當(dāng)前臺應(yīng)用需要查詢原始數(shù)據(jù)文件時(shí),制定開發(fā)查詢元數(shù)據(jù),通過類sql方法實(shí)現(xiàn)前臺應(yīng)用對存儲在各個(gè)節(jié)點(diǎn)上的子文件的查詢。當(dāng)Webservice需要對原始數(shù)據(jù)文件進(jìn)行訪問時(shí),制定開發(fā)Webservice元數(shù)據(jù),通過類sql方法實(shí)現(xiàn)Webservice對存儲在各個(gè)節(jié)點(diǎn)上的子文件的訪問,并進(jìn)行結(jié)果展示。
[0143]對應(yīng)圖3所示的數(shù)據(jù)文件處理裝置,數(shù)據(jù)探索模塊61包括檢索和收集單元31、分析單元32和確定單元33 ;
[OH4]數(shù)據(jù)拆分模塊62包括拆分單元34;
[0145]數(shù)據(jù)存儲模塊63包括存儲單元35;
[0146]數(shù)據(jù)訪問模塊64包括數(shù)據(jù)庫對接單元36、查詢單元37和Webservice訪問單元38。
[0147]圖7是基于圖6所示的數(shù)據(jù)文件處理裝置提供的數(shù)據(jù)文件處理方法流程示意圖。如圖7所示,在數(shù)據(jù)探索模塊61內(nèi)執(zhí)行以下步驟:
[0148]
[0149]S701、掃描原始數(shù)據(jù)文件。
[0150]S702、判斷是否定義了檢索字段,如果是,執(zhí)行步驟S703,如果否,執(zhí)行步驟S704。
[0151]S703、掃描原始數(shù)據(jù)文件根據(jù)檢索字段從原始數(shù)據(jù)文件中檢索并收集與檢索字段相同的特定關(guān)鍵值。
[0152]S704、定義檢索字段,返回執(zhí)行步驟S701或返回執(zhí)行步驟S703。
[0153]S704、對收集到的特定關(guān)鍵值進(jìn)行分析,計(jì)算所述原始數(shù)據(jù)文件的特定關(guān)鍵值的值域分布。
[0154]S705、根據(jù)所述特定關(guān)鍵值的值域分布,結(jié)合HDFS集群中的節(jié)點(diǎn)數(shù)以及各節(jié)點(diǎn)存儲資源使用情況確定所述原始數(shù)據(jù)文件的存儲策略和拆分策略,然后轉(zhuǎn)到數(shù)據(jù)拆分模塊。
[0155]在數(shù)據(jù)拆分模塊內(nèi)執(zhí)行以下步驟:
[0156]S706、根據(jù)拆分策略確定各個(gè)子文件的特定關(guān)鍵值的值域分布上下限。
[0157]S707、在所述原始數(shù)據(jù)文件中定位各個(gè)子文件的特定關(guān)鍵值的值域分布上下限。
[0158]S708、根據(jù)各個(gè)子文件的特定關(guān)鍵值值域分布上下限,對所述原始數(shù)據(jù)文件進(jìn)行拆分,提取出各個(gè)子文件,然后轉(zhuǎn)至數(shù)據(jù)存儲模塊。
[0159 ]在數(shù)據(jù)存儲模塊內(nèi)執(zhí)行以下步驟:
[0160]S709、根據(jù)所述存儲策略將各個(gè)子文件分別存儲在相應(yīng)節(jié)點(diǎn)上。
[0161]為了實(shí)現(xiàn)對數(shù)據(jù)文件的訪問,數(shù)據(jù)訪問模塊還可以執(zhí)行以下步驟:
[0162]S710、判斷原始數(shù)據(jù)文件是否需要與關(guān)系型數(shù)據(jù)庫對接,如果是,執(zhí)行步驟S711,如果否,結(jié)束運(yùn)行。
[0163]S711、制定開發(fā)對接元數(shù)據(jù),通過外部表的方式利用多線程將存儲在HDFS集群節(jié)點(diǎn)中的各個(gè)子文件并發(fā)導(dǎo)入數(shù)據(jù)庫。
[0164]S712、判斷前臺應(yīng)用是否查詢統(tǒng)計(jì)原始數(shù)據(jù)文件如果是,執(zhí)行步驟S713,如果否,結(jié)束運(yùn)行。
[ΟΙ65] S713、制定開發(fā)查詢元數(shù)據(jù),通過類sql (結(jié)構(gòu)化查詢語言,Structured QueryLanguage)方法實(shí)現(xiàn)前臺應(yīng)用對存儲在各個(gè)節(jié)點(diǎn)上的子文件的查詢:
[0166] S714、判斷webservice是否需要訪問原始數(shù)據(jù)文件,如果是,執(zhí)行步驟Slll,如果否,結(jié)束運(yùn)行。
[0167]S715、制定開發(fā)Webservice元數(shù)據(jù),通過類sql方法實(shí)現(xiàn)Webservice對存儲在各個(gè)節(jié)點(diǎn)上的子文件的訪問,并進(jìn)行結(jié)果展示。
[0168]以上為本發(fā)明的優(yōu)選實(shí)施例。需要說明的是,本領(lǐng)域技術(shù)人員在不脫離本發(fā)明構(gòu)思的前提下,對上述實(shí)施例做出的任何改進(jìn)和潤飾,僅在本發(fā)明的保護(hù)范圍之列。
【主權(quán)項(xiàng)】
1.一種數(shù)據(jù)文件處理方法,其特征在于,包括: 根據(jù)定義的檢索字段從原始數(shù)據(jù)文件中檢索并收集與所述檢索字段相同的特定關(guān)鍵值; 對收集到的特定關(guān)鍵值進(jìn)行分析,計(jì)算所述原始數(shù)據(jù)文件的特定關(guān)鍵值的值域分布; 根據(jù)所述特定關(guān)鍵值的值域分布,結(jié)合HDFS集群中的節(jié)點(diǎn)數(shù)以及各節(jié)點(diǎn)存儲資源使用情況確定所述原始數(shù)據(jù)文件的存儲策略和拆分策略; 根據(jù)所述拆分策略將所述原始數(shù)據(jù)文件拆分為多個(gè)子文件; 根據(jù)所述存儲策略將各個(gè)子文件分別存儲在相應(yīng)節(jié)點(diǎn)上。2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述根據(jù)所述拆分策略將所述原始數(shù)據(jù)文件拆分為多個(gè)子文件,具體包括: 根據(jù)拆分策略確定各個(gè)子文件的特定關(guān)鍵值的值域上下限; 在所述原始數(shù)據(jù)文件中定位各個(gè)子文件的特定關(guān)鍵值的值域上下限; 根據(jù)各個(gè)子文件的特定關(guān)鍵值的值域上下限,對所述原始數(shù)據(jù)文件進(jìn)行拆分,提取出各個(gè)子文件。3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述對收集到的特定關(guān)鍵值進(jìn)行分析,計(jì)算所述原始數(shù)據(jù)文件的特定關(guān)鍵值的值域分布,具體包括: 基于Spark的流處理技術(shù)將收集到的特定關(guān)鍵值抽取到內(nèi)存中; 對抽取到內(nèi)存中的特定關(guān)鍵值進(jìn)行并發(fā)快速分析,計(jì)算所述原始數(shù)據(jù)文件中的特定關(guān)鍵值的值域分布。4.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述根據(jù)各個(gè)子文件的特定關(guān)鍵值的值域上下限,對所述原始數(shù)據(jù)文件進(jìn)行拆分,提取出各個(gè)子文件,具體包括: 利用Spark管道處理技術(shù),根據(jù)各個(gè)子文件的特定關(guān)鍵值的值域上下限,對所述原始數(shù)據(jù)文件進(jìn)行拆分,提取出各個(gè)子文件。5.根據(jù)權(quán)利要求1-4任一項(xiàng)所述的方法,其特征在于,所述根據(jù)所述存儲策略將各個(gè)子文件分別存儲在相應(yīng)節(jié)點(diǎn)上后,還包括: 當(dāng)原始數(shù)據(jù)文件需要與關(guān)系型數(shù)據(jù)庫對接時(shí),制定開發(fā)對接元數(shù)據(jù),通過外部表的方式利用多線程將存儲在HDFS集群節(jié)點(diǎn)中的各個(gè)子文件并發(fā)導(dǎo)入數(shù)據(jù)庫。6.根據(jù)權(quán)利要求1-4任一項(xiàng)所述的方法,其特征在于,所述根據(jù)所述存儲策略將各個(gè)子文件分別存儲在相應(yīng)節(jié)點(diǎn)上后,還包括: 當(dāng)前臺應(yīng)用需要查詢原始數(shù)據(jù)文件時(shí),制定開發(fā)查詢元數(shù)據(jù),通過類sql方法實(shí)現(xiàn)前臺應(yīng)用對存儲在各個(gè)節(jié)點(diǎn)上的子文件的查詢。7.根據(jù)權(quán)利要求1-4任一項(xiàng)所述的方法,其特征在于,所述根據(jù)所述存儲策略將各個(gè)子文件分別存儲在相應(yīng)節(jié)點(diǎn)上后,還包括: 當(dāng)Webservice需要對原始數(shù)據(jù)文件進(jìn)行訪問時(shí),制定開發(fā)Webservice元數(shù)據(jù),通過類sql方法實(shí)現(xiàn)Webservice對存儲在各個(gè)節(jié)點(diǎn)上的子文件的訪問,并進(jìn)行結(jié)果展示。8.根據(jù)權(quán)利要求1-4任一項(xiàng)所述的方法,其特征在于,所述原始數(shù)據(jù)文件為壓縮格式的數(shù)據(jù)文件或非壓縮格式的數(shù)據(jù)文件。9.一種數(shù)據(jù)文件處理裝置,其特征在于,包括: 檢索和收集單元,用于根據(jù)定義的檢索字段從原始數(shù)據(jù)文件中檢索并收集與所述檢索字段相同的特定關(guān)鍵值; 分析單元,用于對收集到的特定關(guān)鍵值進(jìn)行分析,計(jì)算所述原始數(shù)據(jù)文件的特定關(guān)鍵值的值域分布; 確定單元,用于根據(jù)所述特定關(guān)鍵值的值域分布,結(jié)合HDFS集群中的節(jié)點(diǎn)數(shù)以及各節(jié)點(diǎn)存儲資源使用情況確定所述原始數(shù)據(jù)文件的存儲策略和拆分策略; 拆分單元,用于根據(jù)所述拆分策略將所述原始數(shù)據(jù)文件拆分為多個(gè)子文件; 存儲單元,用于根據(jù)所述存儲策略將各個(gè)子文件分別存儲在相應(yīng)節(jié)點(diǎn)上。10.根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述拆分單元包括: 確定子單元,用于根據(jù)拆分策略確定各個(gè)子文件的特定關(guān)鍵值的值域上下限; 定位子單元,用于在所述原始數(shù)據(jù)文件中定位各個(gè)子文件的特定關(guān)鍵值的值域上下限; 提取子單元,用于根據(jù)各個(gè)子文件的特定關(guān)鍵值的值域上下限,對所述原始數(shù)據(jù)文件進(jìn)行拆分,提取出各個(gè)子文件。11.根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述分析單元包括: 抽取子單元,用于基于Spark的流處理技術(shù)將收集到的特定關(guān)鍵值抽取到內(nèi)存中; 計(jì)算子單元,用于對抽取到內(nèi)存中的特定關(guān)鍵值進(jìn)行并發(fā)快速分析,計(jì)算所述原始數(shù)據(jù)文件中的特定關(guān)鍵值的值域分布。12.根據(jù)權(quán)利要求10所述的裝置,其特征在于,所述提取子單元包括利用Spark管道處理技術(shù),根據(jù)各個(gè)子文件的特定關(guān)鍵值的值域上下限,對所述原始數(shù)據(jù)文件進(jìn)行拆分,提取出各個(gè)子文件的子單兀。13.根據(jù)權(quán)利要求9-12任一項(xiàng)所述的裝置,其特征在于,所述裝置還包括: 數(shù)據(jù)庫對接單元,用于當(dāng)原始數(shù)據(jù)文件需要與關(guān)系型數(shù)據(jù)庫對接時(shí),制定開發(fā)對接元數(shù)據(jù),通過外部表的方式利用多線程將存儲在HDFS集群節(jié)點(diǎn)中的各個(gè)子文件并發(fā)導(dǎo)入數(shù)據(jù)庫。14.根據(jù)權(quán)利要求9-12任一項(xiàng)所述的裝置,其特征在于,所述裝置還包括: 查詢單元,用于當(dāng)前臺應(yīng)用需要查詢原始數(shù)據(jù)文件時(shí),制定開發(fā)查詢元數(shù)據(jù),通過類sql方法實(shí)現(xiàn)前臺應(yīng)用對存儲在各個(gè)節(jié)點(diǎn)上的子文件的查詢。15.根據(jù)權(quán)利要求9-12任一項(xiàng)所述的裝置,其特征在于,所述裝置還包括: Webservice訪問單元,用于當(dāng)Webservice需要對原始數(shù)據(jù)文件進(jìn)行訪問時(shí),制定開發(fā)Webservice元數(shù)據(jù),通過類sql方法實(shí)現(xiàn)Webservice對存儲在各個(gè)節(jié)點(diǎn)上的子文件的訪問,并進(jìn)行結(jié)果展示。16.根據(jù)權(quán)利要求8-12任一項(xiàng)所述的裝置,其特征在于,所述原始數(shù)據(jù)文件為壓縮格式的數(shù)據(jù)文件或非壓縮格式的數(shù)據(jù)文件。
【文檔編號】G06F17/30GK105912609SQ201610211290
【公開日】2016年8月31日
【申請日】2016年4月6日
【發(fā)明人】楊聲鋼, 李曉軒, 和宏濤, 金鵬
【申請人】中國農(nóng)業(yè)銀行股份有限公司