欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

實(shí)現(xiàn)數(shù)據(jù)查詢的方法和系統(tǒng)的制作方法_2

文檔序號(hào):9304569閱讀:來(lái)源:國(guó)知局
所在的桶,再對(duì)桶中的數(shù)據(jù)進(jìn)行查找即可得到所需要的數(shù)據(jù),而不需要對(duì)所有存儲(chǔ)的數(shù)據(jù)進(jìn)行逐一查找,有效地提高查詢效率,也減少了內(nèi)存的需求,減低了數(shù)據(jù)在網(wǎng)絡(luò)間的傳輸。
[0063]步驟S150,讀取定位得到的桶中的列所對(duì)應(yīng)的數(shù)據(jù)。
[0064]本實(shí)施例中,根據(jù)查詢請(qǐng)求中的查詢字段在定位得到的桶中進(jìn)行數(shù)據(jù)查找,以得到與該查詢字段相關(guān)的列,進(jìn)而讀取該列所對(duì)應(yīng)的數(shù)據(jù),該數(shù)據(jù)即為當(dāng)前進(jìn)行數(shù)據(jù)查詢的查詢結(jié)果。
[0065]進(jìn)一步的,所得到的與查詢請(qǐng)求中的查詢字段相關(guān)的數(shù)據(jù)大都較多,因此,將將讀取的數(shù)據(jù)合并成一個(gè)文件,并提示用戶當(dāng)前所進(jìn)行的數(shù)據(jù)查找執(zhí)行成功,在數(shù)據(jù)的查詢界面中提供查詢結(jié)果導(dǎo)出鏈接,以方便用戶導(dǎo)出包含了大量查詢結(jié)果的文件。
[0066]進(jìn)一步的,還將由讀取的數(shù)據(jù)合并得到的文件保存至壓縮文件中,以節(jié)省存儲(chǔ)空間,在優(yōu)選的實(shí)施例中,該壓縮文件為cvs(Comma Separated Value)壓縮文件。
[0067]如圖2所示,在一個(gè)實(shí)施例中,上述步驟S130的具體過(guò)程為:
[0068]步驟S131,轉(zhuǎn)換查詢請(qǐng)求為MapReduce任務(wù)。
[0069]本實(shí)施例中,查詢請(qǐng)求為HQL語(yǔ)句,獲取得查詢請(qǐng)求之后,在底層將其轉(zhuǎn)換為相應(yīng)的MapReduce任務(wù),進(jìn)而對(duì)分布于各個(gè)節(jié)點(diǎn)的數(shù)據(jù)進(jìn)行并行處理,將有效提高處理效率。
[0070]步驟S133,獲取元數(shù)據(jù),根據(jù)元數(shù)據(jù)得到與MapReduce任務(wù)相關(guān)的基于Hive的數(shù)據(jù)文件分區(qū)。
[0071]本實(shí)施例中,元數(shù)據(jù)包括了數(shù)據(jù)所在數(shù)據(jù)文件的文件名稱,該文件名稱將指示了數(shù)據(jù)文件中數(shù)據(jù)所在的分區(qū)等信息,因此,根據(jù)元數(shù)據(jù)即可得到與MapReduce任務(wù)相關(guān)的基于Hive的數(shù)據(jù)文件所在的待查詢的分區(qū),進(jìn)而實(shí)現(xiàn)數(shù)據(jù)的粗略查找。
[0072]步驟S135,根據(jù)定義的數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)對(duì)MapReduce任務(wù)中的查詢字段進(jìn)行計(jì)算以得到相應(yīng)的信息摘要值,并通過(guò)信息摘要值和預(yù)設(shè)的桶數(shù)量的取模得到與查詢字段對(duì)應(yīng)的數(shù)據(jù)存儲(chǔ)位置,該數(shù)據(jù)存儲(chǔ)位置用于指示查詢字段對(duì)應(yīng)的桶和桶中的列。
[0073]本實(shí)施例中,提取MapReduce任務(wù)中的查詢字段,以對(duì)該查詢字段進(jìn)行信息摘要值的計(jì)算,例如,可通過(guò)Hash(哈希)算法實(shí)現(xiàn),以得到相應(yīng)的信息摘要值。所提取的查詢字段將是根據(jù)進(jìn)行數(shù)據(jù)存儲(chǔ)時(shí)定義的數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)指定的,因此,并不需要提取所有的查詢字段進(jìn)行信息摘要值的計(jì)算。具體的,在進(jìn)行數(shù)據(jù)存儲(chǔ)時(shí)將根據(jù)定義的字段進(jìn)行指定,例如,將通過(guò)語(yǔ)句 “create table ip_login (' uid' string, ' ip' string, ' time' int)PARTIT1NED BY(tm int) CLUSTERED BY ('uid') SORTED BY ('uid') INT02BUCKETS STORED ASORC”實(shí)現(xiàn)數(shù)據(jù)的存儲(chǔ),其中,需要進(jìn)行信息摘要值計(jì)算的查詢字段將由CLUSTERED BY指定。
[0074]計(jì)算得到相應(yīng)的信息摘要值之后,將通過(guò)信息摘要值和預(yù)設(shè)的桶數(shù)量進(jìn)行數(shù)據(jù)的分桶,進(jìn)而得到與該查詢字段相關(guān)的數(shù)據(jù)所在的桶。具體的,將用計(jì)算所得到的信息摘要值和預(yù)設(shè)的桶數(shù)量取模來(lái)進(jìn)行數(shù)據(jù)存儲(chǔ)位置的切分,以精確得到與查詢字段相關(guān)的數(shù)據(jù)所對(duì)應(yīng)的數(shù)據(jù)存儲(chǔ)位置,即存儲(chǔ)了與查詢字段相關(guān)的數(shù)據(jù)的桶。
[0075]例如,如上所述列舉的語(yǔ)句中,由CLUSTERED BY指定的需要進(jìn)行信息摘要值計(jì)算的查詢字段為uid字段,此時(shí),將通過(guò)uid字段計(jì)算信息摘要值,然后通過(guò)該值和桶數(shù)量,即“2BUCKETS”中的“2”取模得到對(duì)應(yīng)的數(shù)據(jù)存儲(chǔ)位置。
[0076]此時(shí),將在存儲(chǔ)了與查詢字段相關(guān)的數(shù)據(jù)的桶所限定的區(qū)域進(jìn)行數(shù)據(jù)的查詢,以查找得到存儲(chǔ)了與查詢字段相關(guān)的數(shù)據(jù)的列。
[0077]通過(guò)如上所述的數(shù)據(jù)查詢,將不需要對(duì)所有數(shù)據(jù)文件進(jìn)行數(shù)據(jù)的查詢即可實(shí)現(xiàn)數(shù)據(jù)的精細(xì)查詢,進(jìn)而使得數(shù)據(jù)的查詢可隨意應(yīng)用于海量數(shù)據(jù),在提高了查詢效率和查詢速度的同時(shí)也提高了查詢的精確度。
[0078]在一個(gè)實(shí)施例中,上述步驟S150的具體過(guò)程為:根據(jù)查詢字段對(duì)應(yīng)的桶中的列進(jìn)行數(shù)據(jù)加載,并對(duì)加載的數(shù)據(jù)進(jìn)行處理。
[0079]本實(shí)施例中,加載記錄于查詢字段對(duì)應(yīng)的桶中的列的數(shù)據(jù),并通過(guò)加載的數(shù)據(jù)進(jìn)行適當(dāng)處理,以便于向用戶提供相應(yīng)的查詢結(jié)果。具體的,對(duì)加載的數(shù)據(jù)所進(jìn)行的處理可以是將加載的數(shù)據(jù)可逐一顯示于數(shù)據(jù)的查詢界面中;也可合并為一個(gè)文件,并按照預(yù)設(shè)的路徑進(jìn)行存儲(chǔ),進(jìn)而在數(shù)據(jù)的查詢界面中提供查詢結(jié)果導(dǎo)出鏈接,即該文件的導(dǎo)出路徑,用戶可通過(guò)導(dǎo)出文件的方式進(jìn)行查詢結(jié)果的查看;也可以是對(duì)該列進(jìn)行相應(yīng)的計(jì)算,例如,與其它數(shù)據(jù)文件相關(guān)聯(lián)、列值去重等。
[0080]如圖3所示,在一個(gè)實(shí)施例中,上述步驟S130之前,該方法還包括如下步驟:
[0081]步驟S210,接收輸入的原始數(shù)據(jù),并將原始數(shù)據(jù)存儲(chǔ)為第一數(shù)據(jù)表結(jié)構(gòu)。
[0082]本實(shí)施例中,第一數(shù)據(jù)表結(jié)構(gòu)定義了原始數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)。將接收不同數(shù)據(jù)源的原始數(shù)據(jù)輸入,此時(shí),將原始數(shù)據(jù)按照第一數(shù)據(jù)表結(jié)構(gòu)直接存儲(chǔ)至HDFS的相應(yīng)目錄中。
[0083]具體的,原始數(shù)據(jù)的加載將不會(huì)對(duì)該原始數(shù)據(jù)進(jìn)行任何的校驗(yàn)、壓縮等優(yōu)化操作,而只是按照第一數(shù)據(jù)表結(jié)構(gòu)將原始數(shù)據(jù)直接上傳到HDFS的相應(yīng)目錄中。
[0084]這一第一數(shù)據(jù)表結(jié)構(gòu)所對(duì)應(yīng)的數(shù)據(jù)文件也將是數(shù)據(jù)表的形式,并且也將只保存本次加載的原始數(shù)據(jù),再次進(jìn)行原始數(shù)據(jù)的加載時(shí)將直接覆蓋原有的原始數(shù)據(jù)。
[0085]進(jìn)一步的,該第一數(shù)據(jù)表結(jié)構(gòu)所對(duì)應(yīng)的數(shù)據(jù)文件中,其文件名稱將通過(guò)配置文件進(jìn)行配置,例如,可以是原始數(shù)據(jù)所對(duì)應(yīng)的實(shí)際文件名稱附加上相應(yīng)的標(biāo)識(shí),例如,user_gambling_text,其中,user_gambling即為原始數(shù)據(jù)所對(duì)應(yīng)的實(shí)際文件名稱,text為附加的標(biāo)識(shí)。
[0086]步驟S230,對(duì)存儲(chǔ)為第一數(shù)據(jù)表結(jié)構(gòu)的原始數(shù)據(jù)進(jìn)行優(yōu)化處理,以將優(yōu)化處理所得到的數(shù)據(jù)存入配置文件所配置的基于Hive的數(shù)據(jù)文件分區(qū)中。
[0087]本實(shí)施例中,將對(duì)存儲(chǔ)為第一數(shù)據(jù)表結(jié)構(gòu)的原始數(shù)據(jù)進(jìn)行分區(qū)、分桶、排序等優(yōu)化處理,以優(yōu)化數(shù)據(jù)的存儲(chǔ)方式,進(jìn)而將優(yōu)化處理所得到的數(shù)據(jù)存入基于Hive的數(shù)據(jù)文件分區(qū)中,使當(dāng)期數(shù)據(jù)與歷史數(shù)據(jù)相分離,大為提升存儲(chǔ)和處理效率。
[0088]進(jìn)一步的,通過(guò)配置文件為優(yōu)化處理所得到的數(shù)據(jù)配置相應(yīng)的數(shù)據(jù)文件,以得到相應(yīng)的元數(shù)據(jù),進(jìn)而便于進(jìn)行數(shù)據(jù)的存入和查詢。
[0089]在一個(gè)實(shí)施例中,上述步驟S210的具體過(guò)程為:
[0090]通過(guò)配置文件將原始數(shù)據(jù)存入包含分區(qū)信息的數(shù)據(jù)文件中,其中,被存入該數(shù)據(jù)文件的原始數(shù)據(jù)中每一列原始數(shù)據(jù)以JSON格式存儲(chǔ)。
[0091]本實(shí)施例中,通過(guò)配置文件為當(dāng)前所進(jìn)行的原始數(shù)據(jù)存入配置相應(yīng)的元數(shù)據(jù),即加載為第一數(shù)據(jù)表結(jié)構(gòu)的原始數(shù)據(jù)配置數(shù)據(jù)文件所對(duì)應(yīng)的文件名,根據(jù)配置文件的定義,此時(shí)數(shù)據(jù)文件的文件名即為原始數(shù)據(jù)所對(duì)應(yīng)的實(shí)際文件名稱附加上相應(yīng)的標(biāo)識(shí),包含了相應(yīng)的分區(qū)信息,根據(jù)文件名即可獲知原始數(shù)據(jù)所存儲(chǔ)的數(shù)據(jù)文件的分區(qū)。
[0092]進(jìn)一步的,存儲(chǔ)數(shù)據(jù)文件的原始數(shù)據(jù)將以列為單位實(shí)現(xiàn)原始數(shù)據(jù)的存入,即每一列原始數(shù)據(jù)都將以JSON格式進(jìn)行存儲(chǔ),。原始數(shù)據(jù)中每一行均包含了多個(gè)列,因此,在將原始數(shù)據(jù)按照第一數(shù)據(jù)表結(jié)構(gòu)進(jìn)行存儲(chǔ)時(shí),將提取每一列所對(duì)應(yīng)的原始數(shù)據(jù)按照J(rèn)SON格式進(jìn)行存儲(chǔ),并將每一列原始數(shù)據(jù)之間以字符或者其它形式分隔開(kāi)來(lái),例如或者tab鍵,以便于在后續(xù)的存儲(chǔ)過(guò)程中得以按照列為單位進(jìn)行存儲(chǔ)。如圖4所示,在一個(gè)實(shí)施例中,上述步驟S230的具體過(guò)程為:
[0093]步驟S231,逐一提取存儲(chǔ)為第一數(shù)據(jù)表結(jié)構(gòu)的原始數(shù)據(jù)中的每一行JSON格式的數(shù)據(jù)。
[0094]步驟S232,通過(guò)包含分區(qū)信息的數(shù)據(jù)文件得到對(duì)第一數(shù)據(jù)表結(jié)構(gòu)的原始數(shù)據(jù)進(jìn)行存儲(chǔ)的基于Hive的數(shù)據(jù)文件的分區(qū)位置。
[0095]本實(shí)施例中,通過(guò)配置文件中定義的規(guī)則為第一數(shù)據(jù)表結(jié)構(gòu)的原始數(shù)據(jù)配置相應(yīng)的元數(shù)據(jù),即用于指示存入被加載為第一數(shù)據(jù)表結(jié)構(gòu)的原始數(shù)據(jù)的數(shù)據(jù)文件所對(duì)應(yīng)的文件名,由于數(shù)據(jù)文件即為數(shù)據(jù)表,因此,該文件名將包括了原始數(shù)據(jù)即將存入的數(shù)據(jù)表名和原始數(shù)據(jù)在數(shù)據(jù)表中被存入的分區(qū)信息。例如,“user_gambling-plat = 604, tm =20130930-20131001-0” 這一文件名中,user_gambling 為數(shù)據(jù)表名,plat = 604, tm =20130930則表示原始數(shù)據(jù)將被存儲(chǔ)于分區(qū)plat = 604下的子分區(qū)tm = 20130930中。
[0096]進(jìn)一步的,通過(guò)文件名得到當(dāng)前所進(jìn)行的原始數(shù)據(jù)的存儲(chǔ)的分區(qū)信息,即“plat”和“tm”這兩個(gè)字段所對(duì)應(yīng)的數(shù)值。例如,可根據(jù)該原始數(shù)據(jù)的實(shí)際文件名取第三個(gè)索引和第一個(gè)索引,根據(jù)第三個(gè)索引得到字段“plat”所對(duì)應(yīng)的數(shù)值,根據(jù)第一個(gè)索引得到字段“tm”所對(duì)應(yīng)的數(shù)值,進(jìn)而形成相關(guān)的分區(qū)信息。
[0097]步驟S233,對(duì)提取的原始數(shù)據(jù)進(jìn)行計(jì)算以得到相應(yīng)的信息摘要值,并通過(guò)信息摘要值和預(yù)設(shè)的桶數(shù)量的取模得到在數(shù)據(jù)文件的分區(qū)中原始數(shù)據(jù)的數(shù)據(jù)存儲(chǔ)位置。
[0098]本實(shí)施例中,如上所述,該數(shù)據(jù)存儲(chǔ)位置將指示了即將存入的數(shù)據(jù)文件的分區(qū)和桶,進(jìn)而實(shí)現(xiàn)精確存儲(chǔ)。
[0099]步驟S234,將提取的數(shù)據(jù)進(jìn)行壓縮處理,并在壓縮處理后按照數(shù)據(jù)存儲(chǔ)位置進(jìn)行存儲(chǔ)。
[0100]本實(shí)施例中,獲取這一提取的數(shù)據(jù),對(duì)其進(jìn)行壓縮處理,以節(jié)省存儲(chǔ)空間,進(jìn)而在完成壓縮處理后按照得到的數(shù)據(jù)存儲(chǔ)位置進(jìn)行存入數(shù)據(jù)文件中。
[0101]進(jìn)一步的,用于實(shí)現(xiàn)數(shù)據(jù)優(yōu)化存入的數(shù)據(jù)文件為列式存儲(chǔ)文件,將按照每一列中原始數(shù)據(jù)的類型選取最優(yōu)的壓縮格式進(jìn)行
當(dāng)前第2頁(yè)1 2 3 4 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
陈巴尔虎旗| 化德县| 英山县| 阿荣旗| 徐水县| 凤阳县| 梁平县| 阿坝县| 常州市| 明溪县| 磴口县| 云安县| 东阳市| 鞍山市| 称多县| 泗水县| 凭祥市| 柏乡县| 金门县| 西平县| 萨迦县| 邮箱| 常州市| 安福县| 安乡县| 麻栗坡县| 淮北市| 扶沟县| 社会| 汾阳市| 南城县| 江永县| 乐东| 东台市| 比如县| 彭水| 荔浦县| 黄平县| 浏阳市| 昆山市| 米林县|