排查 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 来源连接器找不到 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 记录标头。

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

后续步骤