Sqoop的安裝與使用詳細(xì)教程
本文我們介紹一個(gè)非常好用的數(shù)據(jù)傳輸工具——Sqoop。Sqoop是一款開源的工具,主要用于在Hadoop與傳統(tǒng)數(shù)據(jù)庫間進(jìn)行數(shù)據(jù)的傳遞,可以將一個(gè)關(guān)系型數(shù)據(jù)庫(例如:MySQL,Oracle,Postgres等)中的數(shù)據(jù)導(dǎo)進(jìn)到Hadoop的HDFS中,也可以將HDFS的數(shù)據(jù)導(dǎo)進(jìn)到關(guān)系型數(shù)據(jù)庫中。Sqoop項(xiàng)目開始于2009年,最早是作為Hadoop的一個(gè)第三方模塊存在,后來為了讓使用者能夠快速部署,也為了讓開發(fā)人員能夠更快速的迭代開發(fā),Sqoop獨(dú)立成為一個(gè)Apache項(xiàng)目。關(guān)注專欄《破繭成蝶——大數(shù)據(jù)篇》,查看更多相關(guān)的內(nèi)容~
一、Sqoop的安裝
1.1 下載上傳安裝包
1、首先下載安裝包,點(diǎn)擊此處進(jìn)行下載。
2、將下載的安裝包上傳到集群中,解壓到相關(guān)目錄并重命名。
tar -zxvf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz -C ../modules/ mv sqoop-1.4.6.bin__hadoop-2.0.4-alpha sqoop
1.2 修改配置文件
1、首先重命名sqoop-env-template.sh文件
[root@master conf]# mv sqoop-env-template.sh sqoop-env.sh
2、在sqoop-env.sh中添加各組件的路徑
export HADOOP_COMMON_HOME=/opt/modules/hadoop-2.7.2 export HADOOP_MAPRED_HOME=/opt/modules/hadoop-2.7.2 export HIVE_HOME=/opt/modules/hive export ZOOKEEPER_HOME=/opt/modules/zookeeper-3.4.10 export ZOOCFGDIR=/opt/modules/zookeeper-3.4.10 export HBASE_HOME=/opt/modules/hbase
1.3 拷貝JDBC驅(qū)動(dòng)
拷貝MySQL的驅(qū)動(dòng)包到Sqoop的lib目錄下:
[root@master software]# cp ./mysql-connector-java-5.1.47.jar /opt/modules/sqoop/lib/
1.4 驗(yàn)證Sqoop是否安裝成功
bin/sqoop help
出現(xiàn)上圖的內(nèi)容說明安裝成功。
二、Sqoop的導(dǎo)入導(dǎo)出
2.1 測試連接數(shù)據(jù)庫
bin/sqoop list-databases --connect jdbc:mysql://master:3306/ --username root --password p@ssw0rd
2.2 MySQL導(dǎo)入數(shù)據(jù)到HDFS
1、首先在MySQL數(shù)據(jù)庫(xzw)中新建一張people表,如下所示:
create table people(id int(4) primary key not null auto_increment, name varchar(255), sex varchar(255)); insert into people(name, sex) values('xzw', 'Male'); insert into people(name, sex) values('fq', 'FeMale');
2、全量導(dǎo)入
bin/sqoop import \ --connect jdbc:mysql://master:3306/xzw \ --username root \ --password p@ssw0rd \ --table people \ --target-dir /user/sqoop/people \ --delete-target-dir \ --num-mappers 1 \ --fields-terminated-by ","
使用如下命令查看導(dǎo)入的結(jié)果:
3、查詢導(dǎo)入
bin/sqoop import \ --connect jdbc:mysql://master:3306/xzw \ --username root \ --password p@ssw0rd \ --target-dir /user/sqoop/people \ --delete-target-dir \ --num-mappers 1 \ --fields-terminated-by "," \ --query 'select name,sex from people where id <=1 and $CONDITIONS;'
查看導(dǎo)入結(jié)果:
這里需要注意的是,如果query后使用的是雙引號(hào),則$CONDITIONS前必須加轉(zhuǎn)義符\,防止shell識(shí)別為自己的變量。如果使用的是單引號(hào),則不需要加。
4、導(dǎo)入指定列
bin/sqoop import \ --connect jdbc:mysql://master:3306/xzw \ --username root \ --password p@ssw0rd \ --target-dir /user/sqoop/people \ --delete-target-dir \ --num-mappers 1 \ --fields-terminated-by "," \ --columns id,sex \ --table people
查看結(jié)果:
這里需要注意的是,columns中如果涉及到多列,用逗號(hào)分隔,分隔時(shí)不要添加空格。
5、使用sqoop關(guān)鍵字篩選查詢導(dǎo)入數(shù)據(jù)
bin/sqoop import \ --connect jdbc:mysql://master:3306/xzw \ --username root \ --password p@ssw0rd \ --target-dir /user/sqoop/people \ --delete-target-dir \ --num-mappers 1 \ --fields-terminated-by "," \ --table people \ --where "id=1"
查看結(jié)果:
2.3 MySQL導(dǎo)入數(shù)據(jù)到Hive
bin/sqoop import \ --connect jdbc:mysql://master:3306/xzw \ --username root \ --password p@ssw0rd \ --table people \ --num-mappers 1 \ --hive-import \ --fields-terminated-by "," \ --hive-overwrite \ --hive-table hive_people
該過程分為兩步,第一步將數(shù)據(jù)導(dǎo)入到HDFS,第二步將導(dǎo)入到HDFS的數(shù)據(jù)遷移到Hive倉庫。這里需要注意的是,Hive中的表不需要提前創(chuàng)建,Sqoop會(huì)在導(dǎo)數(shù)據(jù)的過程中自動(dòng)創(chuàng)建表。
2.4 MySQL導(dǎo)入數(shù)據(jù)到HBase
bin/sqoop import \ --connect jdbc:mysql://master:3306/xzw \ --username root \ --password p@ssw0rd \ --table people \ --columns "id,name,sex" \ --column-family "info" \ --hbase-create-table \ --hbase-row-key "id" \ --hbase-table "hbase_people" \ --num-mappers 1 \ --split-by id
這里需要注意的是,需要提前將HBase表建好:
create 'hbase_people','info'
2.5 HDFS導(dǎo)出數(shù)據(jù)到MySQL
bin/sqoop export \ --connect jdbc:mysql://master:3306/xzw \ --username root \ --password p@ssw0rd \ --table people \ --num-mappers 1 \ --export-dir /user/sqoop/people \ --input-fields-terminated-by ","
這里需要注意的是,如果MySQL中不存在表,不會(huì)自動(dòng)創(chuàng)建,簡言之就是在執(zhí)行導(dǎo)出之前需要在MySQL中創(chuàng)建好表。
三、Sqoop腳本打包
我們使用opt格式的文件打包Sqoop命令,然后執(zhí)行,具體如下。
首先在Sqoop的安裝目錄新建目錄opt,并編寫腳本如下:
export --connect jdbc:mysql://master:3306/xzw --username root --password p@ssw0rd --table people --num-mappers 1 --export-dir /user/sqoop/people --input-fields-terminated-by ","
然后使用如下命令執(zhí)行腳本:
bin/sqoop --options-file opt/HDFSToMySQL.opt
到此這篇關(guān)于Sqoop的安裝與使用詳細(xì)教程的文章就介紹到這了,更多相關(guān)Sqoop安裝與使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
到此這篇關(guān)于Sqoop的安裝與使用詳細(xì)教程的文章就介紹到這了,更多相關(guān)Sqoop安裝與使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Eclipse 誤刪文件的恢復(fù)與代碼的恢復(fù)詳解
這篇文章主要介紹了Eclipse 誤刪文件的恢復(fù),代碼的恢復(fù)的相關(guān)資料,需要的朋友可以參考下2016-09-09淺談架構(gòu)模式變遷之從分層架構(gòu)到微服務(wù)架構(gòu)
一般地,架構(gòu)模式大致可以分成兩類,單體架構(gòu)(monolithic architecture)和分布式架構(gòu)(distributed architecture)。2021-05-05詳解Python OpenCV數(shù)字識(shí)別案例
信用卡識(shí)別的案例用到了圖像處理的一些基本操作,對(duì)剛上手CV的人來說還是比較友好的。2021-05-05