排查 Pub/Sub 连接器问题

本部分针对使用 Pub/Sub 来源连接器或 Pub/Sub 接收器连接器时遇到的常见问题提供了问题排查指南。

缺少 Pub/Sub 权限

如果 Managed Kafka 服务账号无权访问 Pub/Sub 资源,则会发生以下错误:

PERMISSION_DENIED: User not authorized to perform this action.

此错误可能是由多种原因造成的。

  • Pub/Sub 源连接器:Managed Kafka 服务账号可能没有访问 Pub/Sub 订阅的权限。如需解决此问题,请向 Managed Kafka 服务账号授予以下两个 Identity and Access Management (IAM) 角色:

    • Pub/Sub Subscriber (roles/pubsub.subscriber)
    • Pub/Sub Viewer (roles/pubsub.viewer)

    如需了解详情,请参阅授予从 Pub/Sub 订阅中读取数据的权限。

  • Pub/Sub 接收器连接器:Managed Kafka 服务账号可能没有向 Pub/Sub 主题发布消息的权限。如需解决此问题,请为 Managed Kafka 服务授予 Pub/Sub Publisher (roles/pubsub.publisher) IAM 角色。

    如需了解详情,请参阅授予向 Pub/Sub 主题发布消息的权限。

验证订阅时出错

如果 Pub/Sub Source 连接器找不到 Pub/Sub 订阅,则该连接器会失败,并显示类似于以下内容的错误:

org.apache.kafka.connect.errors.ConnectException: Error verifying the subscription SUBSCRIPTION for project PROJECT

如需解决此问题,请验证连接器的 cps.subscription 配置是否指定了正确的订阅,以及您的项目中是否存在该订阅。

连接器无法转换记录

如果连接器的键转换器或值转换器与记录的数据类型不兼容,连接器日志中会显示类似以下内容的消息:

org.apache.kafka.connect.errors.DataException: Invalid schema type for
CONVERTER_NAME: DATA_FORMAT

如需解决此问题,请将键转换器或值转换器更改为正确的类,以支持架构数据类型。

例如,如果您将密钥转换器设置为 ByteArrayConverter,则可能会看到错误 "Invalid schema type for ByteArrayConverter: STRING"。出现此错误的原因是 ByteArrayConverter 不支持 STRING 类型。而是改用 org.apache.kafka.connect.storage.StringConverter。

ByteArrayConverter 的架构类型无效

当 Pub/Sub 源连接器输出具有 struct 值的 Kafka 记录,但连接器的值转换器为 ByteArrayConverter 时,会出现以下问题。

Pub/Sub 消息未写入 Kafka 主题,并且连接器日志中显示类似以下内容的错误:

org.apache.kafka.connect.errors.DataException: Invalid schema type for ByteArrayConverter: STRUCT

如需解决此问题,请对连接器配置进行以下任意一项更改:

  • 将 value.converter 更改为 org.apache.kafka.connect.json.JsonConverter。 借助此设置,连接器会将 struct 转换为 JSON。

  • 不更改 value.converter,但向配置中添加 kafka.record.headers=true。使用此设置,连接器会将消息数据写入为字节数组,而不是 struct。Pub/Sub 消息中的任何自定义属性都会写入为 Kafka 记录标头。

如需了解详情,请参阅消息转换。

后续步骤

Apache Kafka® 是 Apache Software Foundation 或其关联公司在美国和/或其他国家/地区的注册商标。