您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“Sqoop有什么用”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“Sqoop有什么用”這篇文章吧。
Sqoop是一款開源的大數(shù)據(jù)組件,主要用來在Hadoop(Hive、HBase等)與傳統(tǒng)的數(shù)據(jù)庫(mysql、postgresql、oracle等)間進行數(shù)據(jù)的傳遞。
通常數(shù)據(jù)搬運的組件基本功能:導(dǎo)入與導(dǎo)出。
鑒于Sqoop是大數(shù)據(jù)技術(shù)體系的組件,所以關(guān)系型數(shù)據(jù)庫導(dǎo)入Hadoop存儲系統(tǒng)稱為導(dǎo)入,反過來稱為導(dǎo)出。
Sqoop是一個命令行的組件工具,將導(dǎo)入或?qū)С雒钷D(zhuǎn)換成mapreduce程序來實現(xiàn)。mapreduce中主要是對inputformat和outputformat進行定制。
在測試Sqoop組件的時候,起碼要具備Hadoop系列、關(guān)系型數(shù)據(jù)、JDK等基礎(chǔ)環(huán)境。
鑒于Sqoop是工具類組件,單節(jié)點安裝即可。
安裝包和版本:sqoop-1.4.6
[root@hop01 opt]# tar -zxf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz [root@hop01 opt]# mv sqoop-1.4.6.bin__hadoop-2.0.4-alpha sqoop1.4.6
文件位置:sqoop1.4.6/conf
[root@hop01 conf]# pwd /opt/sqoop1.4.6/conf [root@hop01 conf]# mv sqoop-env-template.sh sqoop-env.sh
配置內(nèi)容:涉及hadoop系列常用組件和調(diào)度組件zookeeper。
[root@hop01 conf]# vim sqoop-env.sh # 配置內(nèi)容 export HADOOP_COMMON_HOME=/opt/hadoop2.7 export HADOOP_MAPRED_HOME=/opt/hadoop2.7 export HIVE_HOME=/opt/hive1.2 export HBASE_HOME=/opt/hbase-1.3.1 export ZOOKEEPER_HOME=/opt/zookeeper3.4 export ZOOCFGDIR=/opt/zookeeper3.4
[root@hop01 opt]# vim /etc/profile export SQOOP_HOME=/opt/sqoop1.4.6 export PATH=$PATH:$SQOOP_HOME/bin [root@hop01 opt]# source /etc/profile
[root@hop01 opt]# cp mysql-connector-java-5.1.27-bin.jar sqoop1.4.6/lib/
關(guān)鍵點:import與export
查看幫助命令,并通過version查看版本號。sqoop是一個基于命令行操作的工具,所以這里的命令下面還要使用。
此時看下sqoop部署節(jié)點中的相關(guān)環(huán)境,基本都是集群模式:
sqoop list-databases --connect jdbc:mysql://hop01:3306/ --username root --password 123456
這里是查看MySQL數(shù)據(jù)庫的命令,如圖結(jié)果打印正確:
CREATE TABLE `tb_user` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主鍵id', `user_name` varchar(100) DEFAULT NULL COMMENT '用戶名', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用戶表'; INSERT INTO `sq_import`.`tb_user`(`id`, `user_name`) VALUES (1, 'spring'); INSERT INTO `sq_import`.`tb_user`(`id`, `user_name`) VALUES (2, 'c++'); INSERT INTO `sq_import`.`tb_user`(`id`, `user_name`) VALUES (3, 'java');
指定數(shù)據(jù)庫的表,全量導(dǎo)入Hadoop系統(tǒng),注意這里要啟動Hadoop服務(wù);
sqoop import --connect jdbc:mysql://hop01:3306/sq_import \ --username root \ --password 123456 \ --table tb_user \ --target-dir /hopdir/user/tbuser0 \ -m 1
[root@hop01 ~]# hadoop fs -cat /hopdir/user/tbuser0/part-m-00000
查詢的SQL語句中必須帶有WHERE$CONDITIONS:
sqoop import --connect jdbc:mysql://hop01:3306/sq_import \ --username root \ --password 123456 \ --target-dir /hopdir/user/tbname0 \ --num-mappers 1 \ --query 'select user_name from tb_user where 1=1 and $CONDITIONS;'
查看導(dǎo)出結(jié)果:
[root@hop01 ~]# hadoop fs -cat /hopdir/user/tbname0/part-m-00000
在不指定hive使用的數(shù)據(jù)庫情況下,默認(rèn)導(dǎo)入default庫,并且自動創(chuàng)建表名稱:
sqoop import --connect jdbc:mysql://hop01:3306/sq_import \ --username root \ --password 123456 \ --table tb_user \ --hive-import \ -m 1
執(zhí)行過程,這里注意觀察sqoop的執(zhí)行日志即可:
第一步:MySQL的數(shù)據(jù)導(dǎo)入到HDFS的默認(rèn)路徑下;
第二步:把臨時目錄中的數(shù)據(jù)遷移到hive表中;
當(dāng)前hbase的集群版本是1.3,需要先創(chuàng)建好表,才能正常執(zhí)行數(shù)據(jù)導(dǎo)入:
sqoop import --connect jdbc:mysql://hop01:3306/sq_import \ --username root \ --password 123456 \ --table tb_user \ --columns "id,user_name" \ --column-family "info" \ --hbase-table tb_user \ --hbase-row-key id \ --split-by id
查看HBase中表數(shù)據(jù):
新建一個MySQL數(shù)據(jù)庫和表,然后把HDFS中的數(shù)據(jù)導(dǎo)出到MySQL中,這里就使用第一個導(dǎo)入腳本生成的數(shù)據(jù)即可:
sqoop export --connect jdbc:mysql://hop01:3306/sq_export \ --username root \ --password 123456 \ --table tb_user \ --num-mappers 1 \ --export-dir /hopdir/user/tbuser0/part-m-00000 \ --num-mappers 1 \ --input-fields-terminated-by ","
再次查看MySQL中數(shù)據(jù),記錄完全被導(dǎo)出來,這里,
是每個數(shù)據(jù)字段間的分隔符號,語法規(guī)則對照腳本一HDFS數(shù)據(jù)查詢結(jié)果即可。
以上是“Sqoop有什么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。