本公開涉及數據處理
技術領域:
:,具體而言,涉及一種數據搬運方法、一種數據搬運裝置以及一種電子設備。
背景技術:
::隨著通信技術的發展,大數據的存儲、抽取、搬運、計算、分析以及決策越來越受到關注。隨著對大數據處理分析的迫切需求,以及數據存儲空間與數據訪問時間之間的矛盾激化,大多數用戶通過分布式存儲系統hbase來對數據進行存儲,以滿足對數據高效的插入和讀取操作。現有技術中,一般采用開源數據倉庫框架hadoop+hive進行底層數據分析及數據存儲,其中分布式系統基礎架構hadoop為底層數據的存儲介質,基于hadoop數據倉庫工具hive為類sql(structuredquerylanguage,結構化查詢語言)查詢引擎,兩者的結合使得數據的查詢方式更加簡便。這種方式會存在以下問題:一、在海量數據的情況下,映射和化簡map-reduce的查詢形式已經無法滿足對大數據進行即席查詢的效率;二、行鍵rowkey是多字段拼裝的字符串類型,因此除冗余字段之外的行鍵中的其他字段都不能參與計算;同時由于行鍵中每個字段長短的設計都依賴于hbase底層存儲的字典序來進行后續的查詢,因此對于較多的字段所拼裝的行鍵,空數據量大,對傳輸過程中的輸入/輸出產生較大的影響,從而影響數據的搬運效率。需要說明的是,在上述
背景技術:
:部分公開的信息僅用于加強對本公開的背景的理解,因此可以包括不構成對本領域普通技術人員已知的現有技術的信息。技術實現要素:本公開的目的在于提供一種數據搬運方法、一種數據搬運裝置以及一種電子設備,進而至少在一定程度上克服由于相關技術的限制和缺陷而導致的一個或者多個問題。根據本公開的第一方面,提供一種數據搬運方法,所述方法包括:讀取數據源中的數據并將所述數據源中行鍵相同的多條數據壓縮拼裝為一條等寬數據;將從所述數據源讀取的所述等寬數據存儲在一中間隊列;將存儲在所述中間隊列的所述等寬數據寫入和分發到一目標存儲器。在本公開的一種示例性實施例中,將數據源中行鍵相同的多條數據壓縮拼裝為一條等寬數據包括:在對數據進行壓縮拼裝時,自定義配置所述數據源中行鍵對應的每個字段和每個列的類型。在本公開的一種示例性實施例中,讀取數據源中的數據包括:循環讀取所述數據源中的數據到所述數據源的緩沖區,并對讀取的數據進行映射操作以及自定義預處理;在對讀取的數據進行映射操作以及自定義預處理之后,判斷所述數據源是否已滿;在判斷所述數據源已滿時,將數據推送到所述中間隊列并循環讀取所述數據源中的數據。在本公開的一種示例性實施例中,將所述等寬數據寫入和分發到一目標存儲器包括:將所述數據源中行鍵相同的數據按照一致性哈希算法分發到相同的線程,并通過多線程的形式將數據寫入所述目標存儲器;在將數據寫入所述目標存儲器時,判斷所述目標存儲器中是否存在空數據;在判斷所述目標存儲器中未存在所述空數據時,判斷寫入數據的行鍵是否相同;在判斷寫入數據的行鍵相同時,將行鍵相同的數據進行拼裝并將數據推送到所述目標存儲器中。在本公開的一種示例性實施例中,所述方法還包括:通過所述中間隊列控制所述等寬數據的讀取速度大于寫入速度。在本公開的一種示例性實施例中,將存儲在所述中間隊列的所述等寬數據寫入和分發到一目標存儲器之后,所述方法還包括:按照預設數據配置通過單條命中操作在所述目標存儲器中查詢所述等寬數據;將查詢的所述等寬數據解析為多條數據,并對解析的所述多條數據進行處理。在本公開的一種示例性實施例中,在讀取數據源中的數據之前,所述方法還包括:指定所述數據源和所述目標存儲器的之間的映射關系以及所述數據源和所述目標存儲器中數據的類型。根據本公開的第二方面,提供一種數據搬運裝置,所述裝置包括:數據讀取模塊,用于讀取數據源中的數據并將所述數據源中行鍵相同的多條數據壓縮拼裝為一條等寬數據;數據存儲模塊,用于將從所述數據源讀取的所述等寬數據存儲在一中間隊列;數據寫入模塊,用于將存儲在所述中間隊列的所述等寬數據寫入和分發到一目標存儲器。在本公開的一種示例性實施例中,將數據源中行鍵相同的多條數據壓縮拼裝為一條等寬數據包括:數據配置模塊,用于在對數據進行壓縮拼裝時,自定義配置所述數據源中行鍵對應的每個字段和每個列的類型。在本公開的一種示例性實施例中,讀取數據源中的數據包括:數據處理模塊,用于循環讀取所述數據源中的數據到所述數據源的緩沖區,并對讀取的數據進行映射操作以及自定義預處理;已滿判斷模塊,用于在對讀取的數據進行映射操作以及自定義預處理之后,判斷所述數據源是否已滿;數據推送模塊,用于在判斷所述數據源已滿時,將數據推送到所述中間隊列并循環讀取所述數據源中的數據。在本公開的一種示例性實施例中,將所述等寬數據寫入和分發到一目標存儲器中包括:數據分發模塊,用于將所述數據源中行鍵相同的數據按照一致性哈希算法分發到相同的線程,并通過多線程的形式將數據寫入所述目標存儲器;空數據判斷模塊,用于在將數據寫入所述目標存儲器時,判斷所述目標存儲器中是否存在空數據;行鍵判斷模塊,用于在判斷所述目標存儲器中未存在所述空數據時,判斷寫入數據的行鍵是否相同;數據拼裝模塊,用于在判斷寫入數據的行鍵相同時,將行鍵相同的數據進行拼裝并將數據推送到所述目標存儲器中。在本公開的一種示例性實施例中,所述裝置還包括:速度控制模塊,用于通過所述中間隊列控制所述等寬數據的讀取速度大于寫入速度。在本公開的一種示例性實施例中,將存儲在所述中間隊列的所述等寬數據寫入和分發到一目標存儲器之后,所述裝置還包括:數據查詢模塊,用于按照預設數據配置通過單條命中操作在所述目標存儲器中查詢所述等寬數據;數據解析模塊,用于將查詢的所述等寬數據解析為多條數據,并對解析的多條數據進行處理。在本公開的一種示例性實施例中,在讀取數據源中的數據之前,所述裝置還包括:數據指定模塊,用于指定所述數據源和所述目標存儲器的之間的映射關系以及所述數據源和所述目標存儲器中數據的類型。根據本公開的第三方面,提供一種電子設備,包括:處理器;以及存儲器,用于存儲所述處理器的可執行指令;其中,所述處理器配置為經由執行所述可執行指令來執行上述任意一項所述的數據搬運方法。本公開提供的一種數據搬運方法、數據搬運裝置以及電子設備中,通過讀取數據源中的數據并將數據源中行鍵相同的多條數據壓縮拼裝為一條等寬數據;將從所述數據源讀取的所述等寬數據存儲在一中間隊列;將存儲在所述中間隊列的所述等寬數據寫入和分發到一目標存儲器中。一方面,通過將多條數據壓縮合并成一條等寬數據,大量減少了數據量的傳遞,簡化了數據搬運的操作方式及操作量,提高了數據的搬運效率;另一方面,在數據搬運過程中,通過將多條數據壓縮合并成一條等寬數據,保障了數據的完整性以及在搬運前和搬運后數據的一致性。應當理解的是,以上的一般描述和后文的細節描述僅是示例性和解釋性的,并不能限制本公開。附圖說明此處的附圖被并入說明書中并構成本說明書的一部分,示出了符合本公開的實施例,并與說明書一起用于解釋本公開的原理。顯而易見地,下面描述中的附圖僅僅是本公開的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。圖1示意性示出一種數據搬運方法的流程示意圖。圖2示意性示出本公開一種等寬數據模型示意圖。圖3示意性示出本公開一種等寬數據拼裝示意圖。圖4示意性示出本公開一種數據搬運流程示意圖。圖5示意性示出一種數據搬運裝置的方框圖。圖6示意性示出本公開示例性實施例中的電子設備的模塊圖。具體實施方式現在將參考附圖更全面地描述示例實施例。然而,示例實施例能夠以多種形式實施,且不應被理解為限于在此闡述的實施例;相反,提供這些實施例使得本公開將全面和完整,并將示例實施例的構思全面地傳達給本領域的技術人員。在圖中相同的附圖標記表示相同或類似的部分,因而將省略對它們的重復描述。此外,所描述的特征、結構或特性可以以任何合適的方式結合在一個或更多實施例中。在下面的描述中,提供許多具體細節從而給出對本公開的實施例的充分理解。然而,本領域技術人員將意識到,可以實踐本公開的技術方案而沒有所述特定細節中的一個或更多,或者可以采用其他的方法、組元、材料、裝置、步驟等。在其他情況下,不詳細示出或描述公知結構、方法、裝置、實現、材料或者操作以避免模糊本公開的各方面。附圖中所示的方框圖僅僅是功能實體,不一定必須與物理上獨立的實體相對應。即,可以采用軟件形式來實現這些功能實體,或在一個或多個軟件硬化的模塊中實現這些功能實體或功能實體的一部分,或在不同網絡和/或處理器裝置和/或微控制器裝置中實現這些功能實體。本示例實施方式中首先提供了一種數據搬運方法,可以應用于無線終端soc芯片中的數據搬運、各大電商平臺、各大網站對海量數據的分析。參考圖1所示,所述數據搬運方法可以包括以下步驟:步驟s110:讀取數據源中的數據并將所述數據源中行鍵相同的多條數據壓縮拼裝為一條等寬數據;步驟s120:將從所述數據源讀取的所述等寬數據存儲在一中間隊列;步驟s130:將存儲在所述中間隊列的所述等寬數據寫入和分發到一目標存儲器。本公開提供的一種數據搬運方法中,通過讀取數據源中的數據并將數據源中行鍵相同的多條數據壓縮拼裝為一條等寬數據;將從所述數據源讀取的所述等寬數據存儲在一中間隊列;將存儲在所述中間隊列的所述等寬數據寫入和分發到一目標存儲器。一方面,通過將多條數據壓縮拼裝成一條等寬數據,大量減少了數據量的傳遞,提高了數據的搬運效率;另一方面,數據在傳輸過程中,保障數據不丟失以及數據信息在搬運前和搬運后的一致性。下面,將參考圖2至圖4所示對本示例實施例中的數據搬運方法作進一步說明。在步驟s110中,讀取數據源中的數據并將所述數據源中行鍵相同的多條數據壓縮拼裝為一條等寬數據。本示例實施方式中,數據源可以為提供所需要的數據的器件,也可以為原始媒體或者其他形式的數據源。可以在數據源中存儲所有建立數據庫連接的信息,通過提供正確的數據源名稱,就可以找到相應的數據庫連接。例如,數據源中的數據可以是任意形式、任意大小的數據,例如圖形數據、遙感數據、統計調查數據等。數據可以通過表格的形式顯示,也可以通過其他方式顯示。例如,在用表格顯示數據時,可以用概念模型表示,其中:表格可以是行的集合,每行可以包含一個行關鍵字、一個可選的時間戳以及一些有數據的列。在概念模型上,表格是一個比較稀疏的行、列矩陣,但是在物理模型上,所有數據都是按照列存儲的。本示例實施方式中,多條數據可以用n條數據來具體表示,可以對數據源中行鍵相同的n條數據進行壓縮并拼裝成一條數據,其中,數據的行鍵即每行數據的行關鍵字,n可以為任意自然數,行鍵可以是任意的字節數組。數據壓縮可以按照預設的算法對數據重新進行編碼組織,以此減少數據的冗余和存儲的空間,從而提高數據存儲、傳輸以及數據處理的效率。數據壓縮可以分為即時壓縮和非即時壓縮、數據壓縮和文件壓縮、無損壓縮和有損壓縮等。圖2所示為等寬n數據的模型示意圖,一條等寬數據可以由一個行關鍵字以及多個列組成,其中,行鍵對應的每個行都是由不同數據類型的定長字節組成,數據類型是通過數據配置指定,列則可以由一個寬度標識以及n個數值組成,n即代表寬度標識。n為數據列的個數即數據的列數n,m為數據的條數即數據的行數m,其中,n、m都可以是任意不為0的自然數,n可以大于、等于或者小于m。參考圖3所示,如果n條數據data1與datan中的行鍵值完全相同,則認定該數據滿足等寬拼裝的條件,data1與datan會合并成一條等寬n數據hbasedatan,其中每一列都是與數據data對應的列字段。此外,本示例實施方式中,在讀取數據源中的數據之前,所述方法還包括:指定所述數據源的映射的表、字段以及所述目標存儲器的映射的表、行鍵、字段對數據源中字段的映射。本示例實施方式中,可以根據數據源和目標存儲器兩個數據模型,在這兩個模型之間建立起數據元素的對應關系從而形成數據映射。可以通過手工編碼或者可視化操作的方式形成數據映射。在讀取數據源的數據之前,可以首先進行對數據進行自定義配置。數據配置可以分為數據映射的配置和數據類型的配置。其中,數據映射的配置主要可以服務于數據讀取,該項配置可以實現如下幾項功能,例如:指定數據源的映射的表、字段;對字段進行自定義預處理,即對讀取的字段進行例如替換replace、轉變convert等自定義數據處理;指定目標存儲器中的表以及目標行和目標字段對數據源中的字段的映射。而數據類型的配置主要可以應用于數據讀取、數據拼裝以及數據查詢,該項配置可以實現如下幾項功能,例如:指定數據源及目標存儲器的行關鍵字以及各個字段的數據類型;為數據查詢提供數據類型配置,從而為數據的拆分、查詢、過濾以及計算等操作建立基礎。數據配置可以只實現其中一種定義功能,也可以同時實現其中多個或者是全部定義功能。此外,本示例實施方式中,將數據源中行鍵相同的多條數據壓縮拼裝為一條等寬數據包括:在對數據進行壓縮拼裝時,自定義配置所述數據源中行鍵對應的每個字段和每個列的類型。本示例實施方式中,數據表中的一列為一個字段,表中每列的名稱為字段名,字段類型也是數據類型。本示例實施方式中,可以根據實際需要自定義每個字段的類型,例如,int、char、varchar、bit等,列的類型可以是數值、字符串、日期/時間、枚舉等類別,本示例實施方式中對此不作特殊限定。此外,本示例實施方式中,讀取數據源中的數據包括:循環讀取所述數據源中的數據到所述數據源的緩沖區,并對讀取的數據進行映射操作以及自定義預處理;在對讀取的數據進行映射操作以及自定義預處理之后,判斷所述數據源是否已滿;在判斷所述數據源已滿時,將數據推送到所述中間隊列并循環讀取所述數據源中的數據。本示例實施方式中,循環讀取的數據可以為所述數據源中的底層數據,可以基于底層數據分析數據的存儲以及計算等問題,進而進行數據的挖掘。所述緩沖區可以是前端用來存儲、處理數據的對象。例如,在每一個數據窗口對象中,可以有4個二維表作為數據緩沖區,用來存儲查詢到的數據。緩沖區可以為完全緩沖,在緩沖區滿時會被清空緩沖區的內容會被發往目標存儲中;也可以為行緩沖,遇到一個換行符時,緩沖區的內容就被清空,例如,鍵盤輸入。本示例實施方式中,可以利用函數對數據源中的數據進行循環讀取,并將讀取的底層數據存儲到數據源的緩沖區。通過將數據存入緩沖區,減少了數據傳輸的時間,提高了數據讀取的效率;在發現輸入有錯時,可以通過鍵盤或者是其它方式進行修改,提高了數據傳輸的準確率。可以對循環讀取的數據進行map操作以及自定義預處理。例如,可以對讀取的數據進行添加、刪除、過濾、獲取、判斷等映射操作或其他自定義預處理操作。數據源中可以存在數據隊列,該數據隊列可以用于將數據按照順序進行處理,可以按照先進先出的規則用一組地址連續的存儲單元依次存放隊列中的各數據。可以通過函數對隊列進行例如初始化隊列initqueue、進隊列enqueue、出隊列dequeue等操作。隊列可以為順序隊列,也可以為循環隊列。可以通過函數isqueuefull判斷隊列是否已滿,并在判斷隊列已滿時,控制數據進入中間隊列。在此過程中,可以通過函數循環讀取數據源中的數據。在步驟s120中,將從所述數據源讀取的所述等寬數據存儲在一中間隊列。本示例實施方式中,可以通過get函數批量獲取數據,例如同時獲取一行數據,也可以通過get命令和其他函數的組合獲取指定的一列數據或者是指定的一個列族中所有列的數據,也可以通過多線程方式讀取數據,或者也可以通過其他方式讀取。在讀取所述等寬數據且對數據進行自定義預處理之后,將數據存儲在中間隊列中,實現數據讀寫的異步操作。中間隊列可以按照先進先出的原則實現數據的讀取和寫入。即一個線程將數據源中的數據推送到中間隊列,另一個線程從中間隊列中取出數據進行處理。通過中間隊列保證數據的讀取接口和寫入接口之間不存在并發沖突,兩個線程不需要進行任何同步動作,從而提高數據的搬運效率。此外,本示例實施方式中,所述方法還包括:通過所述中間隊列控制所述等寬數據的讀取速度大于寫入速度。本示例實施方式中,系統在運行時,讀寫操作的速度可以是根據不同運行狀態定義。為了避免發生因內存不足而導致的數據溢出等宕機錯誤,要保證數據的讀取速度遠大于數據的寫入速度。本示例性實施例中,可以通過所述中間隊列控制數據的讀取速度遠大于數據的寫入速度。中間隊列可以與數據源中的數據隊列的性質保持一致。中間隊列可以提供路由并保證消息或者數據的有效傳遞,例如,在發送者發送完消息后如果接收者為不能使用狀態,中間隊列則會保留消息,直到該條數據成功傳遞。通過中間隊列還保證了數據傳輸的有效性和正確性。讀取速度是指將存儲設備中的數據提取出來的操作速度,可以理解為復制數據源中數據的速度;寫入速度是指將外部數據記錄到存儲設備中操作速度,可以理解為將數據粘貼到目標存儲器中的速度,例如,文件下載、數據粘貼等。在步驟s130中,將存儲在所述中間隊列的所述等寬數據寫入和分發到一目標存儲器。本示例實施方式中,可以在接收到寫入命令時,響應所述寫入命令并將從數據源中讀取的,存儲在中間隊列的數據按照預設要求寫入目標存儲器中。可以直接使用htable進行導入、或者從hdfs(hadoopdistributedfilesystem,hadoop分布式文件系統)文件中導入hbase、或者讀取hbase表寫入hbase表中字段、或者可以通過其他方式寫入。目標存儲器可以為反映靜態數據的計算機內部或外部的存儲介質,例如磁盤、磁帶等。目標存儲器的存儲方式可以為直接附加存儲方式、服務器連接存儲方式或者基于光纖通道的存儲方式。本示例性實施例中,通過等寬數據形式進行數據傳遞、搬運,大量減少了數據量的傳遞,提高了數據搬運的效率。此外,本示例實施方式中,將所述等寬數據寫入和分發到一目標存儲器包括:將所述數據源中行鍵相同的數據按照一致性哈希算法分發到相同的線程,并通過多線程的形式將數據寫入所述目標存儲器;在將數據寫入所述目標存儲器時,判斷所述目標存儲器中是否存在空數據;在判斷所述目標存儲器中未存在所述空數據時,判斷寫入數據的行鍵是否相同;在判斷寫入數據的行鍵相同時,將行鍵相同的數據進行拼裝并將數據推送到所述目標存儲器中。本示例實施方式中,可以將數據源中行鍵相同的多條數據采用一致性哈希算法分發到相同的線程,以保證原本已分配的內容可以被映射到新的緩沖中。也就是說,可以根據一致性哈希算法,要求每個節點存儲其上行節點和下行節點的位置信息,在節點需要查找內容時,可以根據內容的鍵值決定向上行還是下行節點發起查詢請求。如果自身擁有被請求的目標,可以直接向發起查詢請求的節點返回確認,如果不屬于自身的范圍,可以轉發請求到自己的上行/下行節點。本實例中將數據源的數據進行分發可以為將數據源中的數據存儲在中間隊列中,再從中間隊列中分發出去用于保存或者是其他操作,實現數據的分發與共享,保障共享的數據與數據源中主數據的一致性。所述線程可以由線程id,當前指令指針,寄存器集合以及堆棧組成。線程可與同屬一個進程的其他線程共享進程的所有資源,一個線程可以創建和撤銷另一個線程,同一個進程之間的多個線程可以并發執行,即多線程。每一個程序都至少有一個線程,且線程可以有就緒、阻塞和運行三種狀態。線程可以應用于文件管理或者通信控制、前后臺處理以及異步處理中。多線程是指多個線程并發執行,通過多線程的形式執行數據寫入,可以提升數據處理性能。本示例實施方式中,目標存儲器中也可以存在數據隊列,該數據隊列可以與上述數據源的數據隊列的性質保持一致。即可以通過數據隊列判斷目標存儲器中是否存在空數據。在執行數據寫入時,可以通過java語言對hbase數據庫進行操作。數據寫入過程中,可以通過if/else循環手動判斷、或者通過其他方式判斷寫入目標存儲器的數據隊列中的數據是否為空數據,或者說判斷目標存儲器的數據隊列中是否存在空數據。在判斷寫入的數據為空數據時,可以直接不處理該數據;在判斷寫入的數據為非空數據時,可以對寫入的數據進一步處理。可以允許目標存儲器中中連續一行或一列為空數據。在判斷目標存儲器的數據隊列中不存在空數據時,可以通過循環函數獲取每一個寫入的數據的行鍵,通過對比判斷所有寫入的數據的行鍵是否相同,并且將判斷的行鍵相同的多條數據按照上述的數據拼裝規則拼裝成一條等寬數據,最后將拼裝的等寬數據推送到目標存儲器中進行存儲完成整個數據的寫入過程。在此過程中,可以通過數據讀取和中間隊列的運行狀態確定是否終止數據寫入過程。此外,本示例實施方式中,將存儲在所述中間隊列的所述等寬數據寫入和分發到一目標存儲器之后,所述方法還包括:按照預設數據配置通過單條命中操作在所述目標存儲器中查詢所述等寬數據;將查詢的所述等寬數據解析為多條數據,并對解析的所述多條數據進行處理。本示例實施方式中,在完成數據寫入之后,還可以對存儲在目標存儲器中的數據進行查詢。hbase可以根據行鍵進行檢索,具體地,系統可以通過找到某個行鍵或者是某個行鍵范圍所在的區域,將查詢數據的請求提交到該區域獲取數據。可以根據行鍵查詢hbase中從某個時刻起的最新數據,也可以查詢指定的一列或者一行數據,或者一次查詢所有的數據。在數據查詢過程中,可以對單個行鍵進行get操作,查詢唯一的一條記錄;也可以通過某個行鍵所在的范圍進行掃描,可以設置起始行鍵startrowkey和結束行鍵endrowkey,并在對應范圍內進行掃描,從而按照指定條件得到一行、一列或者一批數據;還可以通過全表掃描方式得到整張表中所有的數據。在查詢過程中,查詢某一條等寬數據就相當于查詢行鍵相同的n條數據。通過單條命中的形式進行數據查詢,提升了數據索引的效率。在查詢到等寬數據之后,可以根據數據配置對查詢的等寬數據進行解析,數據解析可以認為是數據拼裝的逆過程,即將一條等寬n數據拆分成n條行鍵相同的數據。在將數據拆分之后,還可以對解析的數據進行相應的自定義處理,例如過濾,計算,聚合或者其他操作等。本示例實施方式中還提供了一種數據搬運裝置,所述裝置200可以包括:數據讀取模塊201,可以用于讀取數據源中的數據并將所述數據源中行鍵相同的多條數據壓縮拼裝為一條等寬數據;數據存儲模塊202,可以用于將從所述數據源讀取的所述等寬數據存儲在一中間隊列;數據寫入模塊203,可以用于將存儲在所述中間隊列的所述等寬數據寫入和分發到目標存儲器中。此外,本示例實施方式中,將數據源中行鍵相同的多條數據壓縮拼裝為一條等寬數據包括:數據配置模塊,可以用于在對數據進行壓縮拼裝時,自定義配置所述數據源中行鍵對應的每個字段和每個列的類型。此外,本示例實施方式中,讀取數據源中的數據包括:數據處理模塊,可以用于循環讀取所述數據源中的數據到所述數據源的緩沖區,并對讀取的數據進行映射操作以及自定義預處理;已滿判斷模塊,可以用于在對讀取的數據進行映射操作以及自定義預處理之后,判斷所述數據源是否已滿;數據推送模塊,可以用于在判斷所述數據源已滿時,將數據推送到所述中間隊列并循環讀取所述數據源中的數據。此外,本示例實施方式中,將所述等寬數據寫入和分發到一目標存儲器包括:數據分發模塊,可以用于將所述數據源中行鍵相同的數據按照一致性哈希算法分發到相同的線程,并通過多線程的形式將數據寫入所述目標存儲器;空數據判斷模塊,可以用于在將數據寫入所述目標存儲器時,判斷所述目標存儲器中是否存在空數據;行鍵判斷模塊,可以用于在判斷所述目標存儲器中未存在所述空數據時,判斷寫入數據的行鍵是否相同;數據拼裝模塊,可以用于在判斷寫入數據的行鍵相同時,將行鍵相同的數據進行拼裝并將數據推送到所述目標存儲器中。此外,本示例實施方式中,所述裝置還可以包括:速度控制模塊,可以用于通過所述中間隊列控制所述等寬數據的讀取速度大于寫入速度。此外,本示例實施方式中,將存儲在所述中間隊列的所述等寬數據寫入和分發到一目標存儲器之后,所述裝置還可以包括:數據查詢模塊,可以用于按照預設數據配置通過單條命中操作在所述目標存儲器中查詢所述等寬數據;數據解析模塊,可以用于將查詢的所述等寬數據解析為多條數據,并對解析的多條數據進行處理。此外,本示例實施方式中,在讀取數據源中的數據之前,所述裝置還可以包括:數據指定模塊,可以用于指定所述數據源和所述目標存儲器的之間的映射關系以及所述數據源和所述目標存儲器中數據的類型。上述數據搬運裝置中各模塊的具體細節已經在對應的數據搬運方法中進行了詳細描述,因此此處不再贅述。本示例實施方式中還提供了一種電子設備,參考圖6所示,該電子設備10包括:處理組件11,其進一步可以包括一個或多個處理器,以及由存儲器12所代表的存儲器資源,用于存儲可由處理組件11執行的指令,例如應用程序。存儲器12中存儲的應用程序可以包括一個或一個以上的每一個對應于一組指令的模塊。此外,處理組件11被配置為執行指令,以執行上述方法。該電子設備10還可以包括:一個電源組件,電源組件被配置成對執行電子設備10進行電源管理;一個有線或無線網絡接口13,被配置成將電子設備10連接到網絡;以及一個輸入輸出(i/o)接口14。該電子設備10可以操作基于存儲在存儲器12的操作系統,例如windowsservertm,macosxtm,unixtm,linuxtm,freebsdtm或類似。附圖中所示的方框圖僅僅是功能實體,不一定必須與物理上獨立的實體相對應。即,可以采用軟件形式來實現這些功能實體,或在一個或多個軟件硬化的模塊中實現這些功能實體或功能實體的一部分,或在不同網絡和/或處理器裝置和/或微控制器裝置中實現這些功能實體。應當注意,盡管在上文詳細描述中提及了用于動作執行的設備的若干模塊或者單元,但是這種劃分并非強制性的。實際上,根據本公開的實施方式,上文描述的兩個或更多模塊或者單元的特征和功能可以在一個模塊或者單元中具體化。反之,上文描述的一個模塊或者單元的特征和功能可以進一步劃分為由多個模塊或者單元來具體化。此外,盡管在附圖中以特定順序描述了本公開中方法的各個步驟,但是,這并非要求或者暗示必須按照該特定順序來執行這些步驟,或是必須執行全部所示的步驟才能實現期望的結果。附加的或備選的,可以省略某些步驟,將多個步驟合并為一個步驟執行,以及/或者將一個步驟分解為多個步驟執行等。通過以上的實施方式的描述,本領域的技術人員易于理解,這里描述的示例實施方式可以通過軟件實現,也可以通過軟件結合必要的硬件的方式來實現。因此,根據本公開實施方式的技術方案可以以軟件產品的形式體現出來,該軟件產品可以存儲在一個非易失性存儲介質(可以是cd-rom,u盤,移動硬盤等)中或網絡上,包括若干指令以使得一臺計算設備(可以是個人計算機、服務器、移動終端、或者網絡設備等)執行根據本公開實施方式的方法。本領域技術人員在考慮說明書及實踐這里公開的發明后,將容易想到本公開的其它實施方案。本申請旨在涵蓋本公開的任何變型、用途或者適應性變化,這些變型、用途或者適應性變化遵循本公開的一般性原理并包括本公開未公開的本
技術領域:
:中的公知常識或慣用技術手段。說明書和實施例僅被視為示例性的,本公開的真正范圍和精神由所附的權利要求指出。當前第1頁12當前第1頁12