EMR Hive单表离线同步至MaxCompute

本文以EMR Hive单表离线同步写入MaxCompute场景为例,为您介绍OSS离线同步在数据源配置、网络连通、同步任务配置方面的最佳实践。

背景信息

Hive是基于Hadoop的一个数据仓库工具,用来进行数据的提取、转化、加载,可以存储、查询和分析存储在Hadoop中的大规模数据。Hive数据仓库工具能将结构化的数据文件映射为一张数据库表,并提供SQL查询功能,能将SQL语句转换成MapReduce任务来执行。数据集成支持从Hive同步数据到其他目标端,也支持从其他目标端同步数据到Hive。

准备工作

  • 已购买Serverless资源组

  • 已创建Hive数据源和MaxCompute数据源,详情请参见数据源配置

  • 已完成资源组与数据源间的网络连通,详情请参见网络连通方案概述

    说明

    如果您使用公网连接独享资源组和EMR,则EMR集群安全组策略需要对独享资源组的EIP地址做相应的端口放行。安全组访问规则的入方向允许放行EMR集群访问端口(一般包括10000、9093、8020等端口)。

使用限制

暂不支持将源端数据同步至MaxCompute外部表。

操作步骤

一、新建节点与任务配置

对于通用的节点创建和向导配置步骤,本文将直接引用通用操作指南:向导模式配置,不再赘述。

二、配置数据来源与去向

配置数据来源(Hive)

本文档将Hive数据单表离线同步至MaxCompute,数据来源为Hive表,关键配置参数如下。

配置项

配置要点

读取Hive方法

  • 基于HDFS文件读取数据:Hive Reader插件通过访问HiveMetastore服务,解析出您配置的数据表的HDFS文件存储路径、文件格式、分隔符等信息后,再通过读取HDFS文件的方式读取Hive中的表数据。

  • 基于Hive Jdbc读取数据(支持数据条件过滤):Hive Reader插件通过Hive JDBC客户端连接HiveServer2服务读取数据。此方式支持通过where条件过滤数据,并直接通过SQL读取数据。

说明

HDFS方式效率更高,JDBC方式会生成MapReduce程序,同步效率较低。注意HDFS方式同步不支持配置条件过滤、不支持读取视图(VIEW)表,您可以根据自身需求选择相应的同步方式。

选择待同步的Hive表。建议对于要进行数据同步的表,Hive数据源开发和生产环境应保证具有相同的表结构。

说明

此处会展示Hive数据源开发环境的表列表和表结构,如果您的Hive数据源开发和生产环境的表定义不同,则可能出现任务在开发环境配置正常但提交生产运行后报错表不存在、列不存在的问题。

Parquet Schema

如果Hive表存储格式为Parquet格式,需要配置对应的Parquet Schema。

配置数据去向(MaxCompute)

本文档将Hive数据单表离线同步至MaxCompute,数据去向为表,配置要点如下。

说明

下表中未说明参数保持默认即可。

配置项

配置要点

Tunnel资源组

MaxCompute的数据传输资源Tunnel Quota,默认选择“公共传输资源”,即MC的免费quota。如果独享Tunnel Quota因欠费或到期不可用,任务在运行中将会自动切换为“公共传输资源”。

选择待同步的MaxCompute表。如果您使用的是标准类型的DataWorks工作空间,请确保在MaxCompute的开发环境和生产环境中存在同名且表结构一致的MaxCompute表。

您也可以单击一键生成目标表结构,系统将自动创建表接收数据,支持手动调整建表语句。

说明

如果:

  • 开发环境不存在待同步的MaxCompute表,则在配置离线同步节点的去向表的下拉框中无法搜索到待同步表。

  • 生产环境不存在待同步的MaxCompute表,同步任务提交发布后,数据同步任务调度运行时将会由于无法找到待同步表而导致同步任务运行失败。

  • 开发环境和生产环境的表结构不一致,同步任务提交发布后,同步任务实际调度运行时的列对应关系,可能与此处离线同步节点配置的列对应关系不一致,最终导致数据写入不正确。

分区信息

如果表为分区表,您可以填入分区列的取值。

  • 取值可以是固定值,如ds=20220101

  • 取值可以是调度系统参数,如ds=${bizdate},当任务运行时,会自动替换调度系统参数。

写入模式

写入目标表时可选择清理已有数据,或者保留已有数据。

三、任务配置与验证

  • 字段映射:通常情况下,使用同名映射同行映射即可满足需求。若源端与目标端字段顺序或名称不一致,可对映射关系进行手动调整。

  • 通道控制:建议将脏数据策略设置为不容忍脏数据,以确保数据质量。其他参数在初期可保持默认。

四、调试配置并运行

  1. 单击离线同步节点编辑页面右侧的调试配置,设置调试运行使用的资源组脚本参数,然后单击顶部工具栏的运行,测试同步链路是否成功运行。

  2. 您可以在左侧导航栏单击image,然后单击个人目录右侧的image,创建一个后缀为.sql的文件,执行如下SQL查询数据去向表中的数据是否符合预期。

    说明
    SELECT * FROM <MaxCompute侧目标表名> WHERE pt=<指定分区> LIMIT 20;

五、调度配置与发布

单击离线同步任务右侧的调度配置,设置周期运行所需的调度配置参数后,单击顶部工具栏的发布,进入发布面板,根据页面提示完成发布