You need to enable JavaScript to run this app.
导航
配置 Hive 数据源
最近更新时间:2024.11.21 10:34:12首次发布时间:2022.09.15 17:46:56

Hive 常用于存储结构化数据,其底层使用 HDFS 存储数据。全域数据集成(DataSail)提供了基于 HDFS 文件和基于 JDBC 两种方式的数据同步功能:

  • 基于 HDFS 文件的数据同步(支持 Hive 读&写):Hive reader 通过 HMS(Hive Metastore Service)获取到指定 Hive 表的底层存储路径,然后直接读写底层 HDFS 文件,最后再将元信息同步至 HMS。
  • 基于 JDBC 的数据同步(仅支持 Hive 读):Hive reader 通过 JDBC 客户端连接 HiveServer2 服务进行数据读取。

1 支持的版本

  • 火山引擎 E-MapReduce(EMR)Hive、EMR Serverless Hive 数据源。
  • 连接串形式支持 Hive 3.1.2 版本。

2 使用前提

  1. 子账号新建数据源时,需要有项目的管理员角色,方可以进行新建数据源操作。各角色对应权限说明,详见:管理成员
  2. 访问火山引擎 EMR Serverless Hive 数据源,需先在 EMR Serverless Spark 控制台中创建相关队列资源。详见队列管理

    说明

    EMR Serverless Spark 目前为白名单形式使用,您可通过提工单方式,咨询 EMR 支持人员,进行后台开通后使用。

  3. Hive 数据源配置选择 EMR Hive 接入方式时,您需要填写 EMR 集群信息、数据库相关信息,需提前创建好 EMR Hadoop 集群类型。详见创建集群
  4. 访问火山引擎 EMR-Hive 数据源,需先在项目控制台 > 服务绑定 > 引擎绑定中,绑定相应 EMR-Hadoop 集群。详见创建项目
  5. EMR Hadoop 集群使用的 VPC 需和独享集成资源组中的 VPC 保持一致:
    • 其 VPC 下的子网和安全组也尽可能保持一致。
    • 若 VPC 不一致时,则需要在 Hadoop 集群的安全组上,在入方向规则处,添加独享集成资源组子网的 IP 网段:
      1. 在 EMR Hadoop 集群详情界面,进入集群所在的安全组,并添加入方向规则。
        Image
      2. 在弹窗中,填写独享集成资源组所在 VPC 的 CIDR 网段信息:
        Image

3 使用限制

  • 离线读:
    • 基于 HDFS 文件的离线读需指定分区字段的分区内容,单次执行仅支持读取单分区;
    • HDFS 的读取方式,仅支持 EMR Hive 的数据源接入方式,且 EMR 集群内 Hive 组件版本需为 3.X;
    • 基于 JDBC 的离线读,通过 SQL 读取数据,您需要配置好有效的 SQL 语句。
  • 离线写:
    • 目前仅支持基于 HDFS 文件的离线写入;
    • 单次执行只能写入单个分区。
  • 实时写:
    • 虽然数据是近实时写入 Hive,但是由于 Hive 分区可见性限制,数据写入后默认会在 T+1 时间才能在 Hive 中查询到。例如:天级分区 Hive 表,任务启动后第二天可查询;小时级 Hive 表在第二个小时可查询。
      如果您对此功能原理感兴趣,可以参考下述文章:字节跳动基于Flink的MQ-Hive实时数据集成_大数据_字节跳动技术团队_InfoQ精选文章
    • 如要您的业务场景需要实时查看到数据,则您需在高级参数中配置以下两个参数:
      • 预创建分区:job.writer.partition_strategy=partition_last;
      • 每分钟刷新数据到 Hive:job.common.checkpoint_interval = 60000
        详见6 高级参数可选配置

4 支持的字段类型

Hive reader 和 Writer 会通过 HiveServer2 拿到目标 Hive 表的元信息,从而获取到各个字段的类型,自动完成任务的 Schema 配置,用户只需单击自动添加即可完成 Schema 配置。

类型分类

数据集成 Column 配置类型

整数类

tinyint、smallint、int、bigint

浮点类

float、double、decimal

字符串类

string

时间类

date、timestamp

布尔类

boolean

数组类

array

字典类

map

二进制类型

binary

5 数据同步任务开发

5.1 数据源注册

新建数据源操作详见配置数据源,以下为您介绍不同接入方式的 Hive 数据源配置相关信息:

说明

若后续可视化配置 Hive 离线读使用 JDBC 方式读取数据时,EMR-Hive 数据源和连接串形式 Hive 数据源配置中,配置信息中的用户名密码必须要填写。

  1. EMR-Hive 数据源

    注意

    • EMR Hadoop 集群所在的 VPC 需和独享集成资源组中的 VPC 保持一致,确保网络能互相访问。不同 VPC 情况时,详见“2 使用前提”相关说明。
    • DataSail 会用 root 账号来读写 EMR Hive 表数据,因此数据源配置中的用户名和密码信息可忽略不填。

    其中参数名称前带 * 的为必填参数,名称前未带 * 的为可选填参数。

    参数

    说明

    基本配置

    *数据源类型

    Hive

    *接入方式

    EMR Hive

    *数据源名称

    数据源的名称,可自行设置,仅支持中文,英文,数字,“_”,100个字符以内。

    参数配置

    *认证方式

    访问 Hive 数据源时,支持使用 Kerberos 认证的身份认证方式;若访问时无需认证,则认证方式选择
    其中 Kerberos 认证需要您将 keyTab 文件、conf 文件上传至数据源配置界面及填写 principal 认证相关信息。

    *EMR 集群 ID

    下拉选择已创建成功的 EMR Hadoop 集群名称,若还未创建相关集群,您可前往 EMR-控制台创建。详见创建集群

    *数据库名

    下拉选择集群环境中,已创建的 Hive 数据库名称。

    *Hive 版本号

    依据已选择的 EMR Hadoop 集群,自动展现集群中包含的 Hive 版本。

    用户名

    有权限访问数据库的用户名信息。

    密码

    输入用户名对应的密码信息。

    *keyTab文件

    认证方式选择 kerberos 认证时,需要将 keyTab 配置文件上传。

    *conf文件

    认证方式选择 kerberos 认证时,需要将 conf 配置文件上传。

    *principal

    认证方式为 Kerberos 认证时,需输入用于认证的 Principal 身份信息。

    扩展配置

    您可输入 HDFS 配置的可选扩展,例如 Hadoop HA 的配置信息。

  2. EMR Serverless Hive 数据源
    其中参数名称前带 * 的为必填参数,名称前未带 * 的为可选填参数。

    参数

    说明

    基本配置

    *数据源类型

    Hive

    *接入方式

    EMR Serverless Hive

    *数据源名称

    数据源的名称,可自行设置,仅支持中文,英文,数字,“_”,100个字符以内。

    参数配置

    *Hive 版本号

    默认仅支持 Hive 3.1.3。

    *Accesskey ID

    进入火山引擎,访问控制台的密钥管理界面,复制 Accesskey ID 填写到此处。如果为子用户,请联系主账号获取密钥。

    注意

    填写的 AK\SK 信息,需拥有以下相应的权限:

    1. 需要有对应 Hive 库表的读写权限,主账号或数据库 Owner 可前往 LAS Formation 控制台进行授权操作。详见 LAS Formation 权限管理
    2. 需要有 LAS Formation 中设置的底层存储路径 TOS Bucket 桶读写权限。存储桶权限策略操作详见桶策略模板及参数说明

    *Secret Access Key

    与 AccessKey ID 配套使用,类似登录密码,用于签名您的访问参数,以防被篡改。

    *数据库名

    输入上方 AK/SK 信息后,可在此下拉选择 EMR Serverless Spark 环境中,已创建的 Hive 数据库名称。

    扩展配置

    您可输入 HDFS 配置的可选扩展,例如 Hadoop HA 的配置信息。

  3. 连接串形式 Hive 数据源
    用连接串形式配置 Hive 数据源,其中参数名称前带 * 的为必填参数,名称前未带 * 的为可选填参数。

    参数

    说明

    基本配置

    *数据源类型

    Hive

    *接入方式

    连接串

    *数据源名称

    数据源的名称,可自行设置,仅支持中文,英文,数字,“_”,100个字符以内。

    参数配置

    *认证方式

    访问 Hive 数据源时,支持使用 Kerberos 认证的身份认证方式;若访问时无需认证,则认证方式选择
    其中 Kerberos 认证需要您将 keyTab 文件、conf 文件上传至数据源配置界面及填写 principal 认证相关信息。

    *数据库名

    输入已创建的 Hive 数据库名称。

    用户名

    有权限访问数据库的用户名信息。

    密码

    输入用户名对应的密码信息。

    *Hive 版本号

    支持下拉选择 Hive 3.1.2 的版本。

    *MetaStore URI

    输入 Hive 元数据存储的 MetaStore uri 地址,以 thrift://ip1:port,thrift://ip2:port 的形式,多个地址可用英文“,”分隔。

    *Hive JDBC URL

    输入 Hive JDBC URL 链接串地址信息:

    • 无 kerberos 认证时,需填写:jdbc:hive2://host:port/database
    • 有 kerberos 认证时,需补充填写认证信息: jdbc:hive2://host:port/database;principal= your principal

    *keyTab文件

    认证方式选择 kerberos 认证时,需要将 keyTab 配置文件上传。

    *conf文件

    认证方式选择 kerberos 认证时,需要将 conf 配置文件上传。

    *principal

    认证方式为 Kerberos 认证时,需输入用于认证的 Principal 身份信息。

    defaultFS

    填写 Hadoop HDFS 文件的 namenode 节点地址,以 hdfs:// ip:port 的形式填写。

    扩展配置

    填写必要的 HDFS 或 Hive 配置,默认情况无需额外配置,填写 <configuration></configuration>即可。
    自建的高可用集群您可参考以下扩展属性配置示例:

    <configuration>
        <property>
            <name>dfs.nameservices</name>
            <value>test_name</value>
        </property>
        <property>
            <name>dfs.ha.namenodes.test_name</name>
            <value>namenode1,namenode2</value>
        </property>
        <property>
            <name>dfs.namenode.rpc-address.namenode1</name>
            <value>xxx.xx.x.xx:port</value>
        </property>
        <property>
            <name>dfs.namenode.rpc-address.namenode2</name>
            <value>xxx.xx.x.xx:port</value>
        </property>
        <property>
            <name>dfs.client.failover.proxy.provider.test_name</name>
            <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
        </property>
    </configuration>
    

    说明

    • 以上配置示例中,nameservices 和 rpc-address 信息,您需根据实际集群信息进行替换。
    • 若是火山引擎 EMR HDFS 高可用集群方式接入时,无需配置额外高可用相关的扩展属性。

5.2 新建离线任务

Hive 数据源测试连通性成功后,进入到数据开发界面,开始新建 Hive 相关通道任务。新建任务方式详见离线数据同步流式数据同步

5.3 可视化配置说明

任务创建成功后,您可根据实际场景,配置 Hive 离线读Hive 离线写等通道任务。

5.3.1 可视化配置 Hive 离线读

Image
数据来源选择 Hive,并完成以下相关参数配置:
其中参数名称前带 * 的为必填参数,名称前未带 * 的为可选填参数。

参数

说明

*数据源类型

下拉选择 Hive 数据源类型。

*数据源名称

已在数据源管理中注册成功的 Hive 数据源,下拉可选。
若还未建立相应数据源,可单击数据源管理按钮,前往创建 Hive 数据源。

*数据表

选择需要采集的数据表名称信息,目前单个任务只支持将单表的数据采集到一个目标表中。

  • 快速建表:若源表还未创建,您可单击快速建表按钮,前往数据地图界面,进行 EMR Hive 表的创建。
  • 修改数据表:若源表字段存在需更新情况时,您可单击修改数据表按钮,对源表字段进行快速修改。

说明

数据源接入方式为 EMR Serverless Hive 时,暂不支持快速建表和修改数据表操作。相应的源库表操作需要前往 EMR Serverless Spark 控制台中进行。

读取方式

Hive 读取方式支持“基于 HDFS”和“基于 JDBC”:

  • 基于 HDFS:需要指定分区字段的分区内容,仅支持单分区内容的读取。
  • 基于 JDBC:通过 SQL 读取数据,可实现字段的 where 过滤。

说明

选择 JDBC 方式读取数据,且数据源配置使用 EMR-Hive 形式或连接串形式时,其数据源配置信息中的用户名密码必须要填写。

分区设置

基于 HDFS 方式读取数据时,会根据所选数据库表,获取 Hive 表中分区信息,指定读取的分区。分区内容可通过时间变量参数方式进行设置,详见平台时间变量与常量说明

说明

  • 读取 Hive 表为非分区表时,不需要设置分区。
  • Hive 表分区不存在或分区目录不存在时,任务将以空分区形式进行读取。

数据过滤

基于 JDBC 方式读取数据时,支持您将需要同步的数据进行筛选条件设置,只同步符合过滤条件的数据,可直接填写关键词 where 后的过滤 SQL 语句且无需填写结束符号(;),例如:create_time > '${date}',不需要填写 where 关键字。
语句填写完成后,您可单击右侧的校验按钮,进行过滤语句校验。

说明

该过滤语句通常用作增量同步,暂时不支持 limit 关键字过滤,其 SQL 语法需要和选择的数据源类型对应。

5.3.2 可视化配置 Hive 离线写

Image
数据目标类型选择 Hive,并完成以下相关参数配置:
其中参数名称前带 * 的为必填参数,名称前未带 * 的为可选填参数。

参数

说明

*目标类型

下拉选择 Hive 数据源类型。

*数据源名称

已在数据源管理中注册成功的 Hive 数据源,下拉可选。
若还未建立相应数据源,可单击数据源管理按钮,前往创建 Hive 数据源。

*数据表

选择需要写入数据的 Hive 表名称信息,下拉可选。

  • 快速建表:若目标 Hive 表还未创建,您可单击快速建表按钮,前往数据地图界面,依据源端采集的字段信息,进行 EMR Hive 表的创建。
  • 修改数据表:若源端采集的字段存在更新情况时,您可单击修改数据表按钮,及时对目标表字段进行快速修改。

说明

数据源接入方式为 EMR Serverless Hive 时,若目标 Hive 表还未创建,且源端已选定需要采集的表时,您也可通过单击“一键建表”按钮,依据对源端采集的字段信息,快速在当前窗口以弹窗形式,进行目标表 DDL 语句的编辑创建。

分区设置

分区字段从 Hive 表中自动获取。
分区类型支持选择动态分区类型或具体分区字段类型:

  • 动态分区:即根据源端字段值内容,进行动态写入,动态分区对应的字段必须存在于源端 Columns 中。选择动态分区类型后,便可自动将表分区字段,加入到下方字段映射中。

    说明

    动态分区字段对应的源端字段值内容,允许为空,同步任务将以 Hive 空分区形式写入,以"
    HIVE_DEFAULT_PARTITION"形式展现。

  • 具体分区字段类型:其分区内容可设置具体时间分区粒度,可以用表达式:${date}、${hour} 等参数变量表示。参数变量详见平台时间变量与常量说明

数据写入方式

下拉选择目标数据写入方式,支持以下两种写入方式:

  • insert overwrite: 先删除原有数据再写入新数据;
  • insert into: 直接写入新数据。

5.3.3 可视化配置 Hive 实时写

Image
流式集成任务实时写入 Hive 数据源,数据目标类型选择 Hive,并完成以下相关参数配置:
其中参数名称前带 * 的为必填参数,名称前未带 * 的为可选填参数。

参数

说明

*目标类型

下拉选择 Hive 数据源类型。

*数据源名称

已在数据源管理中注册成功的 Hive 数据源,下拉可选。
若还未建立相应数据源,可单击数据源管理按钮,前往创建 Hive 数据源。

*数据表

选择需要写入数据的 Hive 表名称信息,下拉可选。

  • 快速建表:若目标 Hive 表还未创建,您可单击快速建表按钮,前往数据地图界面,依据源端采集的字段信息,进行 EMR Hive 表的创建。
  • 修改数据表:若源端采集的字段存在更新情况时,您可单击修改数据表按钮,及时对目标表字段进行快速修改。

说明

数据源接入方式为 EMR Serverless Hive 时,若目标 Hive 表还未创建,且源端已选定需要采集的表时,您也可通过单击“一键建表”按钮,依据对源端采集的字段信息,快速在当前窗口以弹窗形式,进行目标表 DDL 语句的编辑创建。

分区频率

支持选择天级或小时级的分区频率:

  • 天级:每天产出一次分区
  • 小时级:每小时产出一次分区

说明

数据跟随 Hive 分区生成的时间产出,并非实时写入。

分区设置

分区字段从 Hive 表中自动获取。分区内容可设置具体时间分区粒度,可以用表达式:${date}、${hour} 等参数变量表示。

说明

分区类型中动态分区数目不能过多,会导致消费速率降低,推荐<10。

5.3.4 字段映射

数据来源和目标端配置完成后,需要指定来源和目标端的字段映射关系,根据字段映射关系,数据集成任务将源端字段中的数据,写入到目标端对应字段中。
字段映射支持选择基础模式转换模式配置映射:

注意

基础模式和转换模式不支持互相切换,模式切换后,将清空现有字段映射中所有配置信息,一旦切换无法撤销,需谨慎操作。

  • 转换模式:
    字段映射支持数据转换,您可根据实际业务需求进行配置,将源端采集的数据,事先通过数据转换后,以指定格式输入到目标端数据库中。
    转换模式详细操作说明详见4.1 转换模式
    在转换模式中,你可依次配置:来源节点、数据转换、目标节点信息:

    配置节点

    说明

    来源节点

    配置数据来源 Source 节点信息:

    • 节点名称:自定义输入来源节点名称信息,只允许由数字、字母、下划线、-和.组成;且长度不能超过10。
    • 数据字段:通过自动添加、手动添加等方式添加数据来源字段信息。

    配置完成后,单击确认按钮,完成来源节点配置。

    数据转换

    单击数据转换右侧添加按钮,选择 SQL 转换方式,配置转换信息和规则:

    • 节点名称:自定义输入来源节点名称信息,只允许由数字、字母、下划线、-和.组成;且长度不能超过10。
    • SQL 脚本:输入 SQL 脚本转换规则,目前仅支持添加一个转换的 SQL 语句,且不能包括 “;”。

    配置完成后,单击确认按钮,完成数据转换节点配置。SQL 脚本示例详见4.1.2 添加转换节点

    目标节点

    配置目标节点 Sink 信息:

    • 节点名称:自定义输入来源节点名称信息,只允许由数字、字母、下划线、-和.组成;且长度不能超过10。
    • 数据字段:通过自动添加、手动添加等方式添加数据目标字段信息。

    配置完成后,单击确认按钮,完成目标节点配置。

  • 基础模式:

    您可通过以下三种方式操作字段映射关系:

    • 自动添加:单击自动添加按钮,根据两端数据表信息,可以自动填充来源和目标的字段信息。
    • 手动添加:单击手动添加按钮,可以手动编辑来源和目标的字段信息,可以逐个添加。

      说明

      来源端字段信息支持输入数据库函数和常量配置,单击手动添加按钮,在源表字段中输入需添加的值,并选择函数或常量类型,例如:

      • 函数:JDBC 方式读取时,支持您输入 now()、current_timestamp()、unix_timestamp() 等 Hive 数据库支持的函数。
      • 常量:JDBC 方式读取时,您可自定义输入常量值,'123'、'${DATE+1}'、'${hour}' 等,输入值两侧需要加上英文单引号,支持结合时间变量参数使用。
      • 分区字段:手动添加时,支持下拉选择源表中的分区字段来配置映射关系。
    • 移动\删除字段:您也可以根据需要移动字段映射顺序或删除字段。

5.4 DSL 配置说明

Hive 数据源支持使用脚本模式(DSL)的方式进行配置。
在某些复杂场景下,或当数据源类型暂不支持可视化配置时,您可通过任务脚本的方式,按照统一的 Json 格式,编写 Hive Reader 和 Hive Writer 参数脚本代码,来运行数据集成任务。

5.4.1 进入 DSL 模式

进入 DSL 模式操作流程,可详见 MySQL 数据源-4.4.1 进入DSL 模式

5.4.2 Hive 离线读

根据实际情况替换 Hive 离线读相应参数,Hive 离线读脚本示例如下:

"reader": {
        // [required] datasource type
        "type": "hive",
        // [optional] datasource id, set it if you have registered datasource
        "datasource_id": 65xxx5,
        // [required] user parameter
        "parameter": {
          "partition": "date=20240304/hour=22",
          "columns": [{
                        "upperCaseName": "ID",
                        "name": "id",
                        "type": "int"
                },
                {
                        "upperCaseName": "NAME",
                        "name": "name",
                        "type": "string"
                }
          ],
          "table_name": "mysql2hive_testp",
          "readerMode": "hdfs"        
        }
    }

Reader 参数说明,其中参数名称前带 * 的为必填参数,名称前未带 * 的为可选填参数:

参数名

描述

*type

数据源类型,对于 Hive 类型,填写:hive

*datasource_id

注册的 Hive 数据源 ID。可以在项目控制台 > 数据源管理界面中查找。

*table_name

填写数据源下需要读取的 Hive 表名。

*readerMode

Hive 数据读取方式,支持 hdfs、jdbc 两种模式:

  • 基于 HDFS:需要指定分区字段的分区内容,仅支持单分区内容的读取。
  • 基于 JDBC:通过 SQL 读取数据,可实现字段的 where 过滤。

partition

readerMode 配置为 hdfs 时,需配置 partition 参数,即 Hive 表分区字段信息。

filter

readerMode 配置为 jdbc 时,需配置 filter 参数,即同步数据的筛选条件,同步数据时只会同步符合过滤条件的数据,直接填写关键词 where 后的过滤 SQL 语句。

  • 如将过滤条件指定为:date>=${date} ,表示只同步 date 大于等于 ${date}。
  • 过滤条件可以有效地进行业务增量同步。如果不配置,默认会同步全量数据。

*columns

所配置的表中,需要同步的列名集合,使用 JSON 的数组描述字段信息。

  • 支持列裁剪:列可以挑选部分列进行导出。
  • 支持列换序:列可以不按照表 Schema 信息顺序进行导出。
  • column 必须显示指定同步的列集合,不允许为空。
  • 支持函数、常量形式添加列:
    • 函数:MySQL Reader 支持您输入 now()、current_timestamp()、unix_timestamp() 等 MySQL 数据库支持的函数。
    • 常量:MySQL Reader 支持您自定义输入常量值,如 '123'、'${DATE}'、'${hour}' 等,输入值两侧需要加上英文单引号,支持结合时间变量参数使用。

5.4.3 Hive 离线写

根据实际情况替换 Hive 离线写相应参数,Hive 离线写脚本示例如下:

// writer config
    "writer": {
        // [required] datasource type
        "type": "hive",
        // [optional] datasource id, set it if you have registered datasource
        "datasource_id": 65xxx5,
        // [required] user parameter
         "parameter": {
                "partition": "date=${date},hour=${hour}",
                "table_name": "dts_db_testxxx",
                "columns": [{
                                "upperCaseName": "BOOBLE",
                                "name": "booble",
                                "type": "boolean"
                        },
                        {
                                "upperCaseName": "ISODATE",
                                "name": "isodate",
                                "type": "date"
                        }
                ],
                "partitions": [{
                        "name": "date",
                        "type": "string",
                        "value": "20240122"
                }, {
                        "name": "hour",
                        "type": "string",
                        "value": "16"
                }],
                "writeMode": "overwrite"
        }
    }

Writer 参数说明,其中参数名称前带 * 的为必填参数,名称前未带 * 的为可选填参数:

参数名

描述

*type

数据源类型,对于 Hive 类型,填写:hive

*datasource_id

注册的 Hive 数据源 ID。可以在项目控制台 > 数据源管理界面中查找。

*db_name

填写需要读取的 Hive 数据库名称信息。

*table_name

填写数据源下所属需数据写入的 Hive 表名。

partition

配置 Hive 表的分区信息, 支持表达式形式配置,多个分区之间用英文逗号分隔,如:date=${date},hour=${hour}

*writeMode

填写数据写入 Hive 的方式,支持 overwrite、insert into 两种方式:

  • overwrite: 先删除原有数据再写入新数据;
  • insert into: 直接写入新数据。

*columns

所配置的表中,需要同步的列名集合,使用 JSON 的数组描述字段信息。

5.4.4 Hive 实时写

根据实际情况替换 Hive 实时写相应参数,Hive 实时写脚本示例如下:

// writer config
    "writer": {
        // [required] datasource type
        "type": "hive",
        // [optional] datasource id, set it if you have registered datasource
        "datasource_id": 65xxx5,
        // [required] user parameter
         "parameter": {
                "table_name": "kafka2hive_json_fq_not_delete",
                "enable_event_time": "true",
                "proto": {
                        "descriptor": "CsEBCg9QYk1lc3NhZ2UucHJvdG8SDHRlc3RfbWVzc2FnZSKfAQoJUGJNZXNzYWdlEg4KAmlkGAEgAigDUgJpZBISCgRuYW1lGAIgAigJUgRuYW1lEhgKB2FkZHJlc3MYAyACKAlSB2FkZHJlc3MSHwoLY3JlYXRlX3RpbWUYBCABKANSCmNyZWF0ZVRpbWUSHQoKZXZlbnRfdGltZRgFIAEoA1IJZXZlbnRUaW1lEhQKBXByaWNlGAYgAigBUgVwcmljZQ==",
                        "class_name": "PbMessage"
                },
                "hdfs": {
                        "dump_type": "hdfs.dump_type.pb"
                },
                "partition_infos": "[{\"name\":\"date\",\"type\":\"TIME\"},{\"name\":\"hour\",\"type\":\"TIME\"}]",
                "source_schema": "[{\"name\":\"id\",\"type\":\"bigint\"},{\"name\":\"create_time\",\"type\":\"bigint\"},{\"name\":\"price\",\"type\":\"double\"}]",
                "sink_schema": "[{\"name\":\"id\",\"type\":\"bigint\"},{\"name\":\"create_time\",\"type\":\"bigint\"},{\"name\":\"price\",\"type\":\"float\"}]",
                "event_time_fields": "create_time"
        }
    }

6 高级参数可选配置

6.1 高级参数示例

高级参数配置时,需要在对应参数名称前加上:job.common. 前缀(通用参数)、job.writer. 前缀(写入参数),如下图所示:
Image

参数名称

参数说明

默认值

job.common.checkpoint_interval

设定 Checkpoint 刷新时间,默认 15 分钟,如果实时写入 Hive 时,写入 Hive 时间依据此参数。

900000

job.writer.partition_strategy

参数分区创建策略
参数值:partition_first、partition_last
适应场景:流任务写数据时设置为 partition_first 时,便可实时查看当前 Hive 分区数据。

partition_last

job.writer.partition.date_format

写入动态日期分区格式,可配置为:yyyyMMdd、yyyy-MM-DD

yyyyMMdd

job.writer.partition.hour_format

写入动态小时分区格式,可配置为:hh、HH

HH

job.writer.null_string_as_null

将脏数据中无法转换的列自动转换为 null。

false

job.writer.null_string_as_null

复杂类型中的 string 类型,默认会将 null 写为空字符串。如果需要配置默认写入 null,可以将此参数配置为 true。

false

job.writer.case_insensitive

默认会将数据全部转换为小写。

true

job.writer.convert_error_column_as_null

将脏数据中无法转换的列自动转换为 null。

false

job.writer.dump.directory_frequency

写入 HDFS 文件夹的频率,支持以下参数:

  • 天级:dump.directory_frequency.day
  • 小时级:dump.directory_frequency.hour

dump.directory_frequency.day

6.2 EMR 集群开启 Proton 服务后的相关参数

若数据源接入方式为 EMR Hive 数据源时,当 EMR 集群开启 Proton 服务,且集群中没有配置 TOS 认证相关的参数配置,则您需在任务中添加以下高级参数:

  • 离线写通道:
    在高级参数中增加 TOS 认证配置

    参数说明:

    高级参数 Key

    高级参数 Value

    job.writer.extra_config

    {"fs.tos.access-key-id":"your access key","fs.tos.secret-access-key":"your secret key"}

  • 实时写通道:
    在高级参数中增加 TOS 认证配置

    参数说明:

    高级参数key

    高级参数value

    job.writer.extra_metastore_properties

    {"fs.tos.access-key-id":"your access key","fs.tos.secret-access-key":"your secret key"}

说明

  1. 如果开启 Proton 服务的 EMR 集群,已经在 HDFS 组件的服务参数 core-site.xml 文件中,配置了 TOS 认证相关的配置参数:fs.tos.access-key-id 和 fs.tos.secret-access-key,则离线写集成作业无需操作,已有的实时写集成作业重启即可,两种任务均不用添加以上高级参数。
    Image
  2. Access key/Secret key 信息,您可以进入火山引擎访问控制台的密钥管理界面获取,即 Access Key ID/ Secret Access Key 信息。