掃二維碼與項(xiàng)目經(jīng)理溝通
我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
sqoop它是一款開(kāi)源的工具,主要用于在Hadoop(Hive)與傳統(tǒng)的數(shù)據(jù)庫(kù)(mysql、postgresql…)間進(jìn)行數(shù)據(jù)的傳遞,可以將一個(gè)關(guān)系型數(shù)據(jù)庫(kù)(例如 : MySQL ,Oracle ,Postgres等)中的數(shù)據(jù)導(dǎo)進(jìn)到Hadoop的HDFS中,也可以將HDFS的數(shù)據(jù)導(dǎo)進(jìn)到關(guān)系型數(shù)據(jù)庫(kù)中。

在尉犁等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站制作、網(wǎng)站設(shè)計(jì) 網(wǎng)站設(shè)計(jì)制作按需網(wǎng)站設(shè)計(jì),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計(jì),全網(wǎng)整合營(yíng)銷推廣,外貿(mào)網(wǎng)站制作,尉犁網(wǎng)站建設(shè)費(fèi)用合理。
tar -zxvf .tar.gz -C 目標(biāo)目錄mv sqoop-1.4.7.bin__hadoop-2.6.0/ sqoop-1.4.7進(jìn)入sqoop-1.4.7/conf路徑,重命名配置文件:
mv sqoop-env-template.sh sqoop-env.sh修改sqoop-env.sh信息:(若配置了環(huán)境變量,可通過(guò)
echo $XXXXX_HOME
查詢安裝位置)
vi sqoop-env.sh
#Set path to where bin/hadoop is available
export 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 配置文件夾 路徑
復(fù)制代碼
cp /XXX/hive/conf/hive-site.xml /XXX/sqoop-1.4.7/conf/修改配置文件:
vi /etc/profile增加以下內(nèi)容:
export SQOOP_HOME=sqoop安裝路徑export PATH=$PATH:$SQOOP_HOME/bin聲明環(huán)境變量:
source /etc/profilesqoop version參數(shù)查看:Sqoop官網(wǎng) -> documentation -> Sqoop User Guide
import 導(dǎo)入數(shù)據(jù)到集群
export 從集群導(dǎo)出數(shù)據(jù)
create-hive-table 創(chuàng)建hive表
import-all-tables 指定關(guān)系型數(shù)據(jù)庫(kù)所有表到集群
list-databases 列出所有數(shù)據(jù)庫(kù)
list-tables 列出所有數(shù)據(jù)庫(kù)表
merge 合并數(shù)據(jù)
codegen 獲取某張表數(shù)據(jù)生成JavaBean并打Jar包
功能:MySQL/Oracle –> HDFS/Hive
修改MySQL訪問(wèn)權(quán)限:
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: XXXXXXXXcp /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 existsERROR tool.ImportTool: Import failed: java.io.IOException: java.lang.ClassNotFoundException: org.apache.hadoop.hive.conf.HiveConfsource /etc/profileexport HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$HIVE_HOME/lib/*vi /etc/profilesqoop import --connect jdbc:mysql://bigdata01:3306/數(shù)據(jù)庫(kù)名 --username root --password 密碼 --table 表名 --num-mappers 1 --hive-import --fields-terminated-by "\t" --hive-overwrite --hive-table hive數(shù)據(jù)庫(kù)名.表名sqoop import--connect jdbc:mysql://bigdata01:3306/數(shù)據(jù)庫(kù)名 # 連接MySQL--username root # 用戶名--password XXXXXX # 密碼--table 表名 # 上傳至HDFS的表--target-dir /YYYYYYY # HDFS目標(biāo)文件夾--num-mappers 1 # 指定map運(yùn)行--fields-terminated-by "\t" # 指定分隔符hdfs dfs -cat /XXXXXXX/part-m-00000sqoop import --connect jdbc:mysql://bigdata01:3306/數(shù)據(jù)庫(kù)名 --username root --password XXXXXX --table 表名 --target-dir /YYYYYYY --num-mappers 1 --fields-terminated-by "\t" --query 'select * from 表名 where 條件 and $CONDITIONS' # $CONDITIONS 對(duì)mapper進(jìn)行索引sqoop import --connect jdbc:mysql://bigdata01:3306/數(shù)據(jù)庫(kù)名 --username root --password XXXXXX --table 表名 --target-dir /YYYYYYY --num-mappers 1 --columns 字段名功能:HDFS/Hive –> MySQL/Oracle
操作命令:
sqoop emport--connect jdbc:mysql://bigdata01:3306/數(shù)據(jù)庫(kù)名 # 連接MySQL--username root # 用戶名--password XXXXXX # 密碼--table 表名 # 目標(biāo)mysql表--export-dir /user/hive/warehouse/YYYYYYY # hive文件夾--num-mappers 1 # 指定map運(yùn)行--input-fields-terminated-by "\t" # 指定分隔符操作命令:
sqoop list-databases --connect jdbc:mysql://bigdata01:3306/ --username root --password 密碼操作命令:
sqoop codegen --connect jdbc:mysql://bigdata01:3306/數(shù)據(jù)庫(kù)名 --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 # 合并依據(jù)**注意:**merge操作是一個(gè)新表替代舊表的操作,如果有沖突id的話新表數(shù)據(jù)替換舊表數(shù)據(jù),如果沒(méi)有沖突則是新表數(shù)據(jù)添加到舊表的數(shù)據(jù)。

我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流