本發(fā)明屬于數(shù)據(jù)存儲(chǔ)領(lǐng)域,尤其涉及一種基于Hbase數(shù)據(jù)庫(kù)的數(shù)據(jù)寫入方法及裝置。
背景技術(shù):
目前云存儲(chǔ)系統(tǒng)多采取分布式存儲(chǔ)的方法,將數(shù)據(jù)分散存儲(chǔ)在多臺(tái)獨(dú)立的設(shè)備上,一方面完善了數(shù)據(jù)庫(kù)的性能,提高了數(shù)據(jù)的讀取效率;另一方面由于分布式存儲(chǔ)結(jié)構(gòu),在有存儲(chǔ)設(shè)備故障發(fā)生時(shí),只會(huì)影響局部數(shù)據(jù)的存取,而不會(huì)使整個(gè)數(shù)據(jù)庫(kù)癱瘓,進(jìn)而增加了大數(shù)據(jù)的安全性和可靠性。Hadoop數(shù)據(jù)庫(kù)(HBase,Hadoop Database)是一種分布式存儲(chǔ)系統(tǒng)。雖然HBase數(shù)據(jù)庫(kù)可以避免在存儲(chǔ)設(shè)備發(fā)送故障時(shí),不會(huì)影響數(shù)據(jù)庫(kù)中全部數(shù)據(jù)的存取,但是無(wú)法避免在數(shù)據(jù)寫入過程中產(chǎn)生故障,進(jìn)而導(dǎo)致無(wú)法通過索引查詢到目標(biāo)數(shù)據(jù)。
現(xiàn)有技術(shù)中,預(yù)寫式日志W(wǎng)AL(Write Ahead Logging)是確保數(shù)據(jù)完整性的標(biāo)準(zhǔn)方法。在數(shù)據(jù)庫(kù)崩潰的情況下,通過WAL預(yù)先存儲(chǔ)的日志來(lái)恢復(fù)數(shù)據(jù)庫(kù)。預(yù)先存儲(chǔ)的日志需要記錄每一次的存儲(chǔ)過程,故日志會(huì)占用系統(tǒng)大量存儲(chǔ)資源,同時(shí)占用系統(tǒng)的I/O資源,一旦存儲(chǔ)的數(shù)據(jù)量增多,必會(huì)降低數(shù)據(jù)存儲(chǔ)的效率。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供一種基于Hbase數(shù)據(jù)庫(kù)的數(shù)據(jù)寫入方法及裝置,旨在解決因現(xiàn)有技術(shù)中預(yù)先存儲(chǔ)的日志占用系統(tǒng)大量資源而導(dǎo)致降低數(shù)據(jù)存儲(chǔ)效率的問題。
本發(fā)明提供的一種基于Hbase數(shù)據(jù)庫(kù)的數(shù)據(jù)寫入方法,包括:從線程中獲取待寫入文件對(duì)應(yīng)的數(shù)據(jù)記錄、所述數(shù)據(jù)記錄對(duì)應(yīng)的行主鍵值以及所述線程的識(shí)別碼,并生成包含有所述數(shù)據(jù)記錄與所述行主鍵值之間的對(duì)應(yīng)關(guān)系的行主鍵列表,同時(shí)將所述獲取的線程的識(shí)別碼和所述生成的行主鍵列表作為基準(zhǔn)數(shù)據(jù);將所述獲取的數(shù)據(jù)記錄、所述獲取的數(shù)據(jù)記錄對(duì)應(yīng)的行主鍵值、所述獲取的線程的識(shí)別碼和所述生成的行主鍵列表寫入數(shù)據(jù)庫(kù)中的緩存內(nèi)存中;將所述緩存內(nèi)存中存儲(chǔ)的數(shù)據(jù)記錄、所述存儲(chǔ)的數(shù)據(jù)記錄對(duì)應(yīng)的行主鍵值、存儲(chǔ)的線程的識(shí)別碼和存儲(chǔ)的行主鍵列表寫入所述數(shù)據(jù)庫(kù)中的分布式文件系統(tǒng)中,并在寫入完成后,將存儲(chǔ)于所述緩存內(nèi)存中的線程的識(shí)別碼和行主鍵列表作為待比對(duì)數(shù)據(jù);將所述基準(zhǔn)數(shù)據(jù)與所述待比對(duì)數(shù)據(jù)進(jìn)行比對(duì),若比對(duì)結(jié)果為存在有數(shù)據(jù)記錄未寫入所述數(shù)據(jù)庫(kù)的分布式文件系統(tǒng)中,則重新將所述待寫入文件寫入所述數(shù)據(jù)庫(kù)中。
本發(fā)明提供的一種基于Hbase數(shù)據(jù)庫(kù)的數(shù)據(jù)寫入裝置,包括:獲取模塊,用于從線程中獲取待寫入文件對(duì)應(yīng)的數(shù)據(jù)記錄、所述數(shù)據(jù)記錄對(duì)應(yīng)的行主鍵值以及所述線程的識(shí)別碼,并生成包含有所述數(shù)據(jù)記錄與所述行主鍵值之間的對(duì)應(yīng)關(guān)系的行主鍵列表,同時(shí)將所述獲取的線程的識(shí)別碼和所述生成的行主鍵列表作為基準(zhǔn)數(shù)據(jù);處理模塊,用于將所述獲取的數(shù)據(jù)記錄、所述獲取的數(shù)據(jù)記錄對(duì)應(yīng)的行主鍵值、所述獲取的線程的識(shí)別碼和所述生成的行主鍵列表寫入數(shù)據(jù)庫(kù)中的緩存內(nèi)存中;所述處理模塊,還用于將所述緩存內(nèi)存中存儲(chǔ)的數(shù)據(jù)記錄、所述存儲(chǔ)的數(shù)據(jù)記錄對(duì)應(yīng)的行主鍵值、存儲(chǔ)的線程的識(shí)別碼和存儲(chǔ)的行主鍵列表寫入所述數(shù)據(jù)庫(kù)中的分布式文件系統(tǒng)中,并在寫入完成后,將存儲(chǔ)于所述緩存內(nèi)存中的線程的識(shí)別碼和行主鍵列表作為待比對(duì)數(shù)據(jù);所述處理模塊,還用于將所述基準(zhǔn)數(shù)據(jù)與所述待比對(duì)數(shù)據(jù)進(jìn)行比對(duì),若比對(duì)結(jié)果為存在有數(shù)據(jù)記錄未寫入所述數(shù)據(jù)庫(kù)的分布式文件系統(tǒng)中,則重新將所述待寫入文件寫入所述數(shù)據(jù)庫(kù)中。
本發(fā)明提供的基于Hbase數(shù)據(jù)庫(kù)的數(shù)據(jù)寫入方法及裝置,從線程中獲取待寫入文件對(duì)應(yīng)的數(shù)據(jù)記錄、該數(shù)據(jù)記錄對(duì)應(yīng)的行主鍵值以及該線程的識(shí)別碼,并生成包含有該數(shù)據(jù)記錄與該行主鍵值之間的對(duì)應(yīng)關(guān)系的行主鍵列表,同時(shí)將該獲取的線程的識(shí)別碼和該生成的行主鍵列表作為基準(zhǔn)數(shù)據(jù),將該獲取的數(shù)據(jù)記錄、該獲取的數(shù)據(jù)記錄對(duì)應(yīng)的行主鍵值、該獲取的線程的識(shí)別碼和該生成的行主鍵列表寫入數(shù)據(jù)庫(kù)中的緩存內(nèi)存中,將該緩存內(nèi)存中存儲(chǔ)的數(shù)據(jù)記錄、該存儲(chǔ)的數(shù)據(jù)記錄對(duì)應(yīng)的行主鍵值、存儲(chǔ)的線程的識(shí)別碼和存儲(chǔ)的行主鍵列表寫入該數(shù)據(jù)庫(kù)中的分布式文件系統(tǒng)中,并在寫入完成后,將存儲(chǔ)于該緩存內(nèi)存中的線程的識(shí)別碼和行主鍵列表作為待比對(duì)數(shù)據(jù),將該基準(zhǔn)數(shù)據(jù)與該待比對(duì)數(shù)據(jù)進(jìn)行比對(duì),若比對(duì)結(jié)果為存在有數(shù)據(jù)記錄未寫入該數(shù)據(jù)庫(kù)的分布式文件系統(tǒng)中,則重新將該待寫入文件寫入該數(shù)據(jù)庫(kù)中,這樣每次在寫入數(shù)據(jù)后,均通過比對(duì)確定數(shù)據(jù)是否全部寫入到數(shù)據(jù)庫(kù)中,進(jìn)而確保數(shù)據(jù)存儲(chǔ)的完整性,同時(shí)相比于以日志文件的方式記錄,本發(fā)明利用行主鍵列表來(lái)比對(duì),占用系統(tǒng)資源很小,進(jìn)而不會(huì)影響數(shù)據(jù)存儲(chǔ)效率。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例。
圖1是本發(fā)明第一實(shí)施例提供的基于Hbase數(shù)據(jù)庫(kù)的數(shù)據(jù)寫入方法的實(shí)現(xiàn)流程示意圖;
圖2是本發(fā)明第二實(shí)施例提供的基于Hbase數(shù)據(jù)庫(kù)的數(shù)據(jù)寫入方法的實(shí)現(xiàn)流程示意圖;
圖3是本發(fā)明第三實(shí)施例提供的基于Hbase數(shù)據(jù)庫(kù)的數(shù)據(jù)寫入裝置的結(jié)構(gòu)示意圖;
圖4是本發(fā)明第四實(shí)施例提供的基于Hbase數(shù)據(jù)庫(kù)的數(shù)據(jù)寫入裝置的結(jié)構(gòu)示意圖。
具體實(shí)施方式
為使得本發(fā)明的發(fā)明目的、特征、優(yōu)點(diǎn)能夠更加的明顯和易懂,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而非全部實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
請(qǐng)參閱圖1,圖1為本發(fā)明第一實(shí)施例提供基于Hbase數(shù)據(jù)庫(kù)的數(shù)據(jù)寫入方法的實(shí)現(xiàn)流程示意圖,可應(yīng)用于具有數(shù)據(jù)處理功能的終端中,如計(jì)算機(jī),圖1所示的基于Hbase數(shù)據(jù)庫(kù)的數(shù)據(jù)寫入方法,主要包括以下步驟:
S101、從線程中獲取待寫入文件對(duì)應(yīng)的數(shù)據(jù)記錄、該數(shù)據(jù)記錄對(duì)應(yīng)的行主鍵值以及該線程的識(shí)別碼,并生成包含有該數(shù)據(jù)記錄與該行主鍵值之間的對(duì)應(yīng)關(guān)系的行主鍵列表,同時(shí)將該獲取的線程的識(shí)別碼和該生成的行主鍵列表作為基準(zhǔn)數(shù)據(jù)。
Hbase數(shù)據(jù)庫(kù)包括多個(gè)線程(Threads),該多個(gè)線程用于分配和調(diào)度。一個(gè)線程均對(duì)應(yīng)一個(gè)線程的識(shí)別碼,即線程的身份標(biāo)識(shí)號(hào)(ID,identification)。在實(shí)際應(yīng)用中,一個(gè)待寫入文件可以分成多個(gè)數(shù)據(jù)記錄,一個(gè)待寫入文件中的大多數(shù)數(shù)據(jù)記錄會(huì)分配到一個(gè)線程中,但是也有分配到多個(gè)線程中的可能。一個(gè)數(shù)據(jù)記錄對(duì)應(yīng)一個(gè)行主鍵值(rowkey)。該行主鍵列表中包含多個(gè)該數(shù)據(jù)記錄與該行主鍵值之間的對(duì)應(yīng)關(guān)系,其中該行主鍵列表與獲取的線程的ID相對(duì)應(yīng)。
可選地,還可以將該行主鍵列表與該待寫入文件的相對(duì)應(yīng),并將該行主鍵列表與該待寫入文件的對(duì)應(yīng)關(guān)系進(jìn)行存儲(chǔ),并同時(shí)告知線程存儲(chǔ)該行主鍵列表與該待寫入文件的對(duì)應(yīng)關(guān)系。
S102、將該獲取的數(shù)據(jù)記錄、該獲取的數(shù)據(jù)記錄對(duì)應(yīng)的行主鍵值、該獲取的線程的識(shí)別碼和該生成的行主鍵列表寫入數(shù)據(jù)庫(kù)中的緩存內(nèi)存中。
Hbase數(shù)據(jù)庫(kù)的緩存內(nèi)存為MemStore,在實(shí)際應(yīng)用中,將該獲取的數(shù)據(jù)記錄、該獲取的數(shù)據(jù)記錄對(duì)應(yīng)的行主鍵值、該獲取的線程的識(shí)別碼和該生成的行主鍵列表寫入內(nèi)存MemStore中。
S103、將該緩存內(nèi)存中存儲(chǔ)的數(shù)據(jù)記錄、該存儲(chǔ)的數(shù)據(jù)記錄對(duì)應(yīng)的行主鍵值、存儲(chǔ)的線程的識(shí)別碼和存儲(chǔ)的行主鍵列表寫入該數(shù)據(jù)庫(kù)中的分布式文件系統(tǒng)中,并在寫入完成后,將存儲(chǔ)于該緩存內(nèi)存中的線程的識(shí)別碼和行主鍵列表作為待比對(duì)數(shù)據(jù)。
這里是將S102中緩存內(nèi)存存儲(chǔ)的數(shù)據(jù)寫入到分布式文件系統(tǒng),即HBase數(shù)據(jù)庫(kù)的Hfile中。
S104、將該基準(zhǔn)數(shù)據(jù)與該待比對(duì)數(shù)據(jù)進(jìn)行比對(duì),若比對(duì)結(jié)果為存在有數(shù)據(jù)記錄未寫入該數(shù)據(jù)庫(kù)的分布式文件系統(tǒng)中,則重新將該待寫入文件寫入該數(shù)據(jù)庫(kù)中。
比對(duì)的過程是為了確保寫入到分布式文件系統(tǒng)中的數(shù)據(jù)的完整性。若比對(duì)結(jié)果為存在有數(shù)據(jù)記錄未寫入該數(shù)據(jù)庫(kù)的分布式文件系統(tǒng)中,則重新將該待寫入文件寫入該數(shù)據(jù)庫(kù)中,即需要重新執(zhí)行步驟S101到步驟S104。
本發(fā)明實(shí)施例中,從線程中獲取待寫入文件對(duì)應(yīng)的數(shù)據(jù)記錄、該數(shù)據(jù)記錄對(duì)應(yīng)的行主鍵值以及該線程的識(shí)別碼,并生成包含有該數(shù)據(jù)記錄與該行主鍵值之間的對(duì)應(yīng)關(guān)系的行主鍵列表,同時(shí)將該獲取的線程的識(shí)別碼和該生成的行主鍵列表作為基準(zhǔn)數(shù)據(jù),將該獲取的數(shù)據(jù)記錄、該獲取的數(shù)據(jù)記錄對(duì)應(yīng)的行主鍵值、該獲取的線程的識(shí)別碼和該生成的行主鍵列表寫入數(shù)據(jù)庫(kù)中的緩存內(nèi)存中,將該緩存內(nèi)存中存儲(chǔ)的數(shù)據(jù)記錄、該存儲(chǔ)的數(shù)據(jù)記錄對(duì)應(yīng)的行主鍵值、存儲(chǔ)的線程的識(shí)別碼和存儲(chǔ)的行主鍵列表寫入該數(shù)據(jù)庫(kù)中的分布式文件系統(tǒng)中,并在寫入完成后,將存儲(chǔ)于該緩存內(nèi)存中的線程的識(shí)別碼和行主鍵列表作為待比對(duì)數(shù)據(jù),將該基準(zhǔn)數(shù)據(jù)與該待比對(duì)數(shù)據(jù)進(jìn)行比對(duì),若比對(duì)結(jié)果為存在有數(shù)據(jù)記錄未寫入該數(shù)據(jù)庫(kù)的分布式文件系統(tǒng)中,則重新將該待寫入文件寫入該數(shù)據(jù)庫(kù)中,這樣每次在寫入數(shù)據(jù)后,均通過比對(duì)確定數(shù)據(jù)是否全部寫入到數(shù)據(jù)庫(kù)中,進(jìn)而確保數(shù)據(jù)存儲(chǔ)的完整性,同時(shí)相比于以日志文件的方式記錄,本發(fā)明實(shí)施例利用行主鍵列表來(lái)比對(duì),占用系統(tǒng)資源很小,進(jìn)而不會(huì)影響數(shù)據(jù)存儲(chǔ)效率。
請(qǐng)參閱圖2,圖2為本發(fā)明第二實(shí)施例提供的基于Hbase數(shù)據(jù)庫(kù)的數(shù)據(jù)寫入方法的實(shí)現(xiàn)流程示意圖,可應(yīng)用于具有數(shù)據(jù)處理功能的終端中,如計(jì)算機(jī),圖2所示的基于Hbase數(shù)據(jù)庫(kù)的數(shù)據(jù)寫入方法,主要包括以下步驟:
S201、將該待寫入文件中數(shù)據(jù)記錄發(fā)送至線程中,以通過該線程將該線程接收到的每一數(shù)據(jù)記錄生成對(duì)應(yīng)的行主鍵值。
一個(gè)數(shù)據(jù)記錄對(duì)應(yīng)一個(gè)行主鍵值。在實(shí)際應(yīng)用中,一個(gè)待寫入文件可以分成多個(gè)數(shù)據(jù)記錄,一個(gè)待寫入文件中的大多數(shù)數(shù)據(jù)記錄會(huì)分配到一個(gè)線程中,但是也有分配到多個(gè)線程中的可能。在實(shí)際應(yīng)用中,線程是通過哈希(Hash)算法生成的rowkey值。
S202、從線程中獲取待寫入文件對(duì)應(yīng)的數(shù)據(jù)記錄、該數(shù)據(jù)記錄對(duì)應(yīng)的行主鍵值以及該線程的識(shí)別碼,并生成包含有該數(shù)據(jù)記錄與該行主鍵值之間的對(duì)應(yīng)關(guān)系的行主鍵列表,同時(shí)將該獲取的線程的識(shí)別碼和該生成的行主鍵列表作為基準(zhǔn)數(shù)據(jù)。
該行主鍵列表中包含多個(gè)該數(shù)據(jù)記錄與該行主鍵值之間的對(duì)應(yīng)關(guān)系,其中該行主鍵列表與獲取的線程的ID相對(duì)應(yīng)。
可選地,還可以告知線程存儲(chǔ)該行主鍵列表與該待寫入文件的對(duì)應(yīng)關(guān)系。
S203、將該獲取的數(shù)據(jù)記錄、該獲取的數(shù)據(jù)記錄對(duì)應(yīng)的行主鍵值、該獲取的線程的識(shí)別碼和該生成的行主鍵列表寫入數(shù)據(jù)庫(kù)中的緩存內(nèi)存中。
Hbase數(shù)據(jù)庫(kù)的緩存內(nèi)存為MemStore,在實(shí)際應(yīng)用中,將該獲取的數(shù)據(jù)記錄、該獲取的數(shù)據(jù)記錄對(duì)應(yīng)的行主鍵值、該獲取的線程的識(shí)別碼和該生成的行主鍵列表寫入內(nèi)存MemStore中。
S204、將該緩存內(nèi)存中存儲(chǔ)的數(shù)據(jù)記錄、該存儲(chǔ)的數(shù)據(jù)記錄對(duì)應(yīng)的行主鍵值、存儲(chǔ)的線程的識(shí)別碼和存儲(chǔ)的行主鍵列表寫入該數(shù)據(jù)庫(kù)中的分布式文件系統(tǒng)中,并在寫入完成后,將存儲(chǔ)于該緩存內(nèi)存中的線程的識(shí)別碼和行主鍵列表作為待比對(duì)數(shù)據(jù)。
這里是將S203中緩存內(nèi)存存儲(chǔ)的數(shù)據(jù)寫入到分布式文件系統(tǒng),即HBase數(shù)據(jù)庫(kù)的Hfile中。在實(shí)際應(yīng)用中,首先將該緩存內(nèi)存中存儲(chǔ)的數(shù)據(jù)記錄、該存儲(chǔ)的數(shù)據(jù)記錄對(duì)應(yīng)的行主鍵值、存儲(chǔ)的線程的識(shí)別碼和存儲(chǔ)的行主鍵列表轉(zhuǎn)發(fā)給HBase數(shù)據(jù)庫(kù)的HStore,然后通過commit方式將該緩存內(nèi)存中存儲(chǔ)的數(shù)據(jù)記錄、該存儲(chǔ)的數(shù)據(jù)記錄對(duì)應(yīng)的行主鍵值、存儲(chǔ)的線程的識(shí)別碼和存儲(chǔ)的行主鍵列表寫入到HFile中。在寫入HFile之后,將該緩存內(nèi)存中的線程的識(shí)別碼和行主鍵列表作為待比對(duì)數(shù)據(jù)保存在該緩存內(nèi)存所在的服務(wù)器中。
S205、將該基準(zhǔn)數(shù)據(jù)與該待比對(duì)數(shù)據(jù)進(jìn)行比對(duì),若比對(duì)結(jié)果為存在有數(shù)據(jù)記錄未寫入該數(shù)據(jù)庫(kù)的分布式文件系統(tǒng)中,則重新將該待寫入文件寫入該數(shù)據(jù)庫(kù)中。
比對(duì)的過程是為了確保寫入到分布式文件系統(tǒng)中的數(shù)據(jù)的完整性。若比對(duì)結(jié)果為存在有數(shù)據(jù)記錄未寫入該數(shù)據(jù)庫(kù)的分布式文件系統(tǒng)中,則重新將該待寫入文件寫入該數(shù)據(jù)庫(kù)中,即需要重新執(zhí)行步驟S201到步驟S205。
可選地,將該基準(zhǔn)數(shù)據(jù)與該待比對(duì)數(shù)據(jù)進(jìn)行比對(duì)具體為:
判斷該待比對(duì)數(shù)據(jù)中的線程的識(shí)別碼與該基準(zhǔn)數(shù)據(jù)中的線程的識(shí)別碼是否一致;
若一致,則將該待比對(duì)數(shù)據(jù)中的行主鍵列表與該基準(zhǔn)數(shù)據(jù)中的行主鍵列表進(jìn)行比對(duì);
若該待比對(duì)數(shù)據(jù)中的行主鍵列表與該基準(zhǔn)數(shù)據(jù)中的行主鍵列表完全一致,則該比對(duì)結(jié)果為沒有數(shù)據(jù)記錄未寫入該數(shù)據(jù)庫(kù)的分布式文件系統(tǒng)中;
若該待比對(duì)數(shù)據(jù)中的行主鍵列表與該基準(zhǔn)數(shù)據(jù)中的行主鍵列表不一致,則該比對(duì)結(jié)果為存在有數(shù)據(jù)記錄未寫入該數(shù)據(jù)庫(kù)的分布式文件系統(tǒng)中。
首先要判斷該基準(zhǔn)數(shù)據(jù)和待比對(duì)數(shù)據(jù)中線程的ID是否一致,在線程的ID一致的條件下,再比對(duì)該基準(zhǔn)數(shù)據(jù)和待比對(duì)數(shù)據(jù)中行主鍵列表的一致性。
可選地,若比對(duì)結(jié)果為存在有數(shù)據(jù)記錄未寫入該數(shù)據(jù)庫(kù)的分布式文件系統(tǒng)中,則重新將該待寫入文件寫入該數(shù)據(jù)庫(kù)中具體為:
若該比對(duì)結(jié)果為存在有數(shù)據(jù)記錄未寫入該數(shù)據(jù)庫(kù)的分布式文件系統(tǒng)中,則從該基準(zhǔn)數(shù)據(jù)的行主鍵列表中查找該待比對(duì)數(shù)據(jù)的行主鍵列表中缺失的行主鍵值;
按照該基準(zhǔn)數(shù)據(jù)或該待比對(duì)數(shù)據(jù)中線程的識(shí)別碼,從該線程中獲取該缺失的行主鍵值所在的行主鍵列表以及該獲取的行主鍵列表對(duì)應(yīng)的待寫入文件,其中該線程中存儲(chǔ)有行主鍵列表與待寫入文件之間的對(duì)應(yīng)關(guān)系;
重新將該待寫入文件對(duì)應(yīng)的數(shù)據(jù)記錄寫入該數(shù)據(jù)庫(kù)中,并重新比對(duì)基準(zhǔn)數(shù)據(jù)和待比對(duì)數(shù)據(jù),直至該比對(duì)結(jié)果為沒有數(shù)據(jù)記錄未寫入該數(shù)據(jù)庫(kù)的分布式文件系統(tǒng)中。
首先是確定缺失的行主鍵值所在的行主鍵列表,然后通過行主鍵列表查找到線程的ID,最后通過線程中存儲(chǔ)的行主鍵列表與待寫入文件之間的對(duì)應(yīng)關(guān)系,利用行主鍵列表找到需要重新寫入的待寫入文件,然后重新執(zhí)行步驟S201-步驟S205,直至該比對(duì)結(jié)果為沒有數(shù)據(jù)記錄未寫入該數(shù)據(jù)庫(kù)的分布式文件系統(tǒng)中,這樣避免了數(shù)據(jù)丟失,確保數(shù)據(jù)可以完整的存儲(chǔ)在數(shù)據(jù)庫(kù)中。
需要說明的是,對(duì)于重新寫入的同一待寫入文件,對(duì)應(yīng)生成的rowkey值均是相同,同時(shí)也可以理解為行主鍵列表是相同的,這樣可以避免重復(fù)存入相同的數(shù)據(jù)記錄。
可選地,該將該基準(zhǔn)數(shù)據(jù)與該待比對(duì)數(shù)據(jù)進(jìn)行比對(duì)之后,還包括:
若該比對(duì)結(jié)果為沒有數(shù)據(jù)記錄未寫入該數(shù)據(jù)庫(kù)的分布式文件系統(tǒng)中,則刪除該基準(zhǔn)數(shù)據(jù)和該待比對(duì)數(shù)據(jù);
按照該基準(zhǔn)數(shù)據(jù)或該待比對(duì)數(shù)據(jù)中線程的識(shí)別碼,向該線程發(fā)送刪除提示信息,該刪除提示信息用于提示刪除存儲(chǔ)于該線程中的行主鍵列表與該待寫入文件之間的對(duì)應(yīng)關(guān)系。
若該比對(duì)結(jié)果為沒有數(shù)據(jù)記錄未寫入該數(shù)據(jù)庫(kù)的分布式文件系統(tǒng)中,刪除該基準(zhǔn)數(shù)據(jù)和該待比對(duì)數(shù)據(jù),以及告知線程刪除存儲(chǔ)于該線程中的行主鍵列表與該待寫入文件之間的對(duì)應(yīng)關(guān)系,這樣可以釋放部分的存儲(chǔ)空間,優(yōu)化了系統(tǒng)資源。
本發(fā)明實(shí)施例中,將該待寫入文件中數(shù)據(jù)記錄發(fā)送至線程中,以通過該線程將該線程接收到的每一數(shù)據(jù)記錄生成對(duì)應(yīng)的行主鍵值,從線程中獲取待寫入文件對(duì)應(yīng)的數(shù)據(jù)記錄、該數(shù)據(jù)記錄對(duì)應(yīng)的行主鍵值以及該線程的識(shí)別碼,并生成包含有該數(shù)據(jù)記錄與該行主鍵值之間的對(duì)應(yīng)關(guān)系的行主鍵列表,同時(shí)將該獲取的線程的識(shí)別碼和該生成的行主鍵列表作為基準(zhǔn)數(shù)據(jù),將該獲取的數(shù)據(jù)記錄、該獲取的數(shù)據(jù)記錄對(duì)應(yīng)的行主鍵值、該獲取的線程的識(shí)別碼和該生成的行主鍵列表寫入數(shù)據(jù)庫(kù)中的緩存內(nèi)存中,將該緩存內(nèi)存中存儲(chǔ)的數(shù)據(jù)記錄、該存儲(chǔ)的數(shù)據(jù)記錄對(duì)應(yīng)的行主鍵值、存儲(chǔ)的線程的識(shí)別碼和存儲(chǔ)的行主鍵列表寫入該數(shù)據(jù)庫(kù)中的分布式文件系統(tǒng)中,并在寫入完成后,將存儲(chǔ)于該緩存內(nèi)存中的線程的識(shí)別碼和行主鍵列表作為待比對(duì)數(shù)據(jù),將該基準(zhǔn)數(shù)據(jù)與該待比對(duì)數(shù)據(jù)進(jìn)行比對(duì),若比對(duì)結(jié)果為存在有數(shù)據(jù)記錄未寫入該數(shù)據(jù)庫(kù)的分布式文件系統(tǒng)中,則重新將該待寫入文件寫入該數(shù)據(jù)庫(kù)中,這樣每次在寫入數(shù)據(jù)后,均通過比對(duì)確定數(shù)據(jù)是否全部寫入到數(shù)據(jù)庫(kù)中,進(jìn)而確保數(shù)據(jù)存儲(chǔ)的完整性,同時(shí)相比于以日志文件的方式記錄,本發(fā)明利用行主鍵列表來(lái)比對(duì),占用系統(tǒng)資源很小,進(jìn)而不會(huì)影響數(shù)據(jù)存儲(chǔ)效率。
請(qǐng)參閱圖3,圖3是本發(fā)明第三實(shí)施例提供的基于Hbase數(shù)據(jù)庫(kù)的數(shù)據(jù)寫入裝置的結(jié)構(gòu)示意圖,為了便于說明,僅示出了與本發(fā)明實(shí)施例相關(guān)的部分。圖3示例的基于Hbase數(shù)據(jù)庫(kù)的數(shù)據(jù)寫入裝置可以是前述圖1和圖2所示實(shí)施例提供的基于Hbase數(shù)據(jù)庫(kù)的數(shù)據(jù)寫入方法的執(zhí)行主體。圖3示例的基于Hbase數(shù)據(jù)庫(kù)的數(shù)據(jù)寫入裝置,主要包括:獲取模塊301和處理模塊302。以上各功能模塊詳細(xì)說明如下:
獲取模塊301,用于從線程中獲取待寫入文件對(duì)應(yīng)的數(shù)據(jù)記錄、該數(shù)據(jù)記錄對(duì)應(yīng)的行主鍵值以及該線程的識(shí)別碼,并生成包含有該數(shù)據(jù)記錄與該行主鍵值之間的對(duì)應(yīng)關(guān)系的行主鍵列表,同時(shí)將該獲取的線程的識(shí)別碼和該生成的行主鍵列表作為基準(zhǔn)數(shù)據(jù);
處理模塊302,用于將該獲取的數(shù)據(jù)記錄、該獲取的數(shù)據(jù)記錄對(duì)應(yīng)的行主鍵值、該獲取的線程的識(shí)別碼和該生成的行主鍵列表寫入數(shù)據(jù)庫(kù)中的緩存內(nèi)存中;
處理模塊302,還用于將該緩存內(nèi)存中存儲(chǔ)的數(shù)據(jù)記錄、該存儲(chǔ)的數(shù)據(jù)記錄對(duì)應(yīng)的行主鍵值、存儲(chǔ)的線程的識(shí)別碼和存儲(chǔ)的行主鍵列表寫入該數(shù)據(jù)庫(kù)中的分布式文件系統(tǒng)中,并在寫入完成后,將存儲(chǔ)于該緩存內(nèi)存中的線程的識(shí)別碼和行主鍵列表作為待比對(duì)數(shù)據(jù);
處理模塊302,還用于將該基準(zhǔn)數(shù)據(jù)與該待比對(duì)數(shù)據(jù)進(jìn)行比對(duì),若比對(duì)結(jié)果為存在有數(shù)據(jù)記錄未寫入該數(shù)據(jù)庫(kù)的分布式文件系統(tǒng)中,則重新將該待寫入文件寫入該數(shù)據(jù)庫(kù)中。
一個(gè)線程均對(duì)應(yīng)一個(gè)線程的識(shí)別碼,即線程的ID。一個(gè)待寫入文件可以分成多個(gè)數(shù)據(jù)記錄,一個(gè)待寫入文件中的大多數(shù)數(shù)據(jù)記錄會(huì)分配到一個(gè)線程中,但是也有分配到多個(gè)線程中的可能。該行主鍵列表中包含多個(gè)該數(shù)據(jù)記錄與該行主鍵值之間的對(duì)應(yīng)關(guān)系,其中該行主鍵列表與獲取的線程的ID相對(duì)應(yīng)??蛇x地,還可以將該行主鍵列表與該待寫入文件的相對(duì)應(yīng),并將該行主鍵列表與該待寫入文件的對(duì)應(yīng)關(guān)系進(jìn)行存儲(chǔ),并同時(shí)告知線程存儲(chǔ)該行主鍵列表與該待寫入文件的對(duì)應(yīng)關(guān)系。Hbase數(shù)據(jù)庫(kù)的緩存內(nèi)存為MemStore。
比對(duì)的過程是為了確保寫入到分布式文件系統(tǒng)中的數(shù)據(jù)的完整性。若比對(duì)結(jié)果為存在有數(shù)據(jù)記錄未寫入該數(shù)據(jù)庫(kù)的分布式文件系統(tǒng)中,則處理模塊302重新將該待寫入文件寫入該數(shù)據(jù)庫(kù)中。
本實(shí)施例未盡之細(xì)節(jié),請(qǐng)參閱前述圖1所示實(shí)施例的描述,此處不再贅述。
需要說明的是,以上圖3示例的基于Hbase數(shù)據(jù)庫(kù)的數(shù)據(jù)寫入裝置的實(shí)施方式中,各功能模塊的劃分僅是舉例說明,實(shí)際應(yīng)用中可以根據(jù)需要,例如相應(yīng)硬件的配置要求或者軟件的實(shí)現(xiàn)的便利考慮,而將上述功能分配由不同的功能模塊完成,即將基于Hbase數(shù)據(jù)庫(kù)的數(shù)據(jù)寫入裝置的內(nèi)部結(jié)構(gòu)劃分成不同的功能模塊,以完成以上描述的全部或者部分功能。而且,實(shí)際應(yīng)用中,本實(shí)施例中的相應(yīng)的功能模塊可以是由相應(yīng)的硬件實(shí)現(xiàn),也可以由相應(yīng)的硬件執(zhí)行相應(yīng)的軟件完成。本說明書提供的各個(gè)實(shí)施例都可應(yīng)用上述描述原則,以下不再贅述。
本發(fā)明實(shí)施例中,獲取模塊301從線程中獲取待寫入文件對(duì)應(yīng)的數(shù)據(jù)記錄、該數(shù)據(jù)記錄對(duì)應(yīng)的行主鍵值以及該線程的識(shí)別碼,并生成包含有該數(shù)據(jù)記錄與該行主鍵值之間的對(duì)應(yīng)關(guān)系的行主鍵列表,同時(shí)將該獲取的線程的識(shí)別碼和該生成的行主鍵列表作為基準(zhǔn)數(shù)據(jù),處理模塊302將該獲取的數(shù)據(jù)記錄、該獲取的數(shù)據(jù)記錄對(duì)應(yīng)的行主鍵值、該獲取的線程的識(shí)別碼和該生成的行主鍵列表寫入數(shù)據(jù)庫(kù)中的緩存內(nèi)存中,處理模塊302將該緩存內(nèi)存中存儲(chǔ)的數(shù)據(jù)記錄、該存儲(chǔ)的數(shù)據(jù)記錄對(duì)應(yīng)的行主鍵值、存儲(chǔ)的線程的識(shí)別碼和存儲(chǔ)的行主鍵列表寫入該數(shù)據(jù)庫(kù)中的分布式文件系統(tǒng)中,并在寫入完成后,將存儲(chǔ)于該緩存內(nèi)存中的線程的識(shí)別碼和行主鍵列表作為待比對(duì)數(shù)據(jù),處理模塊302將該基準(zhǔn)數(shù)據(jù)與該待比對(duì)數(shù)據(jù)進(jìn)行比對(duì),若比對(duì)結(jié)果為存在有數(shù)據(jù)記錄未寫入該數(shù)據(jù)庫(kù)的分布式文件系統(tǒng)中,則重新將該待寫入文件寫入該數(shù)據(jù)庫(kù)中,這樣每次在寫入數(shù)據(jù)后,均通過比對(duì)確定數(shù)據(jù)是否全部寫入到數(shù)據(jù)庫(kù)中,進(jìn)而確保數(shù)據(jù)存儲(chǔ)的完整性,同時(shí)相比于以日志文件的方式記錄,本發(fā)明利用行主鍵列表來(lái)比對(duì),占用系統(tǒng)資源很小,進(jìn)而不會(huì)影響數(shù)據(jù)存儲(chǔ)效率。
請(qǐng)參閱圖4,圖4為本發(fā)明第四實(shí)施例提供的基于Hbase數(shù)據(jù)庫(kù)的數(shù)據(jù)寫入裝置的結(jié)構(gòu)示意圖,為了便于說明,僅示出了與本發(fā)明實(shí)施例相關(guān)的部分。圖4示例的基于Hbase數(shù)據(jù)庫(kù)的數(shù)據(jù)寫入裝置可以是前述圖1和圖2所示實(shí)施例提供的基于Hbase數(shù)據(jù)庫(kù)的數(shù)據(jù)寫入方法的執(zhí)行主體。圖4示例的基于Hbase數(shù)據(jù)庫(kù)的數(shù)據(jù)寫入裝置,主要包括:發(fā)送模塊401、獲取模塊402、處理模塊403、刪除模塊404和提示模塊405,其中處理模塊403中包括比對(duì)子模塊4031;處理模塊403中還包括查找子模塊4032、獲取子模塊4033和重置子模塊4034。以上各功能模塊詳細(xì)說明如下:
發(fā)送模塊401,用于將該待寫入文件中數(shù)據(jù)記錄發(fā)送至線程中,以通過該線程將該線程接收到的每一數(shù)據(jù)記錄生成對(duì)應(yīng)的行主鍵值。
獲取模塊402,用于從線程中獲取待寫入文件對(duì)應(yīng)的數(shù)據(jù)記錄、該數(shù)據(jù)記錄對(duì)應(yīng)的行主鍵值以及該線程的識(shí)別碼,并生成包含有該數(shù)據(jù)記錄與該行主鍵值之間的對(duì)應(yīng)關(guān)系的行主鍵列表,同時(shí)將該獲取的線程的識(shí)別碼和該生成的行主鍵列表作為基準(zhǔn)數(shù)據(jù);
處理模塊403,用于將該獲取的數(shù)據(jù)記錄、該獲取的數(shù)據(jù)記錄對(duì)應(yīng)的行主鍵值、該獲取的線程的識(shí)別碼和該生成的行主鍵列表寫入數(shù)據(jù)庫(kù)中的緩存內(nèi)存中;
該處理模塊403,還用于將該緩存內(nèi)存中存儲(chǔ)的數(shù)據(jù)記錄、該存儲(chǔ)的數(shù)據(jù)記錄對(duì)應(yīng)的行主鍵值、存儲(chǔ)的線程的識(shí)別碼和存儲(chǔ)的行主鍵列表寫入該數(shù)據(jù)庫(kù)中的分布式文件系統(tǒng)中,并在寫入完成后,將存儲(chǔ)于該緩存內(nèi)存中的線程的識(shí)別碼和行主鍵列表作為待比對(duì)數(shù)據(jù);
該處理模塊403,還用于將該基準(zhǔn)數(shù)據(jù)與該待比對(duì)數(shù)據(jù)進(jìn)行比對(duì),若比對(duì)結(jié)果為存在有數(shù)據(jù)記錄未寫入該數(shù)據(jù)庫(kù)的分布式文件系統(tǒng)中,則重新將該待寫入文件寫入該數(shù)據(jù)庫(kù)中。
一個(gè)數(shù)據(jù)記錄對(duì)應(yīng)一個(gè)行主鍵值。在實(shí)際應(yīng)用中,一個(gè)待寫入文件可以分成多個(gè)數(shù)據(jù)記錄,一個(gè)待寫入文件中的大多數(shù)數(shù)據(jù)記錄會(huì)分配到一個(gè)線程中,但是也有分配到多個(gè)線程中的可能。在實(shí)際應(yīng)用中,線程是通過Hash算法生成的rowkey值。該行主鍵列表中包含多個(gè)該數(shù)據(jù)記錄與該行主鍵值之間的對(duì)應(yīng)關(guān)系,其中該行主鍵列表與獲取的線程的ID相對(duì)應(yīng)。
可選地,發(fā)送模塊401還用于告知線程存儲(chǔ)該行主鍵列表與該待寫入文件的對(duì)應(yīng)關(guān)系。
可選地,處理模塊403包括:比對(duì)子模塊4031;
比對(duì)子模塊4031,用于判斷該待比對(duì)數(shù)據(jù)中的線程的識(shí)別碼與該基準(zhǔn)數(shù)據(jù)中的線程的識(shí)別碼是否一致;
比對(duì)子模塊4032,還用于若一致,則將該待比對(duì)數(shù)據(jù)中的行主鍵列表與該基準(zhǔn)數(shù)據(jù)中的行主鍵列表進(jìn)行比對(duì);
比對(duì)子模塊4031,還用于若該待比對(duì)數(shù)據(jù)中的行主鍵列表與該基準(zhǔn)數(shù)據(jù)中的行主鍵列表完全一致,則該比對(duì)結(jié)果為沒有數(shù)據(jù)記錄未寫入該數(shù)據(jù)庫(kù)的分布式文件系統(tǒng)中;
比對(duì)子模塊4031,還用于若該待比對(duì)數(shù)據(jù)中的行主鍵列表與該基準(zhǔn)數(shù)據(jù)中的行主鍵列表不一致,則該比對(duì)結(jié)果為存在有數(shù)據(jù)記錄未寫入該數(shù)據(jù)庫(kù)的分布式文件系統(tǒng)中。
可選地,處理模塊403還包括:查找子模塊4032、獲取子模塊4033和重置子模塊4034、刪除子模塊4035和提示子模塊4036;
查找子模塊4032,用于若該比對(duì)結(jié)果為存在有數(shù)據(jù)記錄未寫入該數(shù)據(jù)庫(kù)的分布式文件系統(tǒng)中,則從該基準(zhǔn)數(shù)據(jù)的行主鍵列表中查找該待比對(duì)數(shù)據(jù)的行主鍵列表中缺失的行主鍵值;
獲取子模塊4033,用于按照該基準(zhǔn)數(shù)據(jù)或該待比對(duì)數(shù)據(jù)中線程的識(shí)別碼,從該線程中獲取該缺失的行主鍵值所在的行主鍵列表以及該獲取的行主鍵列表對(duì)應(yīng)的待寫入文件,其中該線程中存儲(chǔ)有行主鍵列表與待寫入文件之間的對(duì)應(yīng)關(guān)系;
重置子模塊4034,用于重新將該待寫入文件對(duì)應(yīng)的數(shù)據(jù)記錄寫入該數(shù)據(jù)庫(kù)中,并重新比對(duì)基準(zhǔn)數(shù)據(jù)和待比對(duì)數(shù)據(jù),直至該比對(duì)結(jié)果為沒有數(shù)據(jù)記錄未寫入該數(shù)據(jù)庫(kù)的分布式文件系統(tǒng)中。
刪除子模塊4035,用于若所述比對(duì)結(jié)果為沒有數(shù)據(jù)記錄未寫入所述數(shù)據(jù)庫(kù)的分布式文件系統(tǒng)中,則刪除所述基準(zhǔn)數(shù)據(jù)和所述待比對(duì)數(shù)據(jù);
提示子模塊4036,用于按照所述基準(zhǔn)數(shù)據(jù)或所述待比對(duì)數(shù)據(jù)中線程的識(shí)別碼,向所述線程發(fā)送刪除提示信息,所述刪除提示信息用于提示刪除存儲(chǔ)于所述線程中的行主鍵列表與所述待寫入文件之間的對(duì)應(yīng)關(guān)系。
需要說明的是,對(duì)于重新寫入的同一待寫入文件,對(duì)應(yīng)生成的rowkey值均是相同,同時(shí)也可以理解為行主鍵列表是相同的,這樣可以避免重復(fù)存入相同的數(shù)據(jù)記錄。
本實(shí)施例未盡之細(xì)節(jié),請(qǐng)參閱前述圖1和圖2所示實(shí)施例的描述,此處不再贅述。
本發(fā)明實(shí)施例中,發(fā)送模塊401將該待寫入文件中數(shù)據(jù)記錄發(fā)送至線程中,以通過該線程將該線程接收到的每一數(shù)據(jù)記錄生成對(duì)應(yīng)的行主鍵值,獲取模塊402從線程中獲取待寫入文件對(duì)應(yīng)的數(shù)據(jù)記錄、該數(shù)據(jù)記錄對(duì)應(yīng)的行主鍵值以及該線程的識(shí)別碼,并生成包含有該數(shù)據(jù)記錄與該行主鍵值之間的對(duì)應(yīng)關(guān)系的行主鍵列表,同時(shí)將該獲取的線程的識(shí)別碼和該生成的行主鍵列表作為基準(zhǔn)數(shù)據(jù),處理模塊403將該獲取的數(shù)據(jù)記錄、該獲取的數(shù)據(jù)記錄對(duì)應(yīng)的行主鍵值、該獲取的線程的識(shí)別碼和該生成的行主鍵列表寫入數(shù)據(jù)庫(kù)中的緩存內(nèi)存中,將該緩存內(nèi)存中存儲(chǔ)的數(shù)據(jù)記錄、該存儲(chǔ)的數(shù)據(jù)記錄對(duì)應(yīng)的行主鍵值、存儲(chǔ)的線程的識(shí)別碼和存儲(chǔ)的行主鍵列表寫入該數(shù)據(jù)庫(kù)中的分布式文件系統(tǒng)中,并在寫入完成后,將存儲(chǔ)于該緩存內(nèi)存中的線程的識(shí)別碼和行主鍵列表作為待比對(duì)數(shù)據(jù),將該基準(zhǔn)數(shù)據(jù)與該待比對(duì)數(shù)據(jù)進(jìn)行比對(duì),若比對(duì)結(jié)果為存在有數(shù)據(jù)記錄未寫入該數(shù)據(jù)庫(kù)的分布式文件系統(tǒng)中,則重新將該待寫入文件寫入該數(shù)據(jù)庫(kù)中,這樣每次在寫入數(shù)據(jù)后,均通過比對(duì)確定數(shù)據(jù)是否全部寫入到數(shù)據(jù)庫(kù)中,進(jìn)而確保數(shù)據(jù)存儲(chǔ)的完整性,同時(shí)相比于以日志文件的方式記錄,本發(fā)明利用行主鍵列表來(lái)比對(duì),占用系統(tǒng)資源很小,進(jìn)而不會(huì)影響數(shù)據(jù)存儲(chǔ)效率。
在本申請(qǐng)所提供的多個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的系統(tǒng)、裝置和方法,可以通過其它的方式實(shí)現(xiàn)。例如,以上所描述的裝置實(shí)施例僅僅是示意性的,例如,所述模塊的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)模塊或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信鏈接可以是通過一些接口,裝置或模塊的間接耦合或通信鏈接,可以是電性,機(jī)械或其它的形式。
所述作為分離部件說明的模塊可以是或者也可以不是物理上分開的,作為模塊顯示的部件可以是或者也可以不是物理模塊,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)模塊上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部模塊來(lái)實(shí)現(xiàn)本實(shí)施例方案的目的。
另外,在本發(fā)明各個(gè)實(shí)施例中的各功能模塊可以集成在一個(gè)處理模塊中,也可以是各個(gè)模塊單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上模塊集成在一個(gè)模塊中。上述集成的模塊既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能模塊的形式實(shí)現(xiàn)。
所述集成的模塊如果以軟件功能模塊的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述方法的全部或部分步驟。而前述的存儲(chǔ)介質(zhì)包括:U盤、移動(dòng)硬盤、只讀存儲(chǔ)器(ROM,Read-Only Memory)、隨機(jī)存取存儲(chǔ)器(RAM,Random Access Memory)、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。
需要說明的是,對(duì)于前述的各方法實(shí)施例,為了簡(jiǎn)便描述,故將其都表述為一系列的動(dòng)作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本發(fā)明并不受所描述的動(dòng)作順序的限制,因?yàn)橐罁?jù)本發(fā)明,某些步驟可以采用其它順序或者同時(shí)進(jìn)行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說明書中所描述的實(shí)施例均屬于優(yōu)選實(shí)施例,所涉及的動(dòng)作和模塊并不一定都是本發(fā)明所必須的。
在上述實(shí)施例中,對(duì)各個(gè)實(shí)施例的描述都各有側(cè)重,某個(gè)實(shí)施例中沒有詳述的部分,可以參見其它實(shí)施例的相關(guān)描述。
以上為對(duì)本發(fā)明所提供的基于Hbase數(shù)據(jù)庫(kù)的數(shù)據(jù)寫入方法及裝置的描述,對(duì)于本領(lǐng)域的技術(shù)人員,依據(jù)本發(fā)明實(shí)施例的思想,在具體實(shí)施方式及應(yīng)用范圍上均會(huì)有改變之處,綜上,本說明書內(nèi)容不應(yīng)理解為對(duì)本發(fā)明的限制。