SQOOP入門
★ SQOOP入門
Sqoop提供的命令可以把RDMS管理的數據庫中的數據導入到HDFS中或者Hive倉庫中。
也提供了命令可以把HDFS中的數據導入到Mysql等REMS數據庫中。
★ SQOOP安裝
Sqoop依賴於Hadoop平臺的Hdfs存儲和MapReduce計算。
所以,安裝Sqoop之前,需要安裝好Hadoop。
1:解壓、設置環境變量略。
2:把Mysql的驅動jar包,放到$SQOOP_HOME/lib目錄下。
3:啓動Hadoop
4:進入$SQOOP_HOME/bin目錄下。執行下面的命令。
★ Mysql到HDFS存儲
1:--導出到多個文件中。把數據庫中的數據分散在多個文件中保存
sqoop import --connectjdbc:mysql://hadoop5:3306/test --username root --password root
--table persons --fields-terminated-by ',';
2:--導入到一個文件中,-m指定用一個Map。在不加 --apend的情況下,第二次執行該導入會提示HDFS中文件已存在。
sqoop import --connectjdbc:mysql://hadoop5:3306/test --username root --password root
--table persons --fields-terminated-by ','-m 1;
3:--每次執行,都會新創建一個文件。原來的HDFS中的文件還在HDFS中。
sqoop import --connectjdbc:mysql://hadoop5:3306/test --username root --password root
--table persons --fields-terminated-by ','-m 1 --append ;
★ Mysql到HIVE倉庫
1:--沒有用-m指定用一個Map。導出文件保存在了Hive倉庫中。保存到倉庫中幾個分散的文件中。
sqoop import --connectjdbc:mysql://hadoop5:3306/test --username root --password root
--table persons --fields-terminated-by',' --hive-import;
2:--導入到一個文件中,-m指定用一個Map。導出文件保存在了Hive倉庫中。每次執行都會把庫中的所有數據保存到一個新的Hive倉庫中的一個備份文件中。
sqoop import --connect jdbc:mysql://hadoop5:3306/test--username root --password root
--table persons --fields-terminated-by ','-m 1 --hive-import;
3:--導入到一個文件中,-m指定用一個Map。導出文件保存在了Hive倉庫中。每次保存都會在數據倉庫中保存一個新的備份。全部數據。
sqoop import --connectjdbc:mysql://hadoop5:3306/test --username root --password root
--table persons --fields-terminated-by ','-m 1 --hive-import --append;
4:--導入到一個文件中,-m指定用一個Map。導出文件保存在了Hive倉庫中。每次導出都會保存到一個單獨的文件中,保存的時候,只保存增量。如果沒有增量,則生成一個新文件。裏邊沒有內容。
sqoop import --connectjdbc:mysql://hadoop5:3306/test --username root --password root
--table persons --fields-terminated-by ','-m 1 --hive-import --append
--check-column 'id' --incremental append--last-value 6;
★ HDFS到Mysql
在數據庫中建表:
/*DDL 信息*/------------
CREATE TABLE `people` (
`id` int(10) NOT NULL,
`name` varchar(20) DEFAULT NULL,
`age` int(10) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
在HDFS中準備文件:
文件內容如下:
1,baidu,4
2,sohu,40
3,xiaomi,20
4,alibaba,108
5,taobao,29
6,tmall,32
導出數據到Mysql中剛纔建的表中
[root@hadoop5 bin]# pwd
/usr/local/sqoop/bin
執行命令:
sqoop export --connectjdbc:mysql://hadoop5:3306/test --username root --password root --table people --fields-terminated-by',' --export-dir '/exppersons'
上句命令表示:把HDFS中的文件內容導入到Mysql中。
導入文件位於/exppersons文件夾中。
導入到test數據庫中的people表中。要求表已經生成。
★ Sqoop的Job管理
創建一個新的Job:
sqoop job --create ajob -- import --connectjdbc:mysql://hadoop5:3306/test --username root --password root --table persons--fields-terminated-by ',' -m 1 --hive-import;
查看所有的可用的Job:
sqoop job --list
刪除一個Job
sqoop job --delete