Hive 常用于存储结构化数据,其底层使用 HDFS 存储数据。全域数据集成(DataSail)提供了基于 HDFS 文件和基于 JDBC 两种方式的数据同步功能:
说明
EMR Serverless Spark 目前为白名单形式使用,您可通过提工单方式,咨询 EMR 支持人员,进行后台开通后使用。
Hive reader 和 Writer 会通过 HiveServer2 拿到目标 Hive 表的元信息,从而获取到各个字段的类型,自动完成任务的 Schema 配置,用户只需单击自动添加即可完成 Schema 配置。
类型分类 | 数据集成 Column 配置类型 |
---|---|
整数类 | tinyint、smallint、int、bigint |
浮点类 | float、double、decimal |
字符串类 | string |
时间类 | date、timestamp |
布尔类 | boolean |
数组类 | array |
字典类 | map |
二进制类型 | binary |
新建数据源操作详见配置数据源,以下为您介绍不同接入方式的 Hive 数据源配置相关信息:
说明
若后续可视化配置 Hive 离线读使用 JDBC 方式读取数据时,EMR-Hive 数据源和连接串形式 Hive 数据源配置中,配置信息中的用户名和密码必须要填写。
EMR-Hive 数据源
注意
其中参数名称前带 * 的为必填参数,名称前未带 * 的为可选填参数。
参数 | 说明 |
---|---|
基本配置 | |
*数据源类型 | Hive |
*接入方式 | EMR Hive |
*数据源名称 | 数据源的名称,可自行设置,仅支持中文,英文,数字,“_”,100个字符以内。 |
参数配置 | |
*认证方式 | 访问 Hive 数据源时,支持使用 Kerberos 认证的身份认证方式;若访问时无需认证,则认证方式选择无。 |
*EMR 集群 ID | |
*数据库名 | 下拉选择集群环境中,已创建的 Hive 数据库名称。 |
*Hive 版本号 | 依据已选择的 EMR Hadoop 集群,自动展现集群中包含的 Hive 版本。 |
用户名 | 有权限访问数据库的用户名信息。 |
密码 | 输入用户名对应的密码信息。 |
*keyTab文件 | 认证方式选择 kerberos 认证时,需要将 keyTab 配置文件上传。 |
*conf文件 | 认证方式选择 kerberos 认证时,需要将 conf 配置文件上传。 |
*principal | 认证方式为 Kerberos 认证时,需输入用于认证的 Principal 身份信息。 |
扩展配置 | 您可输入 HDFS 配置的可选扩展,例如 Hadoop HA 的配置信息。 |
EMR Serverless Hive 数据源
其中参数名称前带 * 的为必填参数,名称前未带 * 的为可选填参数。
参数 | 说明 |
---|---|
基本配置 | |
*数据源类型 | Hive |
*接入方式 | EMR Serverless Hive |
*数据源名称 | 数据源的名称,可自行设置,仅支持中文,英文,数字,“_”,100个字符以内。 |
参数配置 | |
*Hive 版本号 | 默认仅支持 Hive 3.1.3。 |
*Accesskey ID | 进入火山引擎,访问控制台的密钥管理界面,复制 Accesskey ID 填写到此处。如果为子用户,请联系主账号获取密钥。 注意 填写的 AK\SK 信息,需拥有以下相应的权限:
|
*Secret Access Key | 与 AccessKey ID 配套使用,类似登录密码,用于签名您的访问参数,以防被篡改。 |
*数据库名 | 输入上方 AK/SK 信息后,可在此下拉选择 EMR Serverless Spark 环境中,已创建的 Hive 数据库名称。 |
扩展配置 | 您可输入 HDFS 配置的可选扩展,例如 Hadoop HA 的配置信息。 |
连接串形式 Hive 数据源
用连接串形式配置 Hive 数据源,其中参数名称前带 * 的为必填参数,名称前未带 * 的为可选填参数。
参数 | 说明 |
---|---|
基本配置 | |
*数据源类型 | Hive |
*接入方式 | 连接串 |
*数据源名称 | 数据源的名称,可自行设置,仅支持中文,英文,数字,“_”,100个字符以内。 |
参数配置 | |
*认证方式 | 访问 Hive 数据源时,支持使用 Kerberos 认证的身份认证方式;若访问时无需认证,则认证方式选择无。 |
*数据库名 | 输入已创建的 Hive 数据库名称。 |
用户名 | 有权限访问数据库的用户名信息。 |
密码 | 输入用户名对应的密码信息。 |
*Hive 版本号 | 支持下拉选择 Hive 3.1.2 的版本。 |
*MetaStore URI | 输入 Hive 元数据存储的 MetaStore uri 地址,以 thrift://ip1:port,thrift://ip2:port 的形式,多个地址可用英文“,”分隔。 |
*Hive JDBC URL | 输入 Hive JDBC URL 链接串地址信息:
|
*keyTab文件 | 认证方式选择 kerberos 认证时,需要将 keyTab 配置文件上传。 |
*conf文件 | 认证方式选择 kerberos 认证时,需要将 conf 配置文件上传。 |
*principal | 认证方式为 Kerberos 认证时,需输入用于认证的 Principal 身份信息。 |
defaultFS | 填写 Hadoop HDFS 文件的 namenode 节点地址,以 hdfs:// ip:port 的形式填写。 |
扩展配置 | 填写必要的 HDFS 或 Hive 配置,默认情况无需额外配置,填写
说明
|
Hive 数据源测试连通性成功后,进入到数据开发界面,开始新建 Hive 相关通道任务。新建任务方式详见离线数据同步、流式数据同步。
任务创建成功后,您可根据实际场景,配置 Hive 离线读或 Hive 离线写等通道任务。
数据来源选择 Hive,并完成以下相关参数配置:
其中参数名称前带 * 的为必填参数,名称前未带 * 的为可选填参数。
参数 | 说明 |
---|---|
*数据源类型 | 下拉选择 Hive 数据源类型。 |
*数据源名称 | 已在数据源管理中注册成功的 Hive 数据源,下拉可选。 |
*数据表 | 选择需要采集的数据表名称信息,目前单个任务只支持将单表的数据采集到一个目标表中。
说明 数据源接入方式为 EMR Serverless Hive 时,暂不支持快速建表和修改数据表操作。相应的源库表操作需要前往 EMR Serverless Spark 控制台中进行。 |
读取方式 | Hive 读取方式支持“基于 HDFS”和“基于 JDBC”:
说明 选择 JDBC 方式读取数据,且数据源配置使用 EMR-Hive 形式或连接串形式时,其数据源配置信息中的用户名和密码必须要填写。 |
分区设置 | 基于 HDFS 方式读取数据时,会根据所选数据库表,获取 Hive 表中分区信息,指定读取的分区。分区内容可通过时间变量参数方式进行设置,详见平台时间变量与常量说明。 说明
|
数据过滤 | 基于 JDBC 方式读取数据时,支持您将需要同步的数据进行筛选条件设置,只同步符合过滤条件的数据,可直接填写关键词 where 后的过滤 SQL 语句且无需填写结束符号(;),例如:create_time > '${date}',不需要填写 where 关键字。 说明 该过滤语句通常用作增量同步,暂时不支持 limit 关键字过滤,其 SQL 语法需要和选择的数据源类型对应。 |
数据目标类型选择 Hive,并完成以下相关参数配置:
其中参数名称前带 * 的为必填参数,名称前未带 * 的为可选填参数。
参数 | 说明 |
---|---|
*目标类型 | 下拉选择 Hive 数据源类型。 |
*数据源名称 | 已在数据源管理中注册成功的 Hive 数据源,下拉可选。 |
*数据表 | 选择需要写入数据的 Hive 表名称信息,下拉可选。
说明 数据源接入方式为 EMR Serverless Hive 时,若目标 Hive 表还未创建,且源端已选定需要采集的表时,您也可通过单击“一键建表”按钮,依据对源端采集的字段信息,快速在当前窗口以弹窗形式,进行目标表 DDL 语句的编辑创建。 |
分区设置 | 分区字段从 Hive 表中自动获取。
|
数据写入方式 | 下拉选择目标数据写入方式,支持以下两种写入方式:
|
流式集成任务实时写入 Hive 数据源,数据目标类型选择 Hive,并完成以下相关参数配置:
其中参数名称前带 * 的为必填参数,名称前未带 * 的为可选填参数。
参数 | 说明 |
---|---|
*目标类型 | 下拉选择 Hive 数据源类型。 |
*数据源名称 | 已在数据源管理中注册成功的 Hive 数据源,下拉可选。 |
*数据表 | 选择需要写入数据的 Hive 表名称信息,下拉可选。
说明 数据源接入方式为 EMR Serverless Hive 时,若目标 Hive 表还未创建,且源端已选定需要采集的表时,您也可通过单击“一键建表”按钮,依据对源端采集的字段信息,快速在当前窗口以弹窗形式,进行目标表 DDL 语句的编辑创建。 |
分区频率 | 支持选择天级或小时级的分区频率:
说明 数据跟随 Hive 分区生成的时间产出,并非实时写入。 |
分区设置 | 分区字段从 Hive 表中自动获取。分区内容可设置具体时间分区粒度,可以用表达式:${date}、${hour} 等参数变量表示。 说明 分区类型中动态分区数目不能过多,会导致消费速率降低,推荐<10。 |
数据来源和目标端配置完成后,需要指定来源和目标端的字段映射关系,根据字段映射关系,数据集成任务将源端字段中的数据,写入到目标端对应字段中。
字段映射支持选择基础模式和转换模式配置映射:
注意
基础模式和转换模式不支持互相切换,模式切换后,将清空现有字段映射中所有配置信息,一旦切换无法撤销,需谨慎操作。
转换模式:
字段映射支持数据转换,您可根据实际业务需求进行配置,将源端采集的数据,事先通过数据转换后,以指定格式输入到目标端数据库中。
转换模式详细操作说明详见4.1 转换模式
在转换模式中,你可依次配置:来源节点、数据转换、目标节点信息:
配置节点 | 说明 |
---|---|
来源节点 | 配置数据来源 Source 节点信息:
配置完成后,单击确认按钮,完成来源节点配置。 |
数据转换 | 单击数据转换右侧添加按钮,选择 SQL 转换方式,配置转换信息和规则:
配置完成后,单击确认按钮,完成数据转换节点配置。SQL 脚本示例详见4.1.2 添加转换节点。 |
目标节点 | 配置目标节点 Sink 信息:
配置完成后,单击确认按钮,完成目标节点配置。 |
基础模式:
您可通过以下三种方式操作字段映射关系:
说明
来源端字段信息支持输入数据库函数和常量配置,单击手动添加按钮,在源表字段中输入需添加的值,并选择函数或常量类型,例如:
Hive 数据源支持使用脚本模式(DSL)的方式进行配置。
在某些复杂场景下,或当数据源类型暂不支持可视化配置时,您可通过任务脚本的方式,按照统一的 Json 格式,编写 Hive Reader 和 Hive Writer 参数脚本代码,来运行数据集成任务。
进入 DSL 模式操作流程,可详见 MySQL 数据源-4.4.1 进入DSL 模式。
根据实际情况替换 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 两种模式:
|
partition | readerMode 配置为 hdfs 时,需配置 partition 参数,即 Hive 表分区字段信息。 |
filter | readerMode 配置为 jdbc 时,需配置 filter 参数,即同步数据的筛选条件,同步数据时只会同步符合过滤条件的数据,直接填写关键词 where 后的过滤 SQL 语句。
|
*columns | 所配置的表中,需要同步的列名集合,使用 JSON 的数组描述字段信息。
|
根据实际情况替换 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 两种方式:
|
*columns | 所配置的表中,需要同步的列名集合,使用 JSON 的数组描述字段信息。 |
根据实际情况替换 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" } }
高级参数配置时,需要在对应参数名称前加上:job.common.
前缀(通用参数)、job.writer.
前缀(写入参数),如下图所示:
参数名称 | 参数说明 | 默认值 |
---|---|---|
job.common.checkpoint_interval | 设定 Checkpoint 刷新时间,默认 15 分钟,如果实时写入 Hive 时,写入 Hive 时间依据此参数。 | 900000 |
job.writer.partition_strategy | 参数分区创建策略 | 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 |
若数据源接入方式为 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"} |
说明