如何使用CDM迁移Mysql数据到Hive分区表

举报
Leef724 发表于 2020/05/15 10:13:15 2020/05/15
【摘要】 MySQL数据库迁移到云上MRS Hive分区表简介MapReduce服务(MapReduce Service,简称MRS)是华为云提供的企业级大数据集群云服务,里面包含HDFS、Hive、Spark等组件,适用于企业海量数据分析。其中Hive提供类SQL查询语言,帮助用户对大规模的数据进行提取、转换和加载,即通常所称的ETL(Extraction,Transformation,and Lo...

MySQL数据库迁移到云上MRS Hive分区表

简介

MapReduce服务(MapReduce Service,简称MRS)是华为云提供的企业级大数据集群云服务,里面包含HDFS、Hive、Spark等组件,适用于企业海量数据分析。

其中Hive提供类SQL查询语言,帮助用户对大规模的数据进行提取、转换和加载,即通常所称的ETL(Extraction,Transformation,and Loading)操作。对庞大的数据集查询需要耗费大量的时间去处理,在许多场景下,可以通过建立Hive分区方法减少每一次扫描的总数据量,这种做法可以显著地改善性能。

Hive的分区使用HDFS的子目录功能实现,每一个子目录包含了分区对应的列名和每一列的值。当分区很多时,会有很多HDFS子目录,如果不依赖工具,将外部数据加载到Hive表各分区不是一件容易的事情。云数据迁移服务(CDM)可以请轻松将外部数据源(关系数据库、对象存储服务、文件系统服务等)加载到Hive分区表。

下面使用CDM将MySQL数据导入到MRS Hive分区表为例进行介绍。

操作场景

假设MySQL上有一张表trip_data,保存了自行车骑行记录,里面有起始时间、结束时间,起始站点、结束站点、骑手ID等信息,trip_data表字段定义如图8-22所示。

图1-1 MySQL表字段

imgclip_image00211.jpg

使用CDM将MySQL中的表trip_data导入到MRS Hive分区表,流程如下:

1)在MRS Hive上创建Hive分区表

2)创建CDM集群并绑定EIP

3)创建MySQL连接

4)创建Hive连接

6)创建迁移作业

前提条件

已经购买了MRS,拥有EIP配额,已获取连接MySQL数据库的IP地址、端口、数据库名称、用户名、密码,且该用户拥有MySQL数据库的读写权限。

创建Hive分区表

在MRS的Hive上使用下面SQL语句创建一张Hive分区表,表名与MySQL上的表trip_data一致,且Hive表比MySQL表多建三个字段y、ym、ymd,作为Hive的分区字段。SQL语句如下:

create table trip_data(
   TripID int,
   Duration int,
   StartDate timestamp,
   StartStation varchar(64),
   StartTerminal int,
   EndDate timestamp,
   EndStation varchar(64),
   EndTerminal int,
   Bike int,
   SubscriberType varchar(32),
   ZipCodev varchar(10)
)partitioned by (y int,ym int,ymd int);

Hive表trip_data有三个分区字段:骑行起始时间的年、骑行起始时间的年月、骑行起始时间的年月日,例如一条骑行记录的起始时间为2018/5/11 9:40,那么这条记录会保存在分区trip_data/2018/201805/20180511下面。对trip_data进行按时间维度统计汇总时,只需要对局部数据扫描,大大提升性能。

创建MySQL连接

在集群管理界面,单击集群后的“作业管理”,选择“连接管理 > 新建连接”,进入连接器类型的选择界面,如图8-24所示。选择“MySQL”后单击“下一步”,配置MySQL连接的参数。

imgclip_image010.jpg

单击“显示高级属性”可查看更多可选参数,具体请参见4.20 配置关系数据库连接。这里保持默认,必填参数如表8-3所示。

表1-1 MySQL连接参数

  参数名     说明     取值样例  
 名称    输入便于记忆和区分的连接名称。    mysqllink  
 数据库服务器    MySQL数据库的IP地址或域名。    192.168.0.1  
 端口    MySQL数据库的端口。    3306  
 数据库名称    MySQL数据库的名称。    sqoop  
 用户名    拥有MySQL数据库的读、写和删除权限的用户。    admin  
 密码    用户的密码。    -  
 使用Agent    是否选择通过Agent从源端提取数据。    是  
 Agent    单击“选择”,选择连接Agent中已创建的Agent。    -  

单击“保存”回到连接管理界面。

如果保存时出错,一般是由于MySQL数据库的安全设置问题,需要设置允许CDM集群的EIP访问MySQL数据库。

创建Hive连接

在连接管理界面,单击“新建连接”,连接器类型选择“MRS Hive”。

单击“下一步”配置Hive连接参数,如图所示。

image-20200515095814775image-20200515095814775.png

各参数说明如表8-4所示,需要您根据实际情况配置。

表1-2 Hive连接参数

  参数名     说明     取值样例  
 名称    连接的名称,根据连接的数据源类型,用户可自定义便于记忆、区分的连接名。    hivelink  
 Manager IP    MRS Manager的IP地址,可以单击输入框后的“选择”来选定已创建的MRS集群,CDM会自动填充下面的鉴权参数。    127.0.0.1  
 认证类型    访问MRS的认证类型:  l   SIMPLE:非安全模式选择Simple鉴权。  l   KERBEROS:安全模式选择Kerberos鉴权。    SIMPLE  
 mrs版本    MRS集群的版本。    -  
 Manager端口    FusionInsight/MRS Manager端口。    28443  
 CAS Server端口    FusionInsight/MRS Manager CAS协议端口。    20009  
 URI    NameNode URI地址。    hdfs://hacluster  
 Hive元数据地址    设置Hive元数据地址,参考 hive.metastore.uris配置项。例如:thrift://host-192-168-1-212:9083    -  
 IP与主机名映射    如果Hadoop配置文件使用主机名,需要配置IP与主机的映射。格式:IP与主机 名之间使用空格分隔,多对映射使用分号或回车换行分隔。    -  
 用户名    选择KERBEROS鉴权时,需要配置MRS Manager的用户名和密码。    cdm  
 密码    访问MRS  Manager的用户密码。    -  

单击“保存”回到连接管理界面。

创建迁移作业

1)选择“表/文件迁移 > 新建作业”,开始创建数据迁移任务,如图所示。“导入前清空数据”选“是”,这样每次导入前,会将之前已经导入到Hive表的数据清空。

imgclip_image015.jpg

2)作业参数配置完成后,单击“下一步”,进入字段映射界面,如图8-28所示。

映射MySQL表和Hive表字段,Hive表比MySQL表多三个字段y、ym、ymd,即是Hive的分区字段。由于没有源表字段直接对应,需要配置表达式从源表的StartDate字段抽取。

imgclip_image018.jpg

3)单击img进入转换器列表界面,再选择“新建转换器 > 表达式转换”,如图8-29所示。

y、ym、ymd字段的表达式分别配置如下:

DateUtils.format(DateUtils.parseDate(row[2],"yyyy-MM-dd HH:mm:ss.SSS"),"yyyy")

DateUtils.format(DateUtils.parseDate(row[2],"yyyy-MM-dd HH:mm:ss.SSS"),"yyyyMM")

DateUtils.format(DateUtils.parseDate(row[2],"yyyy-MM-dd HH:mm:ss.SSS"),"yyyyMMdd")

配置表达式

imgclip_image022.jpg

CDM的表达式已经预置常用字符串、日期、数值等类型的字段内容转换,详情请参见官网字段转换。

单击“下一步”配置任务参数,一般情况下全部保持默认即可。

该步骤用户可以配置如下可选功能:

  • 作业失败重试:如果作业执行失败,可选择是否自动重试,这里保持默认值“不重试”。

  • 作业分组:选择作业所属的分组,默认分组为“DEFAULT”。在CDM“作业管理”界面,支持作业分组显示、按组批量启动作业、按分组导出作业等操作。

  • 是否定时执行:如果需要配置作业定时自动执行,请参见5.6 配置定时任务。这里保持默认值“否”。

  • 抽取并发数:设置同时执行的抽取任务数。这里保持默认值“1”。

  • 是否写入脏数据:如果需要将作业执行过程中处理失败的数据、或者被清洗过滤掉的数据写入OBS中,以便后面查看,可通过该参数配置,写入脏数据前需要先配置好OBS连接。这里保持默认值“否”即可,不记录脏数据。

  • 作业运行完是否删除:这里保持默认值“不删除”。

4)单击“保存并运行”,回到作业管理界面,在作业管理界面可查看作业执行进度和结果。

5)作业执行成功后,单击作业操作列的“历史记录”,可查看该作业的历史执行记录、读取和写入的统计数据。在历史记录界面单击“日志”,可查看作业的日志信息。


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。