本文说明如何创建MaxCompute Sink Connector将数据从消息队列Kafka版实例的数据源Topic导出至MaxCompute的表。
前提条件
- 消息队列Kafka版
- 为消息队列Kafka版实例开启Connector。更多信息,请参见开启Connector。
- 为消息队列Kafka版实例创建数据源Topic。更多信息,请参见步骤一:创建Topic。
本文以名称为maxcompute-test-input的Topic为例。
- 大数据计算服务(MaxCompute)
- 通过MaxCompute客户端创建表。更多信息,请参见创建表。
本文以名称为connector_test的项目下名称为test_kafka的表为例。该表的建表语句如下:
CREATE TABLE IF NOT EXISTS test_kafka(topic STRING,partition BIGINT,offset BIGINT,key STRING,value STRING) PARTITIONED by (pt STRING);
- 通过MaxCompute客户端创建表。更多信息,请参见创建表。
- 可选:事件总线EventBridge
说明 仅在您创建的Connector任务所属实例的地域为华东1(杭州)或西南1(成都)时,需要完成该操作。
注意事项
- 仅支持在同地域内,将数据从消息队列Kafka版实例的数据源Topic导出至MaxCompute。Connector的限制说明,请参见使用限制。
- 如果Connector所属实例的地域为华东1(杭州)或西南1(成都),该功能会部署至事件总线EventBridge。
- 事件总线EventBridge目前免费供您使用。更多信息,请参见计费说明。
- 创建Connector时,事件总线EventBridge会为您自动创建服务关联角色AliyunServiceRoleForEventBridgeSourceKafka和AliyunServiceRoleForEventBridgeConnectVPC。
- 如果未创建服务关联角色,事件总线EventBridge会为您自动创建对应的服务关联角色,以便允许事件总线EventBridge使用此角色访问消息队列Kafka版和专有网络VPC。
- 如果已创建服务关联角色,事件总线EventBridge不会重复创建。
- 部署到事件总线EventBridge的任务暂时不支持查看任务运行日志。Connector任务执行完成后,您可以在订阅数据源Topic的Group中,通过消费情况查看任务进度。具体操作,请参见查看消费状态。
操作流程
使用MaxCompute Sink Connector将数据从消息队列Kafka版实例的数据源Topic导出至MaxCompute的表操作流程如下:
- 授予消息队列Kafka版访问MaxCompute的权限。
- 可选:创建MaxCompute Sink Connector依赖的Topic和Group
如果您不需要自定义Topic和Group,您可以直接跳过该步骤,在下一步骤选择自动创建。
重要 部分MaxCompute Sink Connector依赖的Topic的存储引擎必须为Local存储,大版本为0.10.2的消息队列Kafka版实例不支持手动创建Local存储的Topic,只支持自动创建。 - 创建并部署MaxCompute Sink Connector
- 结果验证
创建RAM角色
由于RAM角色不支持直接选择消息队列Kafka版作为受信服务,您在创建RAM角色时,需要选择任意支持的服务作为受信服务。RAM角色创建后,手动修改信任策略。
添加权限
为使Connector将消息同步到MaxCompute表,您需要为创建的RAM角色至少授予以下权限:
客体 | 操作 | 描述 |
---|---|---|
Project | CreateInstance | 在项目中创建实例。 |
Table | Describe | 读取表的元信息。 |
Table | Alter | 修改表的元信息或添加删除分区。 |
Table | Update | 覆盖或添加表的数据。 |
关于以上权限的详细说明以及授权操作,请参见MaxCompute权限。
为本文创建的AliyunKafkaMaxComputeUser1添加权限的示例步骤如下:
创建MaxCompute Sink Connector依赖的Topic
您可以在消息队列Kafka版控制台手动创建MaxCompute Sink Connector依赖的5个Topic,包括:任务位点Topic、任务配置Topic、任务状态Topic、死信队列Topic以及异常数据Topic。每个Topic所需要满足的分区数与存储引擎会有差异,具体信息,请参见配置源服务参数列表。
创建MaxCompute Sink Connector依赖的Group
您可以在消息队列Kafka版控制台手动创建MaxCompute Sink Connector数据同步任务使用的Group。该Group的名称必须为connect-任务名称,具体信息,请参见配置源服务参数列表。
创建并部署MaxCompute Sink Connector
创建并部署用于将数据从消息队列Kafka版同步至MaxCompute的MaxCompute Sink Connector。
- 登录消息队列Kafka版控制台。
- 在概览页面的资源分布区域,选择地域。
- 在左侧导航栏,单击Connector 任务列表。
- 在Connector 任务列表页面,从选择实例的下拉列表选择Connector所属的实例,然后单击创建 Connector。
- 在创建 Connector配置向导面页面,完成以下操作。
- 创建完成后,在Connector 任务列表页面,找到创建的Connector ,单击其操作列的部署。
发送测试消息
部署MaxCompute Sink Connector后,您可以向消息队列Kafka版的数据源Topic发送消息,测试数据能否被同步至MaxCompute。
- 在Connector 任务列表页面,找到目标Connector,在其右侧操作列,单击测试。
- 在发送消息面板,发送测试消息。
- 发送方式选择控制台。
- 在消息 Key文本框中输入消息的Key值,例如demo。
- 在消息内容文本框输入测试的消息内容,例如 {"key": "test"}。
- 设置发送到指定分区,选择是否指定分区。
- 单击是,在分区 ID文本框中输入分区的ID,例如0。如果您需查询分区的ID,请参见查看分区状态。
- 单击否,不指定分区。
- 发送方式选择Docker,执行运行 Docker 容器生产示例消息区域的Docker命令,发送消息。
- 发送方式选择SDK,根据您的业务需求,选择需要的语言或者框架的SDK以及接入方式,通过SDK发送消息。
- 发送方式选择控制台。
查看表数据
向消息队列Kafka版的数据源Topic发送消息后,在MaxCompute客户端查看表数据,验证是否收到消息。
查看本文写入的test_kafka的示例步骤如下: