本部分提供有关在使用 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 Subscriber (
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 记录标头。
如需了解详情,请参阅 消息转换。