基于DLF数据入湖的MaxCompute湖仓一体实践

由于DLF中数据入湖功能已经停止更新,本文采用DataWorks数据集成的入湖方式,以MySQL数据入湖为例,为您介绍在MaxCompute中如何创建外部项目,并查询DLF中的表数据。

使用限制

  • 仅华东1(杭州)、华东2(上海)、华北2(北京)、华北3(张家口)、华南1(深圳)、中国香港、新加坡和德国(法兰克福)地域支持构建湖仓一体能力。

  • MaxCompute、OSS、RDS和DLF必须部署在同一地域。

MySQL数据入湖

DLF入湖详情请参见快速入门

步骤一:创建数据湖的元数据库

登录数据湖管理控制台,在页面上方选择地域,在元数据 > 元数据管理页面创建元数据库。具体操作请参见创建元数据库

步骤二:DataWorks数据集成导入数据至OSS

  1. 准备入湖数据。

    1. 登录RDS管理控制台,选择地域,并单击左侧导航栏的实例列表

    2. 选择目标RDS实例,登录数据库。

    3. 为RDS数据库创建表并插入少量测试数据,详情请参见通过DMS登录RDS MySQL。例如表名为rds_mc,命令示例如下:

      CREATE TABLE `rds_mc` (
        `id` varchar(32) ,
        `name` varchar(32) ,
          PRIMARY KEY (`id`)
      ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
      INSERT INTO `rds_mc`(`id` ,`name` ) VALUES(1,"张三");
      INSERT INTO `rds_mc`(`id` ,`name` ) VALUES(2,"zhangsan");
      INSERT INTO `rds_mc`(`id` ,`name` ) VALUES(3,"zhaosi");
      INSERT INTO `rds_mc`(`id` ,`name` ) VALUES(4,"wangwu");
      INSERT INTO `rds_mc`(`id` ,`name` ) VALUES(5,"55555");
      INSERT INTO `rds_mc`(`id` ,`name` ) VALUES(8,"6666");
      
      SELECT * FROM `rds_mc`;
  2. 准备RDS MySQL数据源。

    在DataWorks中配置MySQL数据源,具体操作请参见配置MySQL数据源

  3. 准备OSS数据源。

    在DataWorks中配置OSS数据源,具体操作请参见配置OSS数据源

  4. 创建并执行数据同步任务。

    在DataWorks的数据开发模块中创建离线同步任务,详情请参见通过向导模式配置离线同步任务。关键配置如下:

    1. 网络与资源配置。image..png

      参数

      说明

      来源

      数据来源

      MySQL。

      数据源名称

      已创建的MySQL数据源。

      资源组

      我的资源组

      已创建的数据集成独享资源组。

      去向

      数据去向

      OSS。

      数据源名称

      已创建的OSS数据源。

    2. 配置任务。

      配置任务页签填写表和文件名。image..png

      参数

      说明

      RDS数据库中已创建的表名。

      文件名(含路径)

      格式:<OSS中已创建的文件目录名称>/<待导出至OSS的数据文件>。

      例如doc-test-01/datalake/anti.csv

    3. 单击离线同步任务配置页面左上角的image..png图标保存配置,然后单击image..png图标运行任务。

    4. DataWorks中任务运行成功后,可在OSS数据源配置路径下查看数据是否导入成功。image..png

步骤三:DLF进行元数据抽取入湖

数据湖管理控制台以元数据抽取的方式进行数据入湖。具体操作请参见元数据抽取

步骤四:查看数据湖的元数据

数据湖管理控制台单击元数据 > 元数据管理,进入目标数据库,在表列表页签查看数据表信息。

重要

如果通过元数据抽取后的表的序列化方式为:org.apache.hadoop.hive.serde2.OpenCSVSerde,会导致MaxCompute识别DLF的元数据中字段类型为 opencsv的string ,而引发查询失败报错,需手动将DLF的识别字段类型都改成string类型。

访问授权

当您通过MaxCompute与DLF和OSS构建湖仓一体时,授权方法如下。MaxCompute项目的账号未经授权无法访问DLF,您需要执行授权操作。授权方式包含以下两种:

  • 一键授权:当创建MaxCompute项目的账号和部署DLF的账号相同时。推荐您直接单击授权DLF进行一键授权。

  • 自定义授权:当创建MaxCompute项目的账号和部署DLF的账号相同或不相同,都可以使用该方式。详情请参见自定义授权DLF

MaxCompute创建外部项目

在DataWorks控制台创建External Project。

  1. 登录DataWorks控制台,选择地域为华东2(上海)。

  2. 在DataWorks控制台页面左侧导航栏,选择更多 > 数据湖集成(湖仓一体)

  3. 数据湖集成(湖仓一体)页面,单击现在开始创建

  4. 新建数据湖集成页面,按照界面指引进行操作。参数示例如下所示。

    表 1. 创建数据仓库

    参数

    说明

    外部项目名称

    ext_dlf_delta

    MaxCompute项目

    ms_proj1

    表 2. 创建外部数据湖连接

    参数

    说明

    异构数据平台类型

    选择阿里云DLF+OSS数据湖连接

    阿里云DLF+OSS数据湖连接

    External Project描述

    DLF所在区

    cn-shanghai

    DLF Endpoint

    dlf-share.cn-shanghai.aliyuncs.com

    DLF数据库名称

    datalake

    DLF RoleARN

  5. 单击创建后单击预览

    如果能预览DLF库中表的信息,则表示操作成功。

MaxCompute查询外部项目数据

在DataWorks临时查询页面,查看External Project下的表数据。

说明

DataWorks临时查询操作,详情请参见DataWorks临时查询

  • 命令示例:

    select * from ext_dlf_delta.rds_mc;
  • 返回结果:image..png