Sqoop àì夳堔傛蜴生んèń 2023-02-21 06:21 25阅读 0赞 ### 文章目录 ### * 一、Sqoop简介 * 二、Sqoop安装 * 三、Sqoop导入数据 * * 3.1 RDBMS到HDFS * 3.2 RDBMS到Hive * 3.3 RDBMS到Hbase * 四、Sqoop导出数据 * 五、Sqoop脚本 # 一、Sqoop简介 # `Sqoop`是一款开源的工具,主要用于在`Hadoop`(`Hive`)与传统的数据库(`mysql`、`postgresql`…)间进行数据的传递,可以将一个关系型数据库(例如 : `MySQL` 、`Oracle`、`Postgres`等)中的数据导进到`Hadoop`的`HDFS`中,也可以将`HDFS`的数据导进到关系型数据库中。 `Sqoop`项目开始于2009年,最早是作为`Hadoop`的一个第三方模块存在,后来为了让使用者能够快速部署,也为了让开发人员能够更快速的迭代开发,`Sqoop`独立成为一个`Apache`项目。 `Sqoop2`的最新版本是1.99.7。请注意,2与1不兼容,且特征不完整,它并不打算用于生产部署。 `Sqoop`原理:将导入或导出命令翻译成`MapReduce`程序来实现。在翻译出的`MapReduce`中主要是对`InputFormat`和`OutputFormat`进行定制。 # 二、Sqoop安装 # 前提:具备`Java`和`Hadoop`的环境 1. 解压`sqoop`安装包到指定目录 [root@hadoop100 software]# tar -zxf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz -C \ /opt/module/ 1. 重命名`conf`目录下配置文件 [root@hadoop100 sqoop-1.4.6]# mv conf/sqoop-env-template.sh conf/sqoop-env.sh 1. 修改配置文件 [root@hadoop100 conf]# vi sqoop-env.sh export HADOOP_COMMON_HOME=/opt/module/hadoop-2.7.2 #Set path to where hadoop-*-core.jar is available export HADOOP_MAPRED_HOME=/opt/module/hadoop-2.7.2 #set the path to where bin/hbase is available export HBASE_HOME=/opt/module/hbase-1.3.1 #Set the path to where bin/hive is available export HIVE_HOME=/opt/module/hive-1.2.1 #Set the path for where zookeper config dir is export ZOOKEEPER_HOME=/opt/module/zookeeper-3.4.10 export ZOOCFGDIR=/opt/module/zookeeper-3.4.10 1. 拷贝`JDBC`驱动 [root@hadoop100 ~]# cp mysql-connector-java-5.1.27-bin.jar /opt/module/sqoop-1.4.6/lib/ 1. 验证`Sqoop` [root@hadoop100 sqoop-1.4.6]# bin/sqoop help 1. 测试`Sqoop`是否能够成功连接数据库 [root@hadoop100 sqoop-1.4.6]# bin/sqoop list-databases --connect \ jdbc:mysql://hadoop100:3306/ --username root --password 1234 # 三、Sqoop导入数据 # 在Sqoop中,“导入”概念指:从非大数据集群(RDBMS)向大数据集群(HDFS,HIVE,HBASE)中传输数据,叫做:导入,即使用import关键字。 ## 3.1 RDBMS到HDFS ## **①MySQL准备数据** root@a31252cb547b:/# mysql -u root -p Enter password: 1234 mysql> create database company; mysql> create table company.staff(id int(4) primary key not null auto_increment, \ name varchar(255), sex varchar(255)); mysql> insert into company.staff(name, sex) values('Thomas', 'Male'); mysql> insert into company.staff(name, sex) values('Catalina', 'FeMale'); **②全部导入** [root@hadoop100 sqoop-1.4.6]# bin/sqoop import \ --connect jdbc:mysql://hadoop100:3306/company \ --username root \ --password 1234 \ --table staff \ --target-dir /user/company \ --delete-target-dir \ --num-mappers 1 \ --fields-terminated-by "\t" **③查询导入** [root@hadoop100 sqoop-1.4.6]# bin/sqoop import \ --connect jdbc:mysql://hadoop100:3306/company \ --username root \ --password 1234 \ --target-dir /user/company \ --delete-target-dir \ --num-mappers 1 \ --fields-terminated-by "\t" \ --query 'select name,sex from staff where id <=1 and $CONDITIONS;' 提示:`must contain '$CONDITIONS' in WHERE clause.` 如果`query`后使用的是双引号,则`$CONDITIONS`前必须加转移符,防止`Shell`识别为自己的变量。 **④导入指定列** [root@hadoop100 sqoop-1.4.6]# bin/sqoop import \ --connect jdbc:mysql://hadoop100:3306/company \ --username root \ --password 1234 \ --target-dir /user/company \ --delete-target-dir \ --num-mappers 1 \ --fields-terminated-by "\t" \ --columns id,sex \ --table staff **⑤使用sqoop关键字筛选查询导入数据** [root@hadoop100 sqoop-1.4.6]# bin/sqoop import \ --connect jdbc:mysql://hadoop100:3306/company \ --username root \ --password 1234 \ --target-dir /user/company \ --delete-target-dir \ --num-mappers 1 \ --fields-terminated-by "\t" \ --table staff \ --where "id=1" ## 3.2 RDBMS到Hive ## [root@hadoop100 sqoop-1.4.6]# bin/sqoop import \ --connect jdbc:mysql://hadoop100:3306/company \ --username root \ --password 1234 \ --table staff \ --num-mappers 1 \ --hive-import \ --fields-terminated-by "\t" \ --hive-overwrite \ --hive-table staff_hive 提示:该过程分为两步,第一步将数据导入到`HDFS`,第二步将导入到`HDFS`的数据迁移到`Hive`仓库,第一步默认的临时目录是`/user/用户名/表名` ## 3.3 RDBMS到Hbase ## [root@hadoop100 sqoop-1.4.6]# bin/sqoop import \ --connect jdbc:mysql://hadoop100:3306/company \ --username root \ --password 1234 \ --table staff \ --columns "id,name,sex" \ --column-family "info" \ --hbase-create-table \ --hbase-row-key "id" \ --hbase-table "hbase_company" \ --num-mappers 1 \ --split-by id 提示:`sqoop1.4.6`只支持`HBase1.0.1`之前的版本的自动创建`HBase`表的功能 解决方案:手动创建`HBase`表,`hbase> create 'hbase_company','info'` # 四、Sqoop导出数据 # 在`Sqoop`中,“导出”概念指:从大数据集群(`HDFS`,`HIVE`,`HBASE`)向非大数据集群(`RDBMS`)中传输数据,叫做:导出,即使用export关键字。 [root@hadoop100 sqoop-1.4.6]# bin/sqoop export \ --connect jdbc:mysql://hadoop100:3306/company \ --username root \ --password 1234\ --table staff \ --num-mappers 1 \ --export-dir /user/hive/warehouse/staff_hive \ --input-fields-terminated-by "\t" 提示:`MySQL`中如果表不存在,不会自动创建 # 五、Sqoop脚本 # 使用`opt`格式的文件打包`sqoop`命令,然后执行 [root@hadoop100 sqoop-1.4.6]# mkdir opt [root@hadoop100 sqoop-1.4.6]# vim opt/job_HDFS2RDBMS.opt export --connect jdbc:mysql://hadoop100:3306/company --username root --password 1234 --table staff --num-mappers 1 --export-dir /user/hive/warehouse/staff_hive --input-fields-terminated-by "\t" [root@hadoop100 sqoop-1.4.6]# bin/sqoop --options-file opt/job_HDFS2RDBMS.opt
相关 Sqoop 一、Sqoop 1 官网 http://sqoop.apache.org/ 2 概述 1、用于结构化数据存储(如传统关系型数据库)和Ha... 小咪咪/ 2024年04月20日 08:37/ 0 赞/ 48 阅读
相关 Sqoop 1 Sqoop简介 Apache Sqoop(SQL-to-Hadoop)项目旨在协助RDBMS与Hadoop之间进行高效的大数据交流。用户可以在 Sqoop 谁践踏了优雅/ 2023年06月15日 09:52/ 0 赞/ 6 阅读
相关 Sqoop 文章目录 一、Sqoop简介 二、Sqoop安装 三、Sqoop导入数据 3.1 RDBMS到HDFS 3.2 RDBMS到H àì夳堔傛蜴生んèń/ 2023年02月21日 06:21/ 0 赞/ 26 阅读
相关 sqoop sqoop有什么用? sqoop 用来在Hadoop(Hive)与传统的数据库(mysql、postgresql…)间进行数据的传递 ----------------- 秒速五厘米/ 2022年06月06日 01:08/ 0 赞/ 219 阅读
相关 sqoop 笔记 ![Center][] ![Center 1][] ![Center 2][] ![Center 3][] ![Center 4][] ![C £神魔★判官ぃ/ 2022年06月04日 04:56/ 0 赞/ 513 阅读
相关 sqoop_使用 <table> <tbody> <tr> <td><p>命令</p></td> <td><p>说明</p></td> </tr> 一时失言乱红尘/ 2022年05月25日 08:48/ 0 赞/ 193 阅读
相关 Sqoop Sqoop的基本原理和相关参数配置: 简介 Sqoop(发音:skup)是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql、postgre 心已赠人/ 2022年04月25日 01:46/ 0 赞/ 224 阅读
相关 Sqoop Sqoop优化 参考这个https://blog.csdn.net/u010185220/article/details/79085119 如何判断读取的数据是否完整?可 柔情只为你懂/ 2022年03月15日 02:24/ 0 赞/ 249 阅读
相关 Hadoop Sqoop 一、概述: Sqoop是一款开源的工具,主要用于在Hadoop(如Hive、HDFS)与传统的数据库(mysql、Oracle ...)间进行数据的传递,可以将一个关系型数据 古城微笑少年丶/ 2022年01月17日 04:17/ 0 赞/ 244 阅读
相关 Sqoop sqoop flume数据采集 采集日志数据 sqoop数据迁移 hdfs->mysql azkaban任务调度 flume->hdfs->shell->hive- 矫情吗;*/ 2021年12月03日 07:01/ 0 赞/ 295 阅读
还没有评论,来说两句吧...