数据导出/迁移(sqoop技术)

阳哥赚钱很牛 阳哥赚钱很牛     2022-12-29     559

关键词:

数据导出/迁移的概念 

        在做数据导出之前,我们看一下已经完成的操作:数据分析阶段将指标统计完成,也将统计完成的指标放到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进行重写或者自定义。

sqoop数据迁移

概述sqoop是apache旗下一款“Hadoop和关系数据库服务器之间传送数据”的工具。导入数据:MySQL,Oracle导入数据到Hadoop的HDFS、HIVE、HBASE等数据存储系统;导出数据:从Hadoop的文件系统中导出数据到关系数据库工作机制将导入... 查看详情

sqoop数据迁移

3.1概述sqoop是apache旗下一款“Hadoop和关系数据库服务器之间传送数据”的工具。导入数据:MySQL,Oracle导入数据到Hadoop的HDFS、HIVE、HBASE等数据存储系统;导出数据:从Hadoop的文件系统中导出数据到关系数据库   3.2工作... 查看详情

sqoop数据迁移

1.1、概述sqoop是apache旗下一款“Hadoop和关系数据库服务器之间传送数据”的工具。导入数据:MySQL,Oracle导入数据到Hadoop的HDFS、HIVE、HBASE等数据存储系统;导出数据:从Hadoop的文件系统中导出数据到关系数据库mysql等 1.2... 查看详情

浅谈sqoop

...,是appche旗下的一款工具,主要是负责hadoop与RDBMS之间的数据迁移,即从hadoop文件系统导出数据到RDBMS,从RDBMS导入数据到hadoophdfs,hive,hbase等数据存储系统。b.其实就是将sqoop命令转换成MR程序来完成数据的迁移。c.本质就是执行和计... 查看详情

sqoop的安装和使用(代码片段)

一、概述sqoop是apache旗下一款“Hadoop和关系数据库服务器之间传送数据”的工具。核心的功能有两个:导入、迁入导出、迁出导入数据:MySQL,Oracle导入数据到Hadoop的HDFS、HIVE、HBASE等数据存储系统导出数据:从Hadoop的文件... 查看详情

sqoop

1、sqoopflume数据采集采集日志数据sqoop数据迁移hdfs->mysqlazkaban任务调度flume->hdfs->shell->hive->sql->BIsqoop数据迁移=mapreduce处理离线数据整个过程就是数据导入处理导出过程直接使用mapsqoop作用:简化开发mysql->hdfsmapreduces... 查看详情

利用sqoop将hive数据导入导出数据到mysql

...p;hivesqoop是让hadoop技术支持的clouder公司开发的一个在关系数据库和hdfs,hive之间数据导入导出的一个工具在使用过程中可能遇到的问题:sqoop依赖zookeeper,所以必须配置ZOOKEEPER_HOME到环境变量中。sqoop-1.2.0-CDH3B4依赖hadoop-core-0. 查看详情

数据迁移之sqoop

一简介ApacheSqoop(TM)是一种用于在ApacheHadoop和结构化数据存储(如关系数据库)之间高效传输批量数据的工具 。官方下载地址:http://www.apache.org/dyn/closer.lua/sqoop/1.4.71. Sqoop是什么Sqoop:SQL-to-Hadoop 连接传统关系型数据... 查看详情

sqoop之数据迁移

安装sqoop的前提是已经具备java和hadoop的环境1、下载并解压最新版下载地址http://ftp.wayne.edu/apache/sqoop/1.4.6/2、修改配置文件$cd$SQOOP_HOME/conf$mvsqoop-env-template.shsqoop-env.sh打开sqoop-env.sh并编辑下面几行:exportHADOOP_COMMON_HOME=/home/h 查看详情

sqoop笔记整理(代码片段)

[toc]Sqoop笔记整理概述SQOOP---数据搬用工可以将外部数据迁移到hdfs目录或者hive表或者hbase表import原理从传统数据库获取元数据信息(schema、table、field、fieldtype),把导入功能转换为只有Map的Mapreduce作业,在mapreduce中有很多map,每个ma... 查看详情

使用 sqoop 将数据从 Teradata 迁移到 Hive

】使用sqoop将数据从Teradata迁移到Hive【英文标题】:DataMigrationformTeradatatoHiveusingsqoop【发布时间】:2018-02-1309:12:10【问题描述】:我正在尝试使用sqoop将数据从teradata迁移到hive,但在teradata表中有一些字段具有图形和vargraphic等数据... 查看详情

大数据:Sqoop-导出错误

】大数据:Sqoop-导出错误【英文标题】:BigData:Sqoop-ExportError【发布时间】:2015-10-0116:03:35【问题描述】:我对这个世界很陌生。使用sqoop运行导出命令时,我收到以下错误“输入路径不存在:hdfs://quickstart.cloudera:8020/home/cloudera/Te... 查看详情

大数据开发之sqoop详细介绍

...(SQL-to-Hadoop)项目旨在协助RDBMS与Hadoop之间进行高效的大数据交流。用户可以在Sqoop的帮助下,轻松地把关系型数据库的数据导入到Hadoop与其相关的系统(如HBase和Hive)中;同时也可以把数据从Hadoop系统里抽取并导出到关系型数据... 查看详情

通过sqoop工具从hive仓库中导出数据到mysql表中,只有部分数据导出,是什么原因

参考技术A输入sqoopimport的目录在哪里?如果在/usr/sqoop下输入的命令,那么在/usr/sqoop下输入hive登入,然后showtables查看。本回答被提问者采纳 查看详情

使用 Sqoop 将视图(数据库表重)从 Oracle 迁移到 Hive

】使用Sqoop将视图(数据库表重)从Oracle迁移到Hive【英文标题】:UsingSqooptomigrateviews(databasetablesheavy)fromOracletoHive【发布时间】:2017-05-2410:42:29【问题描述】:我是大数据的初学者,我们正在使用sqoop和Cloudera管理将视图从Oracle迁... 查看详情

头歌sqoop数据导出-详解(代码片段)

...点击每一关参考答案可以快速复制。目录第1关:Sqoop数据导出语法学习任务描述相关知识编程要求测试说明参考答案第2关:HDFS数据导出至Mysql内任务描述相关知识编程要求测试说明参考答案第3关:Hive数据导出至MySQL... 查看详情

sqoop

...-zkys/QQ技术交流群:299142667sqoopApacheSqoop是用来实现结构型数据(如关系数据库)和Hadoop之间进行数据迁移的工具。它充分利用了MapReduce的并行特点以批处理的方式加快数据的传输,同时也借助MapReduce实现了容错。s 查看详情

数据湖:数据库数据迁移工具sqoop

         系列专题:数据湖系列文章        Sqoop(SQL-to-Hadoop)是Apache旗下的一款开源工具,该项目开始于2009年,最早是作为Hadoop的一个第三方模块存在,后来为了让使用者能够快速部署,也... 查看详情