企业级数据迁移(sqoop建议收藏)

数据导出/迁移的概念

         在做数据导出之前,我们看一下已经完成的操作:数据分析阶段将指标统计完成,也将统计完成的指标放到Hive数据表中,并且指标数据存储到HDFS分布式文件存储系统。

         指标统计完成之后,我们最终是想将我们的指标数据做成可视化大屏进行展示,Hive中的数据无法、很难直接连接到JavaWeb或者EE技术直接进行数据展示。 因此我们需要将Hive中统计出来的数据指标表迁移到我们的MySQL数据库中,由MySQL数据库连接web技术进行可视化展示。

Hive数仓指标表的数据都存储在HDFS分布式文件存储系统,如果想要将Hive的数据导出,有以下几种导出方式:
(1)使用insert命令导出数据到一个目录
(2)HDFS的相关命令:hdfs dfs -get/-move/-copyToLocalFile,将Hive数仓的数据导出到本地的文件中
(3)hive -e 和重定向 >> 命令将数据导出到一个文件中
(4)使用hive自带的export命令导出数据到一个文件夹中(主要做数据仓库的迁移 )
(5)第三方软件技术sqoop技术实现数据迁移,实现将Hive数仓中的数据迁移到MySQL中

数据迁移技术SQOOP

一、SQOOP技术的相关概念

         (1) sqoop技术也是apache的顶尖项目,主要是做数据迁移的。

         (2)sqoop是将数据在Hadoop和关系型数据库之间的数据传递,基于MapReduce完成。核心是对MR程序的InputFormat和OutputFormat进行定制。

         (3)sqoop也是使用命令进行数据的导入和导出的,只不过底层也是会翻译成为MR程序执行。

二、sqoop中两个核心概念

         导入:将关系型数据库表数据(比如MySQL)中表数据导入到大数据集群(比如Hive、HBase、HDFS)

         导出:将大数据集群的数据(Hive、HBase、HDFS数据)导出到非大数据集群的关系型数据库,比如MySQL

三、SQOOP的安装

         sqoop软件是基于Java和Hadoop的,所以必须先把Java和Hadoop软件配置好。

1、首先下载上传解压sqoop、再配置sqoop的相关配置文件。

    配置的sqoop配置文件是sqoop-env.sh,重点需要配置Hadoop的相关依赖环境:
    export HADOOP_COMMON_HOME=/opt/module/hadoop-2.8.5
    export HADOOP_MAPRED_HOME=/opt/module/hadoop-2.8.5
    export HIVE_HOME=/opt/module/hive-2.3.8
 sqoop可以实现将Hive、HBase中表数据导出到MySQL数据库中,需要sqoop具备连接MySQL的条件——mysql-connector-java-xxxx.jar(需要把此jar包放在sqoop下)
 cp /opt/module/hive-2.3.8/lib/mysql-connector-java-5.1.27.jar /opt/module/sqoop-1.4.7/lib/

2、配置sqoop的环境变量(vim /etc/profile)

四、SQOOP的使用

1、检测sqoop是否安装成功
sqoop help
sqoop version

sqoop可以用来查看某个数据库管理系统中有哪些数据库存在

2、sqoop查看MySQL数据库中有哪些数据库存在
sqoop list-databases --connect jdbc:mysql://localhost:3306 --username root --password root
list-databases代表查看所有数据库,connect代表连接哪个数据库,username代表连接数据库的用户名,password代表连接数据库密码。
这个命令执行成功的前提条件是:你已经将对应数据库的驱动jar包放到了sqoop的lib目录下。

五、sqoop实现将MySQL数据导入到Hive数据仓库

【注意】需要将hive的相关jar包放到sqoop环境下

cp /opt/module/hive-2.3.8/lib/hive-common-2.3.8.jar /opt/module/sqoop-1.4.7/lib/

将MySQL中test数据库下的test表数据导入到Hive数据仓库中。

sqoop import #导入
–connect jdbc:mysql://localhost:3306/test # 连接MySQL的那个数据库
–username root #连接MySQL的用户名
–password root #连接MySQL的密码
–table test # 指定MySQL要向Hive数据仓库导入当前数据下那张数据表的数据
–num-mappers 1 # 将导入任务转成MR程序运行 需要一个Map任务
–hive-import # 将数据导入到hive数仓
–fields-terminated-by “\t” #指定hive数仓导入完成之后表字段之间分隔符
–hive-overwrite # 表中有数据 覆盖写
–hive-table 数据库名.表名 # 导入到Hive的那个表中 表可以不存在 会自动创建

sqoop import --connect jdbc:mysql://localhost:3306/test --username root --password root --table test --num-mappers 1 --hive-import --fields-terminated-by “\t” --hive-overwrite --hive-table 数据库名.表名

将MySQL表中数据导入到Hive数仓的时候,hive数据仓库中表可以不用提前存在,会自动创建。

六、sqoop实现将Hive/HDFS数据导入到MySQL数据表中

         sqoop的导入分为:将数据导入到HDFS和将数据导入到Hive数仓,或者其他。每种导入方式不一样。

         sqoop的导出只有一种命令,就是将Hive/HDFS数据导出到Mysql中。因为hive存储的表数据也在HDFS上存储着,所以HDFS的导出和Hive的导出命令一致的。

案例:实现项目功能,将age_pvs的数据导出到MySQL数据库中。

         将MySQL数据导入到hive表中,hive表可以不用提前存在,但是如果要将Hive数据表的数据导入到MySQL中,那么MySQL中对应的表必须提前存在,并且和hive表结构保持一致。

导出命令:
sqoop export # 导出数据
–connect jdbc:mysql://localhost:3306/project #连接MySQL数据库
–username root #连接用户名
–password 123456 #连接密码
–table staff # 导入到MySQL的那张表中
–num-mappers 1 #转成一个MR任务运行
–export-dir /user/hive/warehouse/staff_hive #hive数据表数据在HDFS上对应的路径
–input-fields-terminated-by “\t” #hive表字段和字段之间的分隔符

sqoop的另外一种导出方式:
vim一个xxx.opt文件,然后将sqoop导出命令放到文件中。
注意:sqoop关键字需要删除、而且参数和参数值需要分行写
使用 sqoop --options-file xxx.opt

         sqoop实现数据迁移(导入、导出)主要是将迁移操作转换成为MR程序去运行,在表现形式上,就是将MR程序的InputFormat和OutputFormat进行重写或者自定义。

彩蛋

资源获取 获取Flink面试题,Spark面试题,程序员必备软件,hive面试题,Hadoop面试题,Docker面试题,简历模板等资源请去 GitHub自行下载 https://github.com/lhh2002/Framework-Of-BigData Gitee 自行下载 https://gitee.com/li_hey_hey/dashboard/projects

扫码关注

大数据老哥
希望这篇文章可以帮到你~
记得点赞收藏哦
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值