Sqoop導入導出的幾個例子
node2
Sqoop參數介紹_其他命令_導入導出
導入
例一:從DBMS到HDFS
1.node4下啟動mysql
service mysqld start
mysql -u root -p
輸入密碼:123
2.node4下創建test數據庫
create database test;
創建psn表

3.
node2中創建sqoop_test,編輯sqoop1

import
--connect
jdbc:mysql://node4/test
--username
root
--password
123
--as-textfile
--columns
id,name,msg
--table
psn
--delete-target-dir
--target-dir
/sqoop/data
-m
1
4.執行命令--從DBMS導入到HDFS
sqoop --options-file sqoop1//選項使用腳本
sqoop --options-file sqoop1




例二:從DBMS到Hive

注意!
$CONDITIONS規定

/sqoop/tmp先將數據導入hdfs的臨時目錄,再將數據導入hive的目錄
1.node4下啟動mysql
service mysqld start
mysql -u root -p
輸入密碼:123
2.node4下創建test數據庫
create database test;
創建psn表

3.
node2中創建sqoop_test,編輯sqoop2

-e,--query和--table兩個選項是沖突的,因為一個是指定單表,一個是指定多表的導入;
--warehouse-dir指定導入到hive中的時候到底從哪個目錄下面導入;這個選項和hive中的warehouse-dir
配置項很像;
--hive-home指定hive的安裝目錄,如果節點上面配置了環境變量,並且導入了需要的jar包,那么就不需要
指定了;
sqoop將關系型數據庫中的數據導入到hive中去的話,首先需要將數據導入到hdfs上面,因此需要先指定
hdfs上面一個臨時存儲這些數據的目錄,然后才會把hdfs上面的數據導入到hive中去;也就是首先使用mr
到hdfs上面,然后在創建hive的表;可以再打開一個終端,查看hive中的表創建的情況;創建的時候
首先在mysql通過查看表字段,然后在hive中創建;
我們沒有指定hive表存放在什么位置。這個位置是由
hive的配置文件指定的,需要在那個位置查看;
import
--connect
jdbc:mysql://node4/test
--username
root
--password
123
--as-textfile
--query
'select id, name, msg from psn where id like "1%" and $CONDITIONS'
--delete-target-dir
-target-dir
/sqoop/tmp
-m
1
--hive-home
/home/hive-1.2.1
--hive-import
--create-hive-table
--hive-table
t_test
4.執行命令--從DBMS導入到Hive
先啟動hive服務端node2: hive --service metastore
再啟動hive客戶端node1:
hive
sqoop --options-file sqoop2


node1查看表t_test是否生成


導出
例三:從HDFS到DBMS

指定HDFS中數據對應的目錄
1.node4下啟動mysql
service mysqld start
mysql -u root -p
輸入密碼:123
2.node4下創建test數據庫
create database test;
創建h_psn表

3.
node2中創建sqoop_test,編輯sqoop3

export
--connect
jdbc:mysql://node4/test
--username
root
--password
123
-m
1
--columns
id,name,msg
--export-dir
/sqoop/data
--table
h_psn
4.執行sqoop命令


查看mysql中的表,看數據是否導入

例四:從Hive到DBMS

附件列表