一種基於sqoop的數據抽取方法與流程
2023-09-20 21:59:20
本發明涉及數據信息技術領域,特別涉及一種基於sqoop的數據抽取方法。
背景技術:
隨著雲計算技術的不斷發展,雲計算技術不斷落地成為支撐各行業信息技術發展的重要支柱。傳統的業務系統大多構建在關係型資料庫之上,需要將這些數據抽取到大數據集群中進行計算、分析,然後再將結果數據導入關係資料庫以供展示。另外,一個複雜的業務系統往往包含多種數據源,單純依靠sqoop去抽取多數據源的數據,雖然功能上可以實現,但是管理、維護起來十分困難。因此,一個統一配置、調度、查看sqoop任務的方法或平臺具有很好的推廣使用價值。
針對上述問題,本發明設計了一種基於sqoop的數據抽取方法。
通過Ganymed ssh2 for Java遠程登錄sqoop伺服器執行sqoop命令。Ganymed是一個用Java實現了ssh2協議的開源庫。通過ganymed可以在Java程序中連接ssh伺服器,支持遠程執行命令、shell訪問、SCP與SFTP。
通過Quartz實現定時調度。Quartz是一個完全由Java編寫的開源作業調度框架,它可以與J2EE與J2SE應用程式相結合也可以單獨使用。Quartz可以用來調度十個,百個,甚至是幾萬個簡單或複雜的job,這些job可以是標準的Java組件或 EJBs。
技術實現要素:
本發明為了彌補現有技術的缺陷,提供了一種簡單高效的基於sqoop的數據抽取方法。
本發明是通過如下技術方案實現的:
一種基於sqoop的數據抽取方法,其特徵在於包括以下步驟:
(1)首先通過web界面配置sqoop任務,系統自動生成sqoop命令並存入資料庫;
(2)Sqoop任務配置好後有兩種選擇,可以選擇單擊按鈕,立即執行sqoop任務,也可以選擇通過界面配置定時器,系統生成定時規則,並啟用quartz定時器;
(3)當直接執行sqoop任務或定時器到時後,系統先讀取資料庫中的sqoop命令,然後通過ganymed遠程登錄到sqoop所在的Linux伺服器並執行sqoop命令,Sqoop命令的執行日誌由ganymed捕獲,並存入內存;
(4)任務執行界面每隔1秒讀取一次內存中的執行日誌,並實時顯示在界面上,同在linux命令行中的執行效果一致;
(5)Sqoop任務執行結束後,日誌存入資料庫供以後查看。
所述步驟(1)中,首先選擇關係數據源及數據表,並配置具體的sql語句對數據進行清洗、選擇,然後選擇大數據源,配置大數據源相應的參數,系統會根據界面的配置自動生成相應的sqoop命令並存入資料庫。
所述大數據源包括HDFS,HBase和Hive三種。
所述步驟(2)中,通過web界面選擇每天/星期幾/每月的某些天,然後填寫執行時刻,系統會自動生成相應的符合quartz定時器的cron表達式,quartz定時器根據cron表達式定時執行sqoop任務。
本發明的有益效果是:該基於sqoop的數據抽取方法,可以通過web界面統一配置,調度好查看sqoop任務,實現了關係資料庫與大數據集群的數據雙嚮導入導出功能,解決了雲計算技術不斷發展過程中多數據源數據的管理和維護難題,對於雲計算技術的發展和推廣具有重要意義,適宜推廣應用。
附圖說明
附圖1為本發明基於sqoop的數據抽取方法示意圖。
具體實施方式
為了使本發明所要解決的技術問題、技術方案及有益效果更加清楚明白,以下結合附圖和實施例,對本發明進行詳細的說明。應當說明的是,此處所描述的具體實施例僅用以解釋本發明,並不用於限定本發明。
該基於sqoop的數據抽取方法,包括以下步驟:
(1)首先通過web界面配置sqoop任務:
①選擇關係數據源(比如Oracle、MySql)及數據表;
②配置具體的sql語句對數據進行清洗、選擇(可選);
③選擇大數據源(HDFS、HBase、Hive三種);
④配置大數據源相應的參數,比如HDFS的路徑、Hive的表名等等。
系統會根據界面的配置自動生成相應的sqoop命令並存入資料庫,不需要懂sqoop就可以使用。也支持直接把寫好的sqoop命令填寫到界面裡。
(2)Sqoop任務配置好後有兩種選擇:可以直接執行此任務,也可以配置定時器,通過定時器定時調度sqoop任務。通過web界面選擇每天/星期幾/每月的某些天,然後填寫執行時刻,系統會自動生成相應的符合quartz的cron表達式,quartz根據cron表達式定時執行sqoop任務。
(3)當直接執行sqoop任務或定時器到時後,系統先讀取資料庫中的sqoop命令,然後通過ganymed遠程登錄到sqoop所在的linux伺服器上執行相應的sqoop命令。Sqoop命令的執行日誌由ganymed捕獲,並存入內存。
(4)任務執行界面每隔1秒讀取一次內存中的執行日誌,並實時顯示在界面上。同在linux命令行中的執行效果一致。
(5)Sqoop任務執行結束後,日誌存入資料庫供以後查看。