导入 Import--全量数据导入 Hive | 学习笔记

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 快速学习 导入 Import--全量数据导入 Hive

开发者学堂课程【Sqoop 企业级大数据迁移方案实战导入 Import--全量数据导入 Hive】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/718/detail/12836


导入 Import--全量数据导入 Hive


内容介绍:

一、 方式一:先复制表结构到 hive 中再导入数据

二、 方式二:直接复制表结构数据到 hive

 

sqoo p全量导入 mysql 表数据到 hive 数仓当中,针对 myhive 中进行数据的导入 sqoop 支持两种方式,第一种为先复制表结构在导入数据,他首先根据 mysql 当中表的当关信息,把表的字段、类型创建好,再 hive 中创建同样的数据的表,第二步再执行数据的导入,把数据从 mysql 中导入 hive 对应的数上 location 位于的路径下面。第二种方式比较直接,他可以一步完成表结构的复制和数据的导入,看上去第二种方式要更加方便一点。这两种方式相当于做了一个整合,第二种方式直接一步到位。


一、方式一:先复制表结构到 hive 中再导入数据

将关系型数据的表结构复制到 hive

bin/sqoop create-hive-table\

--connect jdbc:mysql://node-1:3306/sqoopdb\

--table emp_add\(固源的地址信息表,来自于哪个层次及多少号)

--username root\(用户名是 root

--password hadoop\(密码)

--hive-table test.emp _add _sp\

其中:

--table emp_add mysql 中的数据库 sqoopdb 中的表

--hive-table test.emp _add _sp hive 中新建的表名称

从关系数据库导入文件到 hive

首先复制表结构,在 mysql 关系型数据库当中有数据库和表,表当中有两种类型,在 hive 数仓当中,他也存在所谓的表,只不过他是一个面向分析的,他要干的第一件事情就是就是把表的字段有几个,什么顺序,什么类型复制过来。

首先使用 bin/sqoop 之后加的参数不是 import  而是 create-hive-table 创建 hive 表,要想把信息描述清楚,需要知道 mysql 的地址,用户名密码, mysql 数据库中哪个表等属性, hive 当中创建哪个数据库库哪个表。

emp_add(故源的地址信息表)打开,来自于哪个层次那个阶段多少号。把这个表复制到 hive 中。当前位于 test路径下即 use test,然后 show tables,发现当前并没有这个表。接下来看是否能把这个表复制过来。

image.png

打开脚本,从脚本中复制相关的为例,确保当中的 ip 端口,用户名等于本机环境保持一致,复制完之后打开 sqoop 的终端,这里做一个执行。如下,这样执行第一步,复制表结构,接下来我们需要关心能不能把表结构复制下来,并且以怎样的形式存在,因为 hive mysql 类型不同,执行完成之后,输入 show tables 表名出现,接下来确定一下有没有数据,elect * from emp _add_sp,其中并没有数据,说明只复制了表结构过来,如果想看一下下来的字段类型,需要用 describe 命令(desc formatted)来查询一下表信息,表名叫做emp _add_sp,然后回车,发现表的原数据信息在 hive 中有四个字段 id-inthno-stringstreet-stringcity-string 字符串类型,说明表结构复制过来了,并且根据 hive 类型做了个改变,这样就完成了第一步表结构的复制。

image.png

但是表结构复制过来还没有数据,这时候需要进行第二步叫做把数据导入到 hive 当中,即把数据放入对应的 hive 路径下,通过刚才是云数据信息看到他所创建的这个表 location 位于 hdfs//node-1:9000/user/hive/warehouse/test.db/emp _add _sp 路径下,接下来我们先通过浏览器到这个路径看一下,

image.png

选择 user/hive/warehouse/test.db/emp _add _sp,发现下面根本没有文件,说明数据没有复制过来。

image.png

接下来执行导入数据的操作,导入到 hive-table test.emp _add _sp 表当中

从关系数据库导入文件到 hive

bin/sqoop import\

--connect jdbc:mysql://node-1:3306/sqoopdb\

--username root\

--password hadoop\

--table emp_add\

--hive-table test.emp _add _sp\

--hive-import\(执行 hive 数据的导入)

--m 1(如果不指定,默认一个)

从脚本中把这个命令进行复制,确保当中的 ip 没有问题之后打开 sqoop 做一个执行,这样开始进行一个数据导入到 hive 中的一个操作。第一点在于数据有没有导入成功有没有映射成功数据,第二点在于 hive 中会有什么分隔符存在( hive 解析时需要分隔符进行指定,默认的叫做-001),retrieved 5 records 接收到五条记录,下面显示 hive 导入完成,到处目录已经被删除,说明我们猜想在底层已经把数据导入,最终移动到 hive 应的路径下。

验证表中数据信息是否存在,首先表的结构复制过来了,在查询路径数据中进行刷新,发现文件已经复制过来了。做个对比,发现没有问题。

image.png

发现文件已经导入过来了,然后选择 download ,已经在 m 当中默认分隔符为逗号,那么在 hive 中分隔符为不可见分隔符,叫做-001,就是 hive 的默认分隔符,说明数据已经导入进来。

image.png


二、方式二:直接复制表结构数据到 hive

(一步完成表结构的复制和数据的导入)

bin/sqoop import\

--connect jdbc:mysql://node-1:3306/sqoopdb\

--username root\

--password hadoop\

--table emp_conn\

--hive-import\

--m 1

--hive database test;(往 hive 的数据库中去导入)

image.png

emp_conn 即下图所示信息表

image.png

并没有指定在 hive 中创建的表名,打开脚本做相关的复制,,打开 sqoop 做一个执行,并没有知名创建的表的名字,说明他会自己进行创建。进行 show tables ,表名为 emp-conn ,即默认情况下表名与 mysql 中表名保持一致,直接 select * from emp_conn ,发现数据导入。

采用第一种方式时,复制表结构时可以不用他复制,比如说自己先在hive 中创建一个 hive 的表,在导入时分隔符自己指定,说明人为的干预度更大一些。第二种方式集成度更高一些。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
SQL 分布式计算 Hadoop
Hadoop-14-Hive HQL学习与测试 表连接查询 HDFS数据导入导出等操作 逻辑运算 函数查询 全表查询 WHERE GROUP BY ORDER BY(一)
Hadoop-14-Hive HQL学习与测试 表连接查询 HDFS数据导入导出等操作 逻辑运算 函数查询 全表查询 WHERE GROUP BY ORDER BY(一)
51 4
|
2月前
|
SQL 分布式计算 关系型数据库
Hadoop-21 Sqoop 数据迁移工具 简介与环境配置 云服务器 ETL工具 MySQL与Hive数据互相迁移 导入导出
Hadoop-21 Sqoop 数据迁移工具 简介与环境配置 云服务器 ETL工具 MySQL与Hive数据互相迁移 导入导出
71 3
|
2月前
|
SQL
Hadoop-14-Hive HQL学习与测试 表连接查询 HDFS数据导入导出等操作 逻辑运算 函数查询 全表查询 WHERE GROUP BY ORDER BY(二)
Hadoop-14-Hive HQL学习与测试 表连接查询 HDFS数据导入导出等操作 逻辑运算 函数查询 全表查询 WHERE GROUP BY ORDER BY(二)
41 2
|
3月前
|
SQL 数据库 HIVE
hive数仓 ods层增量数据导入
根据业务需求,当表数据量超过10万条时采用增量数据导入,否则全量导入。增量导入基于`create_date`和`modify_date`字段进行,并确保时间字段已建立索引以提升查询效率。避免在索引字段上执行函数操作。创建增量表和全量表,并按日期进行分区。首次导入全量数据,后续每日新增或变更数据保存在增量表中,通过全量表与增量表的合并保持数据一致性。
117 13
|
2月前
|
SQL 分布式计算 关系型数据库
Hadoop-24 Sqoop迁移 MySQL到Hive 与 Hive到MySQL SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
Hadoop-24 Sqoop迁移 MySQL到Hive 与 Hive到MySQL SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
96 0
|
4月前
|
SQL 物联网 数据处理
"颠覆传统,Hive SQL与Flink激情碰撞!解锁流批一体数据处理新纪元,让数据决策力瞬间爆表,你准备好了吗?"
【8月更文挑战第9天】数据时代,实时性和准确性至关重要。传统上,批处理与流处理各司其职,但Apache Flink打破了这一界限,尤其Flink与Hive SQL的结合,开创了流批一体的数据处理新时代。这不仅简化了数据处理流程,还极大提升了效率和灵活性。例如,通过Flink SQL,可以轻松实现流数据与批数据的融合分析,无需在两者间切换。这种融合不仅降低了技术门槛,还为企业提供了更强大的数据支持,无论是在金融、电商还是物联网领域,都将发挥巨大作用。
64 6
|
4月前
|
SQL 关系型数据库 HIVE
实时计算 Flink版产品使用问题之如何将PostgreSQL数据实时入库Hive并实现断点续传
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
4月前
|
SQL 分布式计算 数据处理
实时计算 Flink版产品使用问题之怎么将数据从Hive表中读取并写入到另一个Hive表中
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
4月前
|
SQL 存储 分布式计算