如何将数据从MYSQL导入到MapReduce服务Hive分区表

举报
lixinlong 发表于 2018/05/08 09:58:40 2018/05/08
【摘要】 MapReduce服务(MapReduce Service,简称MRS)是华为云提供的企业级大数据集群云服务,里面包含HDFS、Hive、Spark等组件,非常实用于企业海量数据分析。Hive是建立在Hadoop之上的提供类SQL查询语言,帮助用户对大规模的数据进行提取、转换和加载,即通常所称的ETL(Extraction,Transformation,and Loading)操作。对庞大的数据集


 

MapReduce服务(MapReduce Service,简称MRS)是华为云提供的企业级大数据集群云服务,里面包含HDFS、Hive、Spark等组件,非常实用于企业海量数据分析。Hive是建立在Hadoop之上的提供类SQL查询语言,帮助用户对大规模的数据进行提取、转换和加载,即通常所称的ETL(Extraction,Transformation,and Loading)操作。对庞大的数据集查询需要耗费大量的时间去处理。在许多场景下,可以通过建立Hive分区方法减少每一次扫描总数据量,这种做法可以显著地改善性能。

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

 

云数据迁移服务提供界面向导式数据迁移服务,帮助客户将数据从云下迁移到云上,从阿里云、腾讯云等第三方迁移到华为、以及华为云服务间数据迁移。支持以下数据源类型:

  • 支持FTP、SFTP、OBS、HDFS、NAS(CIFS/SMB)文件类数据源

  • 支持MySQL、Oracle、Db2、SQLServer、PostgreSQL数据库,自建或第三方云服务

  • 支持MRS(Hive/HDFS/HBase)、DWS、RDS、CloudTable、DIS、Elasticsearch云服务

  • 支持NoSQL数据库:Redis、MongoDB以及DCS、DDS云服务


下面一步步介绍如何将数据从MYSQL导入MapReduce服务。


  1. 数据准备

    MYSQL上有一张表trip_data,保存了自行车骑行记录,里面有起始、结束时间,起始、结束站点、骑手ID等信息。

    MYSQL trip_data表字段定义如下:

    捕获.JPG

    附件city_trip.zip是trip_data的原始数据,可以使用云数据迁移服务导入到MYSQL,参考《如何使用数据迁移服务从OBS加载数据到云搜索服务》

    在Hive上使用下面SQL创建一张同名Hive分区表,创建SQL语句如下:

     sql.GIF

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

     

     

  2. 接下来使用云数据迁移服务进行数据迁移,首先需要创建一个云数据迁移服务集群,进入作业管理,这些基本操作,请参考云数据迁移服务入门,创建一个MYSQL连接,输入连接参数如下:

    捕获.JPG

    注意:如果保存时出错,往往是因为MSQL服务的安全组设置问题,需要设置允许云数据迁移集群所在主机的IP访问MYSQL服务。

     

     

  3. 类似创建MRS Hive连接,输入参数如下:

    捕获.JPG

  4. 创建从MYSQL导入Hive作业。

     

    先选择源连接、模式和表,然后选择目的连接、数据库名称、表名。”导入前清空数据“选”是“,这样每次导入前,会将之前已经导入到Hive表的数据清空。

    捕获.JPG

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

    image.png

    点击y、ym、ymd字段左栏操作列的图标捕获.JPG,然后按动图步骤操作,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")


    云数据迁移表达式已经预置常用字符串、日期、数值操作方法,详情请参考《云数据迁移服务字段转换》

     

    配置表达式.gif

    在向导界面的最后一步,不修改参数默认值,点击”保存并运行“。

    捕获.JPG

  5. 作业运行成功后,可以从作业列表查看作业运行状态和导入数据统计。

     

    捕获.JPG


    注:云数据迁移服务在1.1.0及以上版本支持导入Hive分区表。

     

     

 

 

 

 

 

 

 

 

 

 

 

 

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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