您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“Linux下如何安裝并使用sqoop”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“Linux下如何安裝并使用sqoop”這篇文章吧。
sqoop它是一款開源的工具,主要用于在Hadoop(Hive)與傳統的數據庫(mysql、postgresql…)間進行數據的傳遞,可以將一個關系型數據庫(例如 : MySQL ,Oracle ,Postgres等)中的數據導進到Hadoop的HDFS中,也可以將HDFS的數據導進到關系型數據庫中。
tar -zxvf .tar.gz -C 目標目錄
mv sqoop-1.4.7.bin__hadoop-2.6.0/ sqoop-1.4.7
進入sqoop-1.4.7/conf路徑,重命名配置文件:
mv sqoop-env-template.sh sqoop-env.sh
修改sqoop-env.sh信息:(若配置了環境變量,可通過
echo $XXXXX_HOME
查詢安裝位置)
vi sqoop-env.sh
#Set path to where bin/hadoop is availableexport HADOOP_COMMON_HOME=Hadoop安裝路徑#Set path to where hadoop-*-core.jar is available#export HADOOP_MAPRED_HOME=Hadoop安裝路徑#set the path to where bin/hbase is available#export HBASE_HOME=HBase安裝路徑#Set the path to where bin/hive is available#export HIVE_HOME=Hive安裝路徑#Set the path for where zookeper config dir is#export ZOOCFGDIR=ZooKeeper 配置文件夾 路徑復制代碼
cp /XXX/hive/conf/hive-site.xml /XXX/sqoop-1.4.7/conf/
修改配置文件:
vi /etc/profile
增加以下內容:
export SQOOP_HOME=sqoop安裝路徑
export PATH=$PATH:$SQOOP_HOME/bin
聲明環境變量:
source /etc/profile
sqoop version
參數查看:Sqoop官網 -> documentation -> Sqoop User Guide
import
導入數據到集群
export
從集群導出數據
create-hive-table
創建hive表
import-all-tables
指定關系型數據庫所有表到集群
list-databases
列出所有數據庫
list-tables
列出所有數據庫表
merge
合并數據
codegen
獲取某張表數據生成JavaBean并打Jar包
功能:MySQL/Oracle –> HDFS/Hive
修改MySQL訪問權限:
update user set host='%' where host='localhost';
delete from user where Host='127.0.0.1';
delete from user where Host='bigdata01';
delete from user where Host='::1';
flush privileges;
use mysql;
select User, Host, Password from user;
操作命令:
FAILED: SemanticException [Error 10072]: Database does not exist: XXXXXXXX
cp /XXX/hive/conf/hive-site.xml /XXX/sqoop-1.4.7/conf/
ERROR tool.ImportTool: Import failed: org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory hdfs://bigdata01:9000/XXXXXXXXXX already exists
ERROR tool.ImportTool: Import failed: java.io.IOException: java.lang.ClassNotFoundException: org.apache.hadoop.hive.conf.HiveConf
source /etc/profile
export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$HIVE_HOME/lib/*
vi /etc/profile
sqoop import --connect jdbc:mysql://bigdata01:3306/數據庫名 --username root --password 密碼 --table 表名 --num-mappers 1 --hive-import --fields-terminated-by "\t" --hive-overwrite --hive-table hive數據庫名.表名
sqoop import
--connect jdbc:mysql://bigdata01:3306/數據庫名
# 連接MySQL --username root
# 用戶名 --password XXXXXX
# 密碼 --table 表名
# 上傳至HDFS的表 --target-dir /YYYYYYY
# HDFS目標文件夾 --num-mappers 1
# 指定map運行 --fields-terminated-by "\t"
# 指定分隔符hdfs dfs -cat /XXXXXXX/part-m-00000
sqoop import --connect jdbc:mysql://bigdata01:3306/數據庫名 --username root --password XXXXXX --table 表名 --target-dir /YYYYYYY --num-mappers 1 --fields-terminated-by "\t" --query 'select * from 表名 where 條件 and $CONDITIONS'
# $CONDITIONS 對mapper進行索引sqoop import --connect jdbc:mysql://bigdata01:3306/數據庫名 --username root --password XXXXXX --table 表名 --target-dir /YYYYYYY --num-mappers 1 --columns 字段名
功能:HDFS/Hive –> MySQL/Oracle
操作命令:
sqoop emport
--connect jdbc:mysql://bigdata01:3306/數據庫名
# 連接MySQL --username root
# 用戶名 --password XXXXXX
# 密碼 --table 表名
# 目標mysql表 --export-dir /user/hive/warehouse/YYYYYYY
# hive文件夾 --num-mappers 1
# 指定map運行 --input-fields-terminated-by "\t"
# 指定分隔符操作命令:
sqoop list-databases --connect jdbc:mysql://bigdata01:3306/ --username root --password 密碼
操作命令:
sqoop codegen --connect jdbc:mysql://bigdata01:3306/數據庫名 --username root --password 密碼 --table 表名
-- bindir Linux本地路徑
# 指定Jar包打包路徑 --class-name 類名
# 指定Java類名 --fields-terminated-by "\t"
操作命令:
sqoop merge
--new-data hdfs新表路徑 --onto hdfs舊表路徑
--target-dir /YYYYYYY
# 合并后的hdfs路徑 --jar-file =
# Linux本地Jar包路徑 --class-name XXXXX
# Jar包的類 --merge-key id
# 合并依據**注意:**merge操作是一個新表替代舊表的操作,如果有沖突id的話新表數據替換舊表數據,如果沒有沖突則是新表數據添加到舊表的數據。
以上是“Linux下如何安裝并使用sqoop”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。