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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
云数据库 RDS PostgreSQL,高可用系列 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 的表,在导入时分隔符自己指定,说明人为的干预度更大一些。第二种方式集成度更高一些。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
SQL 分布式计算 Hadoop
Hadoop-14-Hive HQL学习与测试 表连接查询 HDFS数据导入导出等操作 逻辑运算 函数查询 全表查询 WHERE GROUP BY ORDER BY(一)
Hadoop-14-Hive HQL学习与测试 表连接查询 HDFS数据导入导出等操作 逻辑运算 函数查询 全表查询 WHERE GROUP BY ORDER BY(一)
233 4
|
SQL 分布式计算 关系型数据库
Hadoop-21 Sqoop 数据迁移工具 简介与环境配置 云服务器 ETL工具 MySQL与Hive数据互相迁移 导入导出
Hadoop-21 Sqoop 数据迁移工具 简介与环境配置 云服务器 ETL工具 MySQL与Hive数据互相迁移 导入导出
346 3
|
SQL
Hadoop-14-Hive HQL学习与测试 表连接查询 HDFS数据导入导出等操作 逻辑运算 函数查询 全表查询 WHERE GROUP BY ORDER BY(二)
Hadoop-14-Hive HQL学习与测试 表连接查询 HDFS数据导入导出等操作 逻辑运算 函数查询 全表查询 WHERE GROUP BY ORDER BY(二)
181 2
|
SQL 数据库 HIVE
hive数仓 ods层增量数据导入
根据业务需求,当表数据量超过10万条时采用增量数据导入,否则全量导入。增量导入基于`create_date`和`modify_date`字段进行,并确保时间字段已建立索引以提升查询效率。避免在索引字段上执行函数操作。创建增量表和全量表,并按日期进行分区。首次导入全量数据,后续每日新增或变更数据保存在增量表中,通过全量表与增量表的合并保持数据一致性。
520 13
|
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
323 0
|
SQL 物联网 数据处理
"颠覆传统,Hive SQL与Flink激情碰撞!解锁流批一体数据处理新纪元,让数据决策力瞬间爆表,你准备好了吗?"
【8月更文挑战第9天】数据时代,实时性和准确性至关重要。传统上,批处理与流处理各司其职,但Apache Flink打破了这一界限,尤其Flink与Hive SQL的结合,开创了流批一体的数据处理新时代。这不仅简化了数据处理流程,还极大提升了效率和灵活性。例如,通过Flink SQL,可以轻松实现流数据与批数据的融合分析,无需在两者间切换。这种融合不仅降低了技术门槛,还为企业提供了更强大的数据支持,无论是在金融、电商还是物联网领域,都将发挥巨大作用。
178 6
|
SQL 关系型数据库 MySQL
实时计算 Flink版操作报错合集之从mysql读数据写到hive报错,是什么原因
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
SQL DataWorks 监控
DataWorks产品使用合集之同步数据到Hive时,如何使用业务字段作为分区键
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
SQL 关系型数据库 HIVE
实时计算 Flink版产品使用问题之如何将PostgreSQL数据实时入库Hive并实现断点续传
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。