Sqoop進行資料匯入匯出

來源:互聯網
上載者:User

Sqoop是用來進行資料匯入匯出的工具,一般用在hadoop這個架構中,常用的應用情境有將mysql資料庫中的資料匯入HDFS或者Hive、Hbase,或者從後者中匯出到關係型資料庫中,下面將進行幾段代碼的示範匯入和匯出的過程。


將mysql中的資料匯入到hadoop叢集上(HDFS):


首先將指令碼命令貼出:

./sqoop import --connect jdbc:mysql://localhost/test --username root --password lakers  --table persons -m 1


故名思議,

username:資料庫的使用者名稱

password:使用者名稱對應的密碼

table:資料中需要匯入的表名

-m :啟動mapreduce的個數。

這裡實現的是將一個表(test)的全部資料匯入到hdfs中,其中可以設定匯入到hdfs的路徑 通過參數--target-dir <dir>設定,其他的還有很多的參數設定可以通過去官網查看:http://sqoop.apache.org/docs/1.4.6/SqoopUserGuide.html#_importing_data_into_hive_2


將test表中的某些資料匯入到HDFS中:

./sqoop import --connect jdbc:mysql://localhost/test --username root --password lakers  --query 'select ID,name from persons where $CONDITIONS' --target-dir /persons -m 1



將mysql資料匯入Hive:


傳統地將mysql中的資料匯入hdfs有中方法就是:

1 將mysql資料匯出到本地

2 在Hive中建立表格式

3 將匯出在本地的資料匯入到Hive中

但是用了sqoop之後我們可以一步完成上面的操作。


首先將mysql的資料匯入到Hive上,其實也是匯入到hdfs上,但是有個好處是我們可以直接通過Hive去處理資料,得到我們想要的結果,下面的shell指令碼和上面的指令碼很相似。


./sqoop import --connect jdbc:mysql://localhost/test --username root --password lakers  --table persons -m 1 --hive-import



   這裡有個需要說明的是,我們將mysql資料匯入到Hive中的時候是不需要去建立表,在匯入處理程序中sqoop會自動解析資料,幫我們建立對應格式的表結構。這裡不得不說省了很大的功夫,畢竟建立表結構很麻煩的,尤其是表欄位很多的情況下。


和上面的區別就是最後加了--hive-import 同時也是可以通過參數來設定匯入的目錄,從官網查詢。


Mysql中資料匯入到HBase:


./sqoop import --connect jdbc:mysql://localhost/test --username root --password lakers  --table persons -m 1 --hbase-create-table --hbase-table person2 --column-family info --hbase-row-key sid


--hbase-create-table :自動建立hbase表

--hbase-table :表明

--column-family:列簇名

--hbase-row-key:指定rowkey對應Mysq中的鍵


  註:目前還不能直接將HBase中資料直接匯出到Mysql中,可以先匯出到本地,然後再匯入Mysql



將Hive中的資料匯出到mysql中:


./sqoop export --connect jdbc:mysql://localhost/test --username root --password lakers -m 1 --table personcopy --export-dir /hive/warehouse/persons --input-fields-terminated-by '\0001'



--export-dir:匯出資料的目錄

--input-fileds-terminated-by : 欄位之間的分割符


注意:

     這裡需要注意的是,我們在從mysql匯入Hive中的時候是不需要建立表結構的,但是我們在將Hive的資料匯出到Mysql中的時候是需要自己建立表結構的,很簡單的原因,比如我們Mysql 的一個varchar(50)或者varchar(60)這種會自動在Hive中解析為String類型,但是相反的是,將Hive中的String類型匯入到Mysql中就不知道是解析為varchar(。),所以在這個時候我們需要手動的去建立對應的表結構。




聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.