日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数据搬运组件:基于Sqoop管理数据导入和导出

發布時間:2025/3/16 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据搬运组件:基于Sqoop管理数据导入和导出 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、Sqoop概述

Sqoop是一款開源的大數據組件,主要用來在Hadoop(Hive、HBase等)與傳統的數據庫(mysql、postgresql、oracle等)間進行數據的傳遞。

通常數據搬運的組件基本功能:導入與導出。

鑒于Sqoop是大數據技術體系的組件,所以關系型數據庫導入Hadoop存儲系統稱為導入,反過來稱為導出。

Sqoop是一個命令行的組件工具,將導入或導出命令轉換成mapreduce程序來實現。mapreduce中主要是對inputformat和outputformat進行定制。

二、環境部署

在測試Sqoop組件的時候,起碼要具備Hadoop系列、關系型數據、JDK等基礎環境。

鑒于Sqoop是工具類組件,單節點安裝即可。

1、上傳安裝包

安裝包和版本: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

2、修改配置文件

文件位置:sqoop1.4.6/conf

[root@hop01 conf]# pwd /opt/sqoop1.4.6/conf [root@hop01 conf]# mv sqoop-env-template.sh sqoop-env.sh

配置內容:涉及hadoop系列常用組件和調度組件zookeeper。

[root@hop01 conf]# vim sqoop-env.sh # 配置內容 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

3、配置環境變量

[root@hop01 opt]# vim /etc/profileexport SQOOP_HOME=/opt/sqoop1.4.6 export PATH=$PATH:$SQOOP_HOME/bin[root@hop01 opt]# source /etc/profile

4、引入MySQL驅動

[root@hop01 opt]# cp mysql-connector-java-5.1.27-bin.jar sqoop1.4.6/lib/

5、環境檢查

關鍵點:import與export

查看幫助命令,并通過version查看版本號。sqoop是一個基于命令行操作的工具,所以這里的命令下面還要使用。

6、相關環境

此時看下sqoop部署節點中的相關環境,基本都是集群模式:

7、測試MySQL連接

sqoop list-databases --connect jdbc:mysql://hop01:3306/ --username root --password 123456

這里是查看MySQL數據庫的命令,如圖結果打印正確:

三、數據導入案例

1、MySQL數據腳本

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');

2、Sqoop導入腳本

指定數據庫的表,全量導入Hadoop系統,注意這里要啟動Hadoop服務;

sqoop import --connect jdbc:mysql://hop01:3306/sq_import \ --username root \ --password 123456 \ --table tb_user \ --target-dir /hopdir/user/tbuser0 \ -m 1

3、Hadoop查詢

[root@hop01 ~]# hadoop fs -cat /hopdir/user/tbuser0/part-m-00000

4、指定列和條件

查詢的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;'

查看導出結果:

[root@hop01 ~]# hadoop fs -cat /hopdir/user/tbname0/part-m-00000

5、導入Hive組件

在不指定hive使用的數據庫情況下,默認導入default庫,并且自動創建表名稱:

sqoop import --connect jdbc:mysql://hop01:3306/sq_import \ --username root \ --password 123456 \ --table tb_user \ --hive-import \ -m 1

執行過程,這里注意觀察sqoop的執行日志即可:

第一步:MySQL的數據導入到HDFS的默認路徑下;

第二步:把臨時目錄中的數據遷移到hive表中;

6、導入HBase組件

當前hbase的集群版本是1.3,需要先創建好表,才能正常執行數據導入:

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中表數據:

四、數據導出案例

新建一個MySQL數據庫和表,然后把HDFS中的數據導出到MySQL中,這里就使用第一個導入腳本生成的數據即可:

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中數據,記錄完全被導出來,這里,是每個數據字段間的分隔符號,語法規則對照腳本一HDFS數據查詢結果即可。

五、源代碼地址

GitHub·地址 https://github.com/cicadasmile/big-data-parent GitEE·地址 https://gitee.com/cicadasmile/big-data-parent

閱讀標簽

【Java基礎】【設計模式】【結構與算法】【Linux系統】【數據庫】

【分布式架構】【微服務】【大數據組件】【SpringBoot進階】【Spring&Boot基礎】

【數據分析】【技術導圖】【 職場】

總結

以上是生活随笔為你收集整理的数据搬运组件:基于Sqoop管理数据导入和导出的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。