Sqoop使用簡要介紹

有用麻煩點個贊哦

簡介

關鍵詞 sqoop = sql to hadoop
Sqoop 是一款開源的工具,主要用於在 Hadoop(Hive)與傳統的數據庫(mysql、postgresql…)
間進行數據的傳遞,可以將一個關係型數據庫(例如 : MySQL ,Oracle ,Postgres 等)中的
數據導進到 Hadoop 的 HDFS 中,也可以將 HDFS 的數據導進到關係型數據庫中。 Sqoop2 的最新版本是 1.99.7。請注意,2 與 1 不兼容,且特徵不完整,它並不打算用於生產部署。

Sqoop 原理

將導入或導出命令翻譯成 mapreduce 程序來實現。
在翻譯出的 mapreduce 中主要是對 inputformat 和 outputformat 進行定製。

安裝

下載、解壓、配置環境

環境:具備Java 和 hadoop
下載地址:http://mirrors.hust.edu.cn/apache/sqoop/1.4.6/

修改目錄、配置

mv sqoop-env-template.sh sqoop-env.sh 
 
vim sqoop-env.sh

export HADOOP_COMMON_HOME=hadoop地址
export HADOOP_MAPRED_HOME=hadoop地址
export HIVE_HOME=hive地址
export ZOOKEEPER_HOME=zookeeper地址
export ZOOCFGDIR=zookeeper地址
export HBASE_HOME=hbase地址 

拷貝JDBC驅動

cp mysql-connector-java-5.1.27-bin.jar /opt/module/sqoop-1.4.6.bin__hadoop-2.0.4-alpha/lib/ 

測試

#測試是否安裝成功
bin/sqoop help
#測試是否能連接數據庫
bin/sqoop list-databases --connect jdbc:mysql:ip:端口號3306 --username 用戶名 --password 密碼

簡單使用

導入數據

在 Sqoop 中,“導入”概念指:從非大數據集羣(RDBMS)向大數據集羣(HDFS,HIVE,HBASE)中傳輸數據,叫做:導入,即使用 import 關鍵字
例子

$ bin/sqoop import \ 
--connect jdbc:mysql://安裝mysql的主機IP地址:3306/company \ 
--username 用戶名 \ --password ,密碼\ 
--target-dir /user/company \ --delete-target-dir \ 
--num-mappers 1 \ --fields-terminated-by "\t" \ 
--query 'select name,sex from staff where id <=1 and $CONDITIONS;' 

提示:must contain ‘$ CONDITIONS’ in WHERE clause.
如果 query 後使用的是雙引號,則$CONDITIONS 前必須加轉移符,防止 shell 識別爲自己的
變量。

導出數據

在 Sqoop 中,“導出”概念指:從大數據集羣(HDFS,HIVE,HBASE)向非大數據集羣(RDBMS)中傳輸數據,叫做:導出,即使用 export 關鍵字。 如果mysql表不存在不會自動創建

$ bin/sqoop export \
--connect jdbc:mysql://安裝mysql的主機ip地址:3306/company \ 
--username 用戶名\ 
--password 密碼\
--table staff \ 
--num-mappers 1 \ 
--export-dir /user/hive/warehouse/staff_hive \ 
--input-fields-terminated-by "\t" 

腳本打包

創建一個.opt文件,寫入命令
bin/sqoop --options-file opt文件

有用麻煩點個贊哦

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章