一種實(shí)現(xiàn)HBase數(shù)據(jù)與Java域?qū)ο笥成涞姆椒ê脱b置制造方法
【專利摘要】本發(fā)明提供一種實(shí)現(xiàn)HBase數(shù)據(jù)與Java域?qū)ο笥成涞姆椒ê脱b置,有助于提高開發(fā)效率和簡化維護(hù)并且保障應(yīng)用程序代碼更新的準(zhǔn)確性。本發(fā)明的一種實(shí)現(xiàn)HBase數(shù)據(jù)與Java域?qū)ο笥成涞姆椒òǎ涸贘ava域?qū)ο笾刑砑幼⒔?,所述注解記錄的?nèi)容包括所述Java域?qū)ο髮?duì)應(yīng)的HBase表的名稱、所述Java域?qū)ο蟮拿總€(gè)屬性對(duì)應(yīng)的所述HBase表的列簇及其中的列的名稱、所述Java域?qū)ο笾械闹麈I生成策略;遍歷所述Java域?qū)ο蟮拿總€(gè)屬性,在遍歷到的屬性有注解的情況下,獲取該注解記錄的內(nèi)容,以及從所述Java域?qū)ο笾刑崛≡搶傩缘闹等缓筇钊胨鲎⒔庵杏涗浀脑搶傩詫?duì)應(yīng)的HBase表的列簇中的列中。
【專利說明】—種實(shí)現(xiàn)HBase數(shù)據(jù)與Java域?qū)ο笥成涞姆椒ê脱b置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)【技術(shù)領(lǐng)域】,特別地涉及一種實(shí)現(xiàn)HBase數(shù)據(jù)與Java域?qū)ο笥成涞姆椒ê脱b置。
【背景技術(shù)】
[0002]在大數(shù)據(jù)積累的今天,很多應(yīng)用在進(jìn)行相關(guān)實(shí)現(xiàn)的過程中,都會(huì)用到HBase來存儲(chǔ)大量的數(shù)據(jù),因?yàn)槠淠芴峁┫嚓P(guān)高效的實(shí)時(shí)查詢需求。但HBase作為NoSQL,本身是一種無結(jié)構(gòu)化的,且自身提供的API并不包含將其數(shù)據(jù)翻譯為Java域?qū)ο?,而需要使用者通過硬編碼的方式將其進(jìn)行映射,這樣對(duì)于不同的表,需要寫大量的重復(fù)代碼來完成不同表的查詢等需求。
[0003]同時(shí),隨著應(yīng)用的不斷演進(jìn),HBase的數(shù)據(jù)列或者簇很可能進(jìn)行添加、刪除,對(duì)于這種變化,就需要程序員在程序中重新進(jìn)行相應(yīng)的編碼處理。例如用來記錄表1中的內(nèi)容的HBase 表,表為 person,列族為 info,其下列為 info:name, info:age, info:address,應(yīng)用程序需要讀取表中的每行記錄,并將每一行記錄轉(zhuǎn)換為Java域?qū)ο?Person, java)?;蛘咴诓迦氲臅r(shí)候,應(yīng)用程序需將每一個(gè)Java域?qū)ο?Person, java)轉(zhuǎn)化為HBase的Put對(duì)象。
[0004]表1
[0005]
【權(quán)利要求】
1.一種實(shí)現(xiàn)HBase數(shù)據(jù)與Java域?qū)ο笥成涞姆椒?其特征在于,包括: 在Java域?qū)ο笾刑砑幼⒔?所述注解記錄的內(nèi)容包括所述Java域?qū)ο髮?duì)應(yīng)的HBase表的名稱、所述Java域?qū)ο蟮拿總€(gè)屬性對(duì)應(yīng)的所述HBase表的列簇及其中的列的名稱、所述Java域?qū)ο笾械闹麈I生成策略; 遍歷所述Java域?qū)ο蟮拿總€(gè)屬性,在遍歷到的屬性有注解的情況下,獲取該注解記錄的內(nèi)容,以及從所述Java域?qū)ο笾刑崛≡搶傩缘闹等缓筇钊胨鲎⒔庵杏涗浀脑搶傩詫?duì)應(yīng)的HBase表的列簇中的列中。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述獲取該注解記錄的內(nèi)容的步驟包括:使用Java反射機(jī)制得到該注解記錄的內(nèi)容。
3.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述Java域?qū)ο髮?duì)應(yīng)的HBase表的名稱記錄在所述Java域?qū)ο蟮念愵^的注解中,所述Java域?qū)ο蟮拿總€(gè)屬性對(duì)應(yīng)的所述HBase表的列簇及其中的列的名稱分別記錄在各個(gè)屬性的注解中。
4.一種實(shí)現(xiàn)HBase數(shù)據(jù)與Java域?qū)ο笥成涞姆椒?其特征在于,包括: 在Java域?qū)ο笾刑砑幼⒔?所述注解記錄的內(nèi)容包括所述Java域?qū)ο髮?duì)應(yīng)的HBase表的名稱、所述Java域?qū)ο蟮拿總€(gè)屬性對(duì)應(yīng)的所述HBase表的列簇及其中的列的名稱、所述Java域?qū)ο笾械闹麈I生成策略; 遍歷所述Java域?qū)ο蟮拿總€(gè)屬性,在遍歷到的屬性有注解的情況下,獲取該注解記錄的內(nèi)容,以及從HBase表的列中提取數(shù)據(jù)然后保存到所述注解中記錄的該列對(duì)應(yīng)的所述Java域?qū)ο蟮膶傩灾小?br>
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述獲取該注解記錄的內(nèi)容的步驟包括:使用Java反射機(jī)制得到該注解記錄的內(nèi)容。
6.根據(jù)權(quán)利要求4或5所述的方法,其特征在于,所述Java域?qū)ο髮?duì)應(yīng)的HBase表的名稱記錄在所述Java域?qū)ο蟮念愵^的注解中,所述Java域?qū)ο蟮拿總€(gè)屬性對(duì)應(yīng)的所述HBase表的列簇及其中的列的名稱分別記錄在各個(gè)屬性的注解中。
7.一種實(shí)現(xiàn)HBase數(shù)據(jù)與Java域?qū)ο笥成涞难b置,其特征在于,包括: 保存模塊,用于保存Java域?qū)ο?該Java域?qū)ο笾刑砑佑凶⒔?所述注解記錄的內(nèi)容包括所述Java域?qū)ο髮?duì)應(yīng)的HBase表的名稱、所述Java域?qū)ο蟮拿總€(gè)屬性對(duì)應(yīng)的所述HBase表的列簇及其中的列的名稱、所述Java域?qū)ο笾械闹麈I生成策略; 注解獲取模塊,用于遍歷所述Java域?qū)ο蟮拿總€(gè)屬性,在遍歷到的屬性有注解的情況下,獲取該注解記錄的內(nèi)容; HBase表寫入模塊,用于從所述Java域?qū)ο笾刑崛∷鲎⒔猥@取模塊遍歷到的屬性的值然后填入該屬性的注解中記錄的該屬性對(duì)應(yīng)的HBase表的列簇中的列中。
8.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述注解獲取模塊還用于使用Java反射機(jī)制得到注解記錄的內(nèi)容。
9.一種實(shí)現(xiàn)HBase數(shù)據(jù)與Java域?qū)ο笥成涞难b置,其特征在于,包括: 存儲(chǔ)模塊,用于存儲(chǔ)Java域?qū)ο?該Java域?qū)ο笾刑砑佑凶⒔?所述注解記錄的內(nèi)容包括所述Java域?qū)ο髮?duì)應(yīng)的HBase表的名稱、所述Java域?qū)ο蟮拿總€(gè)屬性對(duì)應(yīng)的所述HBase表的列簇及其中的列的名稱、所述Java域?qū)ο笾械闹麈I生成策略; 獲取模塊,用于遍歷所述Java域?qū)ο蟮拿總€(gè)屬性,在遍歷到的屬性有注解的情況下,獲取該注解記錄的內(nèi)容; 屬性值寫入模塊,用于從HBase表的列中提取數(shù)據(jù)然后保存到所述注解中記錄的該列對(duì)應(yīng)的所述Java域?qū)ο蟮膶傩灾小?br>
10.根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述獲取模塊還用于使用Java反射機(jī)制得到注解記錄的內(nèi)容。
【文檔編號(hào)】G06F17/30GK104182484SQ201410386910
【公開日】2014年12月3日 申請(qǐng)日期:2014年8月7日 優(yōu)先權(quán)日:2014年8月7日
【發(fā)明者】王文豹 申請(qǐng)人:北京京東尚科信息技術(shù)有限公司, 北京京東世紀(jì)貿(mào)易有限公司