DLA Lakehouse实时入湖方案利用数据湖技术,重构数仓语义,分析数据湖数据,实现数仓的应用。本文介绍Lindorm实时入湖建仓分析的操作步骤。

方案介绍

DLA Lakehouse的Lindorm实时入湖建仓分析助力企业构建大数据离在线一体化,主要包括三方面。
  • Lindorm实时入湖建仓引擎:支持T+10min近实时入湖,同时支持Schema推断、动态列增加、分区管理、小文件合并及Clustering等能力。
  • Lindorm DFS存储:Lindorm入湖建仓数据回流到Lindorm DFS中,用户无需额外购买其他存储,有效地降低运维管理成本。
  • 完全弹性的分析:DLA支持Serverless Presto和Serverless Spark的分析与计算能力,完全按需计费。
方案架构如下图所示。Kafka方案架构图

使用限制

  • Lindorm宽表引擎版本必须大于等于2.1.28。
  • Lindorm通道服务版本必须大于等于3.5.0。
  • Lindorm文件引擎版本必须大于等于3.10.3。

前提条件

注意事项

Lindorm通道中的消息数据默认只保留7天,如果数据过期,同时入湖任务失败,再重新启动时读取不到过期的数据,会有丢失数据的风险。

操作步骤

  1. 若使用RAM子账号登录,需授予RAM子账号创建库表的权限。
    1. 登录Data Lake Analytics控制台
    2. 在左侧导航栏单击Serverless Presto > SQL执行
    3. 在右侧运行框输入如下语句,单击同步执行(F8)
      grant create,alter on *.* to user1_s1041577795224301;
      说明 您需要替换user1_s1041577795224301为RAM子账号绑定的DLA子账号名称。
  2. 创建湖仓。
    1. 登录Data Lake Analytics管理控制台
    2. 在左侧导航栏单击数据湖管理 > 湖仓一体化
    3. Lakehouse湖仓一体化页面的湖仓列表页签,单击创建新湖仓
    4. 新建湖仓页面进行参数配置。参数说明如下:新建湖仓
      参数名称参数说明
      湖仓名称DLA Lakehouse的名称。
      描述信息湖仓备注描述,例如湖仓应用场景、应用业务限制等。
      存储类型DLA Lakehouse数据的存储介质,选择LindormDFS(兼容HDFS)类型。
      Lindorm DFS集群Lindorm集群的ID。
      存储路径DLA Lakehouse数据在Lindorm中的存储路径,限定以“/dla“开头。
      说明 请谨慎规划存储路径,创建后不允许修改。建议选择一个空目录,且不能与之前创建的湖仓目录有互相包含关系,防止历史数据被覆盖。
      编码存储数据的编码类型,当前仅⽀持⽬标存储数据编码为UTF8。
    5. 参数配置完成后,单击创建
    湖仓创建成功后,湖仓列表页签中将展示创建成功的湖仓任务。湖仓列表
  3. 创建入湖负载。
    1. Lakehouse湖仓一体化页面的湖仓列表中,单击操作列的创建入湖负载
    2. 新建工作负载页面,选择数据源为Lindorm数据源
    3. 进行数据源的基础配置全量和增量同步配置生成目标数据规则配置
      • 基础配置的参数说明如下:基础配置
        参数名称参数说明
        名称工作负载的名称。
        选择湖仓下拉选择已经创建的湖仓,工作负载将数据输出到所选的湖仓内。
        数据存储格式数据的存储格式固定为HUDI。
        任务执行Spark虚拟集群执行Spark作业的虚拟集群。目前入湖⼯作负载在DLA Spark的虚拟集群中运行。如果您还未创建虚拟集群,请进行创建,具体请参见创建虚拟集群
        说明 请确保您选择的Spark虚拟集群处于正常运行状态,如果您选择的Spark虚拟集群处于非正常运行状态,启动工作负载时将失败。
        子账号执行所需RAM角色子账号提交Spark作业时所使用的RAM角色,固定选择AliyunDLASparkProcessingDataRole。若使用主账号登录,请忽略此参数。更多信息,请参见细粒度配置RAM子账号权限
      • 全量和增量同步配置的参数说明如下:全量和增量同步配置
        参数名称参数说明
        Lindorm集群默认为与数据源关联的Lindorm集群,且不允许用户更改。
        实时订阅通道IDLindorm数据的DLA类型订阅通道ID。
        Spark运行所需私有网络ID固定值,不支持修改。DLA Spark利用ENI技术配置该VPC网络来访问数据源,此私有网络ID和Lindorm集群所使用的私有网络ID相同。更多信息,请参见配置数据源网络
        Spark运行所需交换机ID固定值,不支持修改。该参数表示DLA Spark运行所需VPC网络下的交换机ID。
        Spark运行所需安全组DLA Spark访问数据源时进行网络安全授权的安全组ID。如果未设置安全组请登录VPC控制台进行添加。
        Spark运行所需CU数Lindorm实时入湖任务所需DLA Spark的CU数。默认情况下无需修改,若想执行更快,可以增加每批次消费记录条数,并同时增加CU数。
        高级规则配置(可选)
        • 消费位点:数据消费的时间点。当前取值固定为earliest,表示自动从最开始的时间点获取数据。
        • 每批次消费记录条数:每次通过Lindorm拉取的数据量。
      • 生成目标数据规则配置的参数说明如下:生成目标数据规则配置
        参数名称参数说明
        库名目标DLA库的名称,库名以字符开头,可包含字符、数字、下划线,不能和已有库同名否则会报错。
        表名系统默认使用Lindorm入湖通道的表名,会自动把除数字和字母外的字符替换为"_",且不允许用户更改。
        目标端分区字段对指定库表设置分区字段。不设置则不会进行数据分区。
        高级配置(可选)默认忽略数据删除:即使源库中数据被删除了,在目标湖仓中,也不会删除这些数据。
    4. 上述参数配置完成后,单击创建
    入湖负载创建成功后,在工作负载列表页签中将展示创建成功的工作负载。
  4. 启动工作负载。
    1. 工作负载列表页签中,定位到创建成功的入湖负载,在操作列单击启动
    2. 在弹出的再次确认窗口单击确定
    工作负载任务启动成功后,状态变为RUNNING启动成功
  5. 待工作负载任务运行一段时间后,进行数据分析。
    1. 工作负载列表页签单击入湖负载的库前缀。
    2. 在弹出的Lindorm湖仓查询提示窗口单击确定
    3. SQL执行页面,系统已经选中了目标库,您可以直接输入SQL语句进行数据分析。

Lindorm与DLA的字段类型转换表

目前支持的字段类型转换如下。
Lindorm字段类型DLA字段类型
long、usigned_long、short、unsigned_short、int、unsigned_integer、bytebigint
string、date、unsigned date、time、unsigned time、timestamp、unsigned timestamp、decimalstring
float、double、unsigned doubledouble
booleanboolean
varbinary、binary、encoded binarybinary
说明 不支持的Lindorm字段类型不会同步到DLA中。

常见问题

Q:为什么Lindorm中开通数据湖分析后,下拉选择入湖表没有显示已创建的表?

A:目前数据湖分析仅支持有Schema的表,即Lindorm通过CQL创建的表。更多信息,请参见Lindorm CQL操作文档