如何让 Kafka Connect BigQuery Sink 连接器为每个事件类型而不是每个主题创建一个 table?

How to make the Kafka Connect BigQuery Sink Connector create one table per event type and not per topic?

我在我们的 Kafka (Avro) 事件中使用 confluentinc/kafka-connect-bigquery。在某些主题上,我们有不止一种事件类型,例如 UserRegisteredUserDeleted 是关于主题 domain.user.

我们架构注册表中的主题如下所示。

curl --silent -X GET http://avro-schema-registry.core-kafka.svc.cluster.local:8081/subjects | jq .
[...]
  "domain.user-com.acme.message_schema.domain.user.UserDeleted",
  "domain.user-com.acme.message_schema.domain.user.UserRegistered",
  "domain.user-com.acme.message_schema.type.domain.key.DefaultKey",
[...]

我的 properties/connector.properties(我正在使用 quickstart 文件夹。)如下所示:

[...]
topics.regex=domain.*
sanitizeTopics=true
autoCreateTables=true
[...]

在 BigQuery 中创建了一个名为 domain_user 的 table。但是,我想要两个 table,例如 domain_user_userregistereddomain_user_userdeleted 或类似的,因为这两种事件类型的模式完全不同。我怎样才能做到这一点?

我认为您可以使用 SchemaNameToTopic 单消息转换来完成此操作。通过将主题名称设置为模式名称,这将传播到为创建的 BigQuery table.

指定的名称