sqoop使用示例

sqoop

Sqoop是一款開源的工具,主要用於在HADOOP不傳統的數據庫(mysql、postgresql等)進行數據的傳遞,可以將一個關係型數據庫(例如:MySQL、Oracle、Postgres等)中的數據導進到Hadoop的HDFS中,也可以將HDFS的數據導進到關係型數據庫中。Sqoop中一大亮點就是可以通過hadoop的mapreduce把數據從關係型數據庫中導入數據到HDFS。

參數配置

1.使用參數
sqoop import --connect jdbc:mysql://localhost/db --username foo --table TEST
2.使用文件
sqoop --options-file /users/homer/work/import.txt --table TEST

import.txt如下:

import
--connect
jdbc:mysql://localhost/db
--username
foo

配置文件支持添加註釋

#
# Options file for Sqoop import
#
# Specifies the tool being invoked
import
# Connect parameter and value
--connect
jdbc:mysql://localhost/db
# Username parameter and value
--username
foo
#
# Remaining options should be specified in the command line.

數據導入

1.連接數據庫

連接

$ sqoop import --connect jdbc:mysql://database.example.com/employees

#添加用戶名和密碼配置
sqoop import --connect jdbc:mysql://localhost/db --username foo --table TEST

安全考慮可以把password放在文件裏

sqoop import --connect jdbc:mysql://database.example.com/employees \
--username venkatesh --password-file ${user.home}/.password

2.選擇導出數據

--table可以配置要導出的表

sqoop import --connect jdbc:mysql://localhost/db --username foo --table TEST

--columns 可以配置要導出的列名

--columns "name,employee_id,jobtitle"
 
 sqoop import --connect jdbc:mysql://localhost/db --username foo --password pwd --table user \
 --columns "name,id,age"

--where 設置選擇條件

--where "age > 400"
sqoop import --connect jdbc:mysql://localhost/db --username foo --password pwd --table user \
--where "age > 400"

3.使用sql語句

--query 和--target-dir一起使用

sqoop import --connect jdbc:mysql://localhost/db --username foo --password pwd\
--query 'SELECT a.*, b.* FROM a JOIN b on (a.id == b.id) WHERE $CONDITIONS' \
--split-by a.id --target-dir /user/foo/joinresults

-m [number] 設置map數量

#設置1個map
sqoop import --connect jdbc:mysql://localhost/db --username foo --password pwd\
--query 'SELECT a.*, b.* FROM a JOIN b on (a.id == b.id) WHERE $CONDITIONS' \
-m 1 --split-by a.id --target-dir /user/foo/joinresults

4.分隔取出的數據

--fields-terminated-by 設置字段之間的分隔符 --lines-terminated-by 設置每行之間的分隔符

sqoop import --connect jdbc:mysql://localhost/db --username foo --password pwd\
--fields-terminated-by "\0001"  --lines-terminated-by "\n";
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章