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

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

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

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


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


内容介绍:

一、Sqoop 导入

二、全量导入 mysql 表数据到 HDFS


一、Sqoop 导入

“导入工具”导入单个表从 RDBNS HDFS.表中的每一行被视为 HDFS 的记录。所有记录都存储为文本文件的文本数据

下面的语法用于将数据导入 HDFS.

$ sqoop import (generic args) (import args)

Sqoop 测试表数据

mysql 中创建数据库 userdb,然后执行参考资料中的 sql 脚本:

创建三张表: emp 雇员表、emp_ add 雇员地址表、emp_ conn 雇员联系表。

首先需要明确一下所谓的导入,是从 RDBMS 导入到 HDFS,在导入的时候,使用的是 import,后面需要跟许多的参数,这些参数都可以想象得到,比如说从 Mysql 里面的一个表,导入到 HDFS 路径下,需要明确数据库的路径是哪里、用户名密码、哪一个库、哪一个表名,以及导出路径。这些相关的信息都是以参数的形式拼接在命令后面就可以,而且非常的固定,只需要针对于业务环境进行修改即可。

为了演示相关的导入操作,准备了一个 scoop 的操作数据,在参考资料下面,有一个 scoop test data,里面有一个userdb.sql 脚本,首先需要在 mysql 里面创建数据库 userdb,复制表名,使用工具来进行创建,打开 navicat,选择新建数据库。

image.png

创建好数据库以后,把刚才的脚本,运行一下,打开数据库以后在 userdb 单击右键运行 SQL 文件

image.png

点击开始,右键刷新以后,发现多了三个表,分别是 empemp_add 和,emp_connemp 是雇员信息表,包括姓名,部门,薪水,职位之类。第二个表是 emp_addz 是雇员联系地址表,包括住在哪个街道等信息。emp_conn 是联系信息表包括手机号、email 等等信息,根据以上三个表来进行简单操作。

 

二、全量导入 mysql 表数据到 HDFS

1.全量导入 mysql 表数据到 HDFS

下面的命令用于从 MySQL 数据库服务器中的 emp 表导入 HDFS.

bin/sqoop import \

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

--username root \

--password hadoop \

--delete-target-dir \

--target-dir /sqoopresult \

--table emp -m 1

其中--target-dir 可以用来指定导出数据存放至 HDFS 的目录:

mysql jdbe url 请使用 ip 地址。

为了验证在 HDFS 导入的数据,请使用以下命令查看导入的数据: .

hdfs df's -cat /sqoopresult/ part- m000000

可以看出它会在 HDFS 上默认用逗号,分隔 emp 表的数据和字段。可以通过

- -fields-terminated-by '\t' 来指定分隔符。

首先需要解释一下全量数据,在进行大数据分析的时候,经常涉及到把某个表中的全部数据部分的数据导出来,所谓的全量数据,指的是从0开始到现在所有的数据都是全量,比如说今天导入数据以后过了一天,明天又进行导入,那么中间这一天增加的数据称为增量数据,所谓全量数据直白说,就是把表的全部数据都拿过来。需要有很多的参数去描述相关的关系,比如 mysql 的位置、用户名、密码,在哪一个表,路径是什么,这些就是她的导出命令。

image.png

使用 bin 下的 sqoop Import 进行导入,这是一个固定搭配,接下来指定相应的信息,首先是连接地址,用户密码,接下来导出的参数 target-dir,导出相应路径,如果 Sqoopresult 存在的话,就进行相应分组,如果在这路径当中,这参数之前被创建好了可能会出错,这参数可以根据需求可加可不加。后面--table emp 参数是指名表名,要把 Mysql 当中的表全量数据导出来,导出的是 emp 雇员信息表,后面的-m1当下先不解释,为了掩饰,不建议从讲义当中进行复制,因为复制下来可能会有格式的问题,把课程相关的内容,都放在了课程资料当中,打开课程资料,查看Sqoop 脚本,从上面来进行复制,避免一些格式问题。保证文档里面的相关用户名和本地环境保持一致。

image.png

复制代码到服务器上,在 Sqoop 根目录下执行,没有按回车的时候,并没有去执行。说明脚本还在等待确定,在执行这一步的时候,前提是要确保 Hadoop 已经成功启动,因为需要去运行 MR 程序,MR 程序进行资源调度管理,可以使用 jPS 进行验证,发现相关参数都已经正常启动。

image.png

在浏览器输入 node-1:8088/cluster,查看所有应用信息。可以看到,一个运行的程序名为 map reduce,刚才已经成功结束了,代码显示,最后成功收取了五条代码记录,看到这里,就是代表已经导出成功。

image.png

因为表中的数据正好就是五条,具体的正确与否需要去进行验证,刚才导出的路径是 sqoopresult,在资料当中是sqoopresult212,接下来去验证一下这路径,还是打开浏览器,通过页面访问,打开 hadoop Browse Directory,发现 sqoopresult212文件已经存在了,首先一个0 B 大小的文件已经 success,这表是一个 MR 程序,他是一个成功的,下面就是文件 part-m-00000m 说明 sqoop 在进行数据,导出导入的时候,这 MR 程序是一个特殊的 MR 程序,没有什么阶段,没有 reduce 阶段,只有 map 阶段,因为他进行数据导入导出的时候,不需要进行数据的集合,只要读一条记录,对方记录一条就可以,所以他只有 map 阶段。
所以刚才的--m 指的就是有几个 map 来运行,比如说表特别多,可以指定23及其以上。

image.png

接下来看一下数据,打开数据选择 download,下载到本地来进行一个验证,发现数据是一个非常标准的结构化数据,数据当中的一行记录,再导出以后还是一行的记录,默认的分隔符是逗号,以上就完成了数据从 MySQL 表到HDFS 指定路径当中。
这里有几个事项需要注意,第一个就是 mysql 地址,如果说 sqoop MySQL 在同一台机子上,这里建议使用 IP 或者主机名,因为在操作中可能有不稳定的 bug,比如联系失败等等错误。另外,在指定目录的时候,如果有多余的内容要删除掉,最后一个问题是分隔符的问题,没有写的时候默认是一个逗号分隔符,是可以指定分隔符的,使用- -fields-terminated-by '\t' 就可以来指定分隔符,\t就是制表符。

接下来做一个相关的验证,比如说指定分隔符叫\t,把命令再复制一遍,把212更改为213,在导出的时候,加上- -fields-terminated-by '\t' 参数,复制命令来运行,运行完成以后,打开浏览器做验证来看一下,重新 download,发现分隔符就变成制表符了,接下来就可以根据业务来进行导出修改。

image.png

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
存储 分布式计算 负载均衡
Hadoop学习笔记(二)之HDFS
Hadoop学习笔记(二)之HDFS
|
存储 大数据
大数据数据存储的分布式文件系统的HDFS的基本使用的命令行接口的导入/导出文件
在 Hdfs 中,使用命令行接口可以方便地对数据进行操作。
82 0
|
6月前
|
存储 机器学习/深度学习 分布式计算
Hadoop学习笔记(HDP)-Part.12 安装HDFS
01 关于HDP 02 核心组件原理 03 资源规划 04 基础环境配置 05 Yum源配置 06 安装OracleJDK 07 安装MySQL 08 部署Ambari集群 09 安装OpenLDAP 10 创建集群 11 安装Kerberos 12 安装HDFS 13 安装Ranger 14 安装YARN+MR 15 安装HIVE 16 安装HBase 17 安装Spark2 18 安装Flink 19 安装Kafka 20 安装Flume
176 0
Hadoop学习笔记(HDP)-Part.12 安装HDFS
|
6月前
|
存储 SQL 分布式计算
Hadoop(HDFS+MapReduce+Hive+数仓基础概念)学习笔记(自用)
Hadoop(HDFS+MapReduce+Hive+数仓基础概念)学习笔记(自用)
524 0
|
SQL HIVE
Hdfs 导入Hive,时间相关的字段 导入后为NULL
Hdfs 导入Hive,时间相关的字段 导入后为NULL
102 0
|
存储 缓存 分布式计算
HDFS(二)|学习笔记
快速学习 HDFS(二)
155 0
HDFS(二)|学习笔记
|
SQL JSON 负载均衡
离线同步 mysql 数据到 HDFS2 | 学习笔记
快速学习离线同步 mysql 数据到 HDFS2
188 0
离线同步 mysql 数据到 HDFS2  |  学习笔记
|
SQL 消息中间件 JSON
离线同步 mysql 数据到 HDFS1 | 学习笔记
快速学习离线同步 mysql 数据到 HDFS1
157 0
离线同步 mysql 数据到 HDFS1  |  学习笔记
|
监控 开发工具 开发者
网站流量日志 Flume收集--hdfs--基于文件闲置策略滚动| 学习笔记
快速学习网站流量日志 Flume收集--hdfs--基于文件闲置策略滚动
网站流量日志 Flume收集--hdfs--基于文件闲置策略滚动| 学习笔记
|
存储 分布式计算 负载均衡
HDFS(一)|学习笔记
快速学习 HDFS(一)
109 0
HDFS(一)|学习笔记
下一篇
无影云桌面