Google Cloud BigQuery Sink (Legacy) Connector for Confluent Cloud¶
Tip
Confluent recommends using version 2 of this connector. For more information, see Google BigQuery Sink V2 Connector for Confluent Cloud and Legacy to V2 Connector Migration.
You can use the Kafka Connect Google BigQuery Sink connector for Confluent Cloud to export Avro, JSON Schema, Protobuf, or JSON (schemaless) data from Apache Kafka® topics to BigQuery. The BigQuery table schema is based upon information in the Apache Kafka® schema for the topic.
Note
This is a Quick Start for the fully-managed cloud connector. If you are installing the connector locally for Confluent Platform, see Google BigQuery Sink connector for Confluent Platform.
Features¶
The connector supports insert operations and attempts to detect duplicates. See BigQuery troubleshooting for additional information.
The connector uses the BigQuery insertAll streaming api. The records are immediately available in the table for querying.
The connector supports streaming from a list of topics into corresponding tables in BigQuery.
Note
Make sure to review BigQuery rate limits if you are planning to use multiple connectors with a high number of tasks.
Even though the connector streams records one at a time by default (as opposed to running in batch mode), the connector is scalable because it contains an internal thread pool that allows it to stream records in parallel. The internal thread pool defaults to 10 threads.
The connector supports several time-based table partitioning strategies using the property
partitioning.type
.The connector supports routing invalid records to the DLQ. This includes any records having a
400
code (invalid error message) from BigQuery.Note
DLQ routing does not work if Auto update schemas (
auto.update.schemas
) is enabled and the connector detects that the failure is due to schema mismatch.The connector supports Avro, JSON Schema, Protobuf, or JSON (schemaless) input data formats. Schema Registry must be enabled to use a Schema Registry-based format (for example, Avro, JSON_SR (JSON Schema), or Protobuf). See Schema Registry Enabled Environments for additional information.
For Avro, JSON_SR, and PROTOBUF, the connector provides the following configuration properties that support automated table creation and updates. You can select these properties in the UI or add them to the connector configuration, if using the Confluent CLI.
auto.create.tables
: Automatically create BigQuery tables if they don’t already exist. The connector expects that the BigQuery table name is the same as the topic name. If you create the BigQuery tables manually, make sure the table name matches the topic name.sanitize.topics
: Automatically sanitize topic names before using them as BigQuery table names. If not enabled, topic names are used as table names. If enabled, the table names created may be different from the topic names.auto.update.schemas
: Automatically update BigQuery tables.sanitize.field.names
Automatically sanitize field names before using them as column names in BigQuery. Note that Kafka field names become column names in BigQuery.
Note
New tables and schema updates may take a few minutes to be detected by the Google Client Library. For more information see the Google Cloud BigQuery API guide.
For more information and examples to use with the Confluent Cloud API for Connect, see the Confluent Cloud API for Managed and Custom Connectors section.
Limitations¶
Be sure to review the following information.
- For connector limitations, see Google BigQuery Sink (Legacy) Connector limitations.
- If you plan to use one or more Single Message Transforms (SMTs), see SMT Limitations.
- If you plan to use Confluent Cloud Schema Registry, see Schema Registry Enabled Environments.
Supported data types¶
The following list contains the supported BigQuery data types and the associated
connector mapping. Note that this mapping applies when the connector creates a
table automatically or updates schemas (that is, if either auto.create.tables
or
auto.update.schemas
is set to true
).
BigQuery Data Type | Connector Mapping |
---|---|
STRING | String |
INTEGER | INT8 |
INTEGER | INT16 |
INTEGER | INT32 |
INTEGER | INT64 |
FLOAT | FLOAT32 |
FLOAT | FLOAT64 |
BOOLEAN | Boolean |
BYTES | Bytes |
TIMESTAMP | Logical TIMESTAMP |
TIME | Logical TIME |
DATE | Logical DATE |
FLOAT | Logical Decimal |
DATE | Debezium Date |
TIME | Debezium MicroTime |
TIME | Debezium Time |
TIMESTAMP | Debezium MicroTimestamp |
TIMESTAMP | Debezium TIMESTAMP |
TIMESTAMP | Debezium ZonedTimestamp |
Quick Start¶
Use this quick start to get up and running with the Confluent Cloud Google BigQuery Sink connector. The quick start provides the basics of selecting the connector and configuring it to stream events to a BigQuery data warehouse.
Tip
Confluent recommends using Version 2 of this connector. For more information, see Google BigQuery Sink V2 Connector for Confluent Cloud.
- Prerequisites
An active Google Cloud account with authorization to create resources.
A BigQuery project is required. The project can be created using the Google Cloud Console.
The data system the sink connector is connecting to should be in the same region as your Confluent Cloud cluster. If you use a different region or cloud platform, be aware that you may incur additional data transfer charges. Contact your Confluent account team or Confluent Support if you need to use Confluent Cloud and connect to a data system that is in a different region or on a different cloud platform.
A BigQuery dataset is required in the project.
A service account that can access the BigQuery project containing the dataset. You can create this service account in the Google Cloud Console.
The service account must have access to the BigQuery project containing the dataset. You create and download a key when creating a service account. The key must be downloaded as a JSON file. It resembles the example below:
{ "type": "service_account", "project_id": "confluent-842583", "private_key_id": "...omitted...", "private_key": "-----BEGIN PRIVATE ...omitted... =\n-----END PRIVATE KEY-----\n", "client_email": "confluent2@confluent-842583.iam.gserviceaccount.com", "client_id": "...omitted...", "auth_uri": "https://accounts.google.com/oauth2/auth", "token_uri": "https://oauth2.googleapis.com/token", "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/certs", "client_x509_cert_url": "https://www.googleapis.com/robot/metadata/confluent2%40confluent-842583.iam.gserviceaccount.com" }
According to Google Cloud specifications, the service account will either have to have the BigQueryEditor primitive IAM role or the bigquery.dataEditor predefined IAM role. The minimum permissions are:
bigquery.datasets.get bigquery.tables.create bigquery.tables.get bigquery.tables.getData bigquery.tables.list bigquery.tables.update bigquery.tables.updateData
Kafka cluster credentials. The following lists the different ways you can provide credentials.
- Enter an existing service account resource ID.
- Create a Confluent Cloud service account for the connector. Make sure to review the ACL entries required in the service account documentation. Some connectors have specific ACL requirements.
- Create a Confluent Cloud API key and secret. To create a key and secret, you can use confluent api-key create or you can autogenerate the API key and secret directly in the Cloud Console when setting up the connector.
The Confluent CLI installed and configured for the cluster. See Install the Confluent CLI.
Schema Registry must be enabled to use a Schema Registry-based format (for example, Avro, JSON_SR (JSON Schema), or Protobuf). See Schema Registry Enabled Environments for additional information.
You must create a BigQuery table before using the connector, if you leave Auto create tables (
auto.create.tables
) set tofalse
(the default).You may need to create a schema in BigQuery, depending on how you set the Auto update schemas property (or
auto.update.schemas
).Auto update schemas set to true: You do not have to create a schema.
Auto update schemas set to false (the default): You must create a schema in BigQuery (as shown below). The connector does not automatically update the table.
Using the Confluent Cloud Console¶
Step 1: Launch your Confluent Cloud cluster¶
See the Quick Start for Confluent Cloud for installation instructions.
Step 2: Add a connector¶
In the left navigation menu, click Connectors. If you already have connectors in your cluster, click + Add connector.
Step 4: Enter the connector details¶
Note
- Ensure you have all your prerequisites completed.
- An asterisk ( * ) designates a required entry.
At the Add Google BigQuery Sink (Legacy) Connector screen, complete the following:
If you’ve already populated your Kafka topics, select the topics you want to connect from the Topics list.
To create a new topic, click +Add new topic.
- Select the way you want to provide Kafka Cluster credentials. You can
choose one of the following options:
- My account: This setting allows your connector to globally access everything that you have access to. With a user account, the connector uses an API key and secret to access the Kafka cluster. This option is not recommended for production.
- Service account: This setting limits the access for your connector by using a service account. This option is recommended for production.
- Use an existing API key: This setting allows you to specify an API key and a secret pair. You can use an existing pair or create a new one. This method is not recommended for production environments.
- Click Continue.
- Upload your GCP credentials file, the Google Cloud service accountJSON file with write permissions for BigQuery.
- In the Project ID field, enter the ID for the Google Cloud project where BigQuery is located.
- Enter the name for the dataset Kafka topics write to your BigQuery in the Dataset field.
- Click Continue.
Note
Configuration properties that are not shown in the Cloud Console use the default values. See Configuration Properties for all property values and definitions.
Select the Input Kafka record value format (data coming from the Kafka topic): AVRO, JSON_SR (JSON Schema), or PROTOBUF. A valid schema must be available in Schema Registry to use a schema-based message format (for example, Avro, JSON_SR (JSON Schema), or Protobuf). See Schema Registry Enabled Environments for additional information.
Show advanced configurations
Schema context: Select a schema context to use for this connector, if using a schema-based data format. This property defaults to the Default context, which configures the connector to use the default schema set up for Schema Registry in your Confluent Cloud environment. A schema context allows you to use separate schemas (like schema sub-registries) tied to topics in different Kafka clusters that share the same Schema Registry environment. For example, if you select a non-default context, a Source connector uses only that schema context to register a schema and a Sink connector uses only that schema context to read from. For more information about setting up a schema context, see What are schema contexts and when should you use them?.
Input Kafka record key format: Sets the data format for incoming record keys. Valid entries are AVRO, BYTES, JSON, JSON_SR, PROTOBUF, or STRING. A valid schema must be available in Schema Registry to use a schema-based message format (for example, Avro, JSON_SR (JSON Schema), or Protobuf).
Partitioning type: The partitioning type to use.
INGESTION_TIME: To use this type, existing tables must be partitioned by ingestion time. The connector writes to the partition for the current wall clock time. When Auto create tables is enabled, the connector creates tables partitioned by ingestion time.
NONE: The connector relies only on how the existing tables are set up. When Auto create tables is enabled, the connector creates non-partitioned tables.
RECORD_TIME: To use this type, existing tables must be partitioned by ingestion time. The connector writes to the partition that corresponds to the Kafka record’s timestamp. When Auto create tables is enabled, the connector creates tables partitioned by ingestion time.
TIMESTAMP_COLUMN: The connector relies only on how existing tables are set up. When Auto create tables is enabled, the connector creates tables partitioned using a field in a Kafka record value.
Kafka Topic to BigQuery Table Map: Map of topics to tables (optional). The required format is comma-separated tuples. For example,
<topic-1>:<table-1>,<topic-2>:<table-2>,...
Note that a topic name must not be modified using a regex single message transform (SMT) if using this option. Note that if this property is used,sanitize.topics
is ignored. Also, if the topic-to-table map doesn’t contain the topic for a record, the connector creates a table with the same name as the topic name.Auto create tables: Designates whether or not to automatically create BigQuery tables. The connector expects that the BigQuery table name is the same as the topic name. If you create the BigQuery tables manually, make sure the table name matches the topic name. Note that this property is available for AVRO only.
New tables and schema updates may take a few minutes to be detected by the Google Client Library. For more information see the Google Cloud BigQuery API guide.
Auto update schemas: Designates whether or not to automatically update BigQuery schemas. New fields in record schemas must be nullable. Note that this property is available for AVRO only.
Sanitize topics: Designates whether to automatically sanitize topic names before using them as table names in BigQuery. If not enabled, topic names are used as table names. If enabled, the table names created may be different from the topic names.
Sanitize field names: Whether to automatically sanitize field names before using them as field names in BigQuery.
Time partitioning type: The time partitioning type to use when creating new tables for
partitioning.type
:INGESTION_TIME
,RECORD_TIME
, orTIMESTAMP_COLUMN
.Time partitioning field name: The name of the field in the value that contains the timestamp to partition by in BigQuery and to enable timestamp partitioning for each table.
Allow schema unionization: If enabled, will cause record schemas to be combined with the current schema of the BigQuery table when performing schema updates.
All BigQuery fields nullable: If set to
true
, no fields are required in any produced BigQuery schema. All non-nullable Avro fields are translated as NULLABLE (or REPEATED, if arrays).Convert double special values: If set to
true
, a positive infinity value is converted toDouble.MAX_VALUE
, and negative infinity and NaN values are converted toDouble.MIN_VALUE
.Consumer configuration:
Max poll interval(ms): The maximum delay between subsequent consume requests to Kafka. This configuration property may be used to improve the performance of the connector, if the connector cannot send records to the sink system. Defaults to
300000
milliseconds (5 minutes).Max poll records: The maximum number of records to consume from Kafka in a single request. This configuration property may be used to improve the performance of the connector, if the connector cannot send records to the sink system. Defaults to
500
records.
For Transforms and Predicates, see the Single Message Transforms (SMT) documentation for details.
See Configuration Properties for all property values and definitions.
Click Continue.
Based on the number of topic partitions you select, you will be provided with a recommended number of tasks.
- To change the number of recommended tasks, enter the number of tasks for the connector to use in the Tasks field.
- Click Continue.
Step 5: Check the results in BigQuery¶
- From the Google Cloud Console, go to your BigQuery project.
- Query your datasets and verify that new records are being added.
For more information and examples to use with the Confluent Cloud API for Connect, see the Confluent Cloud API for Managed and Custom Connectors section.
Tip
When you launch a connector, a Dead Letter Queue topic is automatically created. See Confluent Cloud Dead Letter Queue for details.
Note
Make sure to review BigQuery rate limits if you are planning to use multiple connectors with a high number of tasks.
Using the Confluent CLI¶
Complete the following steps to set up and run the connector using the Confluent CLI.
Note
Make sure you have all your prerequisites completed.
Step 1: List the available connectors¶
Enter the following command to list available connectors:
confluent connect plugin list
Step 2: List the connector configuration properties¶
Enter the following command to show the connector configuration properties:
confluent connect plugin describe <connector-plugin-name>
The command output shows the required and optional configuration properties.
Step 3: Create the connector configuration file¶
Tip
Confluent recommends using Version 2 of this connector. For more information, see Google BigQuery Sink V2 Connector for Confluent Cloud.
Create a JSON file that contains the connector configuration properties. The following example shows the required connector properties.
{
"name" : "confluent-bigquery-sink",
"connector.class" : "BigQuerySink",
"kafka.auth.mode": "KAFKA_API_KEY",
"kafka.api.key" : "<my-kafka-api-key>",
"kafka.api.secret" : "<my-kafka-api-secret>",
"keyfile" : "omitted",
"project" : "<my-BigQuery-project>",
"datasets" : "<my-BigQuery-dataset>",
"input.data.format" : "AVRO",
"auto.create.tables" : "true"
"sanitize.topics" : "true"
"auto.update.schemas" : "true"
"sanitize.field.names" : "true"
"tasks.max" : "1"
"topics" : "pageviews",
}
Note the following property definitions:
"name"
: Sets a name for your new connector."connector.class"
: Identifies the connector plugin name.
"kafka.auth.mode"
: Identifies the connector authentication mode you want to use. There are two options:SERVICE_ACCOUNT
orKAFKA_API_KEY
(the default). To use an API key and secret, specify the configuration propertieskafka.api.key
andkafka.api.secret
, as shown in the example configuration (above). To use a service account, specify the Resource ID in the propertykafka.service.account.id=<service-account-resource-ID>
. To list the available service account resource IDs, use the following command:confluent iam service-account list
For example:
confluent iam service-account list Id | Resource ID | Name | Description +---------+-------------+-------------------+------------------- 123456 | sa-l1r23m | sa-1 | Service account 1 789101 | sa-l4d56p | sa-2 | Service account 2
"topics"
: Identifies the topic name or a comma-separated list of topic names."keyfile"
: This contains the contents of the downloaded JSON file. See Formatting keyfile credentials for details about how to format and use the contents of the downloaded credentials file."input.data.format"
: Sets the input Kafka record value format (data coming from the Kafka topic). Valid entries are AVRO, JSON_SR, PROTOBUF, or JSON. You must have Confluent Cloud Schema Registry configured if using a schema-based message format (for example, Avro, JSON_SR (JSON Schema), or Protobuf).
The following are additional properties you can use. See Configuration Properties for all property values and definitions.
"auto.create.tables"
: Designates whether to automatically create BigQuery tables. Defaults tofalse
. The connector expects that the BigQuery table name is the same as the topic name. If you create the BigQuery tables manually, make sure the table name matches the topic name. Note that this property is available for AVRO only.Note
New tables and schema updates may take a few minutes to be detected by the Google Client Library. For more information see the Google Cloud BigQuery API guide.
"auto.update.schemas"
: Defaults tofalse
. Designates whether or not to automatically update BigQuery schemas. Iftrue
is selected, new fields are added with mode NULLABLE in the BigQuery schema. Note that this property is available for AVRO only."sanitize.topics"
: Designates whether to automatically sanitize topic names before using them as table names. If not enabled, topic names are used as table names. If enabled, the table names created may be different from the topic names. Source topic names must comply with BigQuery naming conventions even ifsanitize.topics
is set totrue
."sanitize.field.names"
: Designates whether to automatically sanitize field names before using them as column names in BigQuery. BigQuery specifies that field names can only contain letters, numbers, and underscores. The sanitizer replaces invalid symbols with underscores. If the field name starts with a digit, the sanitizer adds an underscore in front of the field name.Caution
Fields
a.b
anda_b
will have the same value after sanitizing, which could cause a key duplication error. If not used, field names are used as column names."partitioning.type"
: Select a partitioning type to use:"INGESTION_TIME"
: To use this type, existing tables must be partitioned by ingestion time. The connector writes to the partition for the current wall clock time. When"auto.create.tables"
istrue
, the connector creates tables partitioned by ingestion time."NONE"
: The connector relies only on how the existing tables are set up. When"auto.create.tables"
istrue
, the connector creates non-partitioned tables."RECORD_TIME"
: To use this type, existing tables must be partitioned by record time. The connector writes to the partition that corresponds to the Kafka record’s timestamp. When"auto.create.tables"
istrue
, the connector creates tables partitioned by record time."TIMESTAMP_COLUMN"
: The connector relies only on how existing tables are set up. When"auto.create.tables"
istrue
, the connector creates tables partitioned using a field in a Kafka record value.
"time.partitioning.type"
: When usingINGESTION_TIME
,RECORD_TIME
, orTIMESTAMP_COLUMN
, enter a time span for time partitioning. If you enterNONE
, the connector honors the existing BigQuery table partitioning. When"auto.create.tables"
istrue
, the connector creates a table without a specific partitioning strategy."timestamp.partition.field.name"
: To use this property,"partitioning.type"
must beTIMESTAMP_COLUMN
and"auto.create.tables"
must be set totrue
. Enter the field name for the value that contains the timestamp to partition in BigQuery. This enables timestamp partitioning for each table.
Single Message Transforms: See the Single Message Transforms (SMT) documentation for details about adding SMTs using the CLI. See Unsupported transformations for a list of SMTs that are not supported with this connector.
See Configuration Properties for all property values and definitions.
Formatting keyfile credentials¶
The contents of the downloaded credentials file must be converted to string format before it can be used in the connector configuration.
Convert the JSON file contents into string format.
Add the escape character
\
before all\n
entries in the Private Key section so that each section begins with\\n
(see the highlighted lines below). The example below has been formatted so that the\\n
entries are easier to see. Most of the credentials key has been omitted.Tip
A script is available that converts the credentials to a string and also adds the additional escape characters where needed. See Stringify Google Cloud Credentials.
{ "name" : "confluent-bigquery-sink", "connector.class" : "BigQuerySink", "kafka.api.key" : "<my-kafka-api-key>", "kafka.api.secret" : "<my-kafka-api-secret>", "topics" : "pageviews", "keyfile" : "{\"type\":\"service_account\",\"project_id\":\"connect- 1234567\",\"private_key_id\":\"omitted\", \"private_key\":\"-----BEGIN PRIVATE KEY----- \\nMIIEvAIBADANBgkqhkiG9w0BA \\n6MhBA9TIXB4dPiYYNOYwbfy0Lki8zGn7T6wovGS5\opzsIh \\nOAQ8oRolFp\rdwc2cC5wyZ2+E+bhwn \\nPdCTW+oZoodY\\nOGB18cCKn5mJRzpiYsb5eGv2fN\/J \\n...rest of key omitted... \\n-----END PRIVATE KEY-----\\n\", \"client_email\":\"pub-sub@connect-123456789.iam.gserviceaccount.com\", \"client_id\":\"123456789\",\"auth_uri\":\"https:\/\/accounts.google.com\/o\/oauth2\/ auth\",\"token_uri\":\"https:\/\/oauth2.googleapis.com\/ token\",\"auth_provider_x509_cert_url\":\"https:\/\/ www.googleapis.com\/oauth2\/v1\/ certs\",\"client_x509_cert_url\":\"https:\/\/www.googleapis.com\/ robot\/v1\/metadata\/x509\/pub-sub%40connect- 123456789.iam.gserviceaccount.com\"}", "project": "<my-BigQuery-project>", "datasets":"<my-BigQuery-dataset>", "data.format":"AVRO", "tasks.max" : "1" }
Add all the converted string content to the
"keyfile"
credentials section of your configuration file as shown in the example above.
Step 4: Load the configuration file and create the connector¶
Enter the following command to load the configuration and start the connector:
confluent connect cluster create --config-file <file-name>.json
For example:
confluent connect cluster create --config-file bigquery-sink-config.json
Example output:
Created connector confluent-bigquery-sink lcc-ix4dl
Step 5: Check the connector status¶
Enter the following command to check the connector status:
confluent connect cluster list
Example output:
ID | Name | Status | Type
+-----------+-------------------------+---------+------+
lcc-ix4dl | confluent-bigquery-sink | RUNNING | sink
Step 6: Check the results in BigQuery.¶
- From the Google Cloud Console, go to your BigQuery project.
- Query your datasets and verify that new records are being added.
For more information and examples to use with the Confluent Cloud API for Connect, see the Confluent Cloud API for Managed and Custom Connectors section.
Tip
When you launch a connector, a Dead Letter Queue topic is automatically created. See Confluent Cloud Dead Letter Queue for details.
Note
Make sure to review BigQuery rate limits if you are planning to use multiple connectors with a high number of tasks.
Configuration Properties¶
Use the following configuration properties with this connector.
Which topics do you want to get data from?¶
topics
Identifies the topic name or a comma-separated list of topic names.
- Type: list
- Importance: high
Schema Config¶
schema.context.name
Add a schema context name. A schema context represents an independent scope in Schema Registry. It is a separate sub-schema tied to topics in different Kafka clusters that share the same Schema Registry instance. If not used, the connector uses the default schema configured for Schema Registry in your Confluent Cloud environment.
- Type: string
- Default: default
- Importance: medium
Input messages¶
input.key.format
Sets the input Kafka record key format. Valid entries are AVRO, BYTES, JSON, JSON_SR, PROTOBUF, or STRING. Note that you must have Confluent Cloud Schema Registry configured if using a schema-based message format like AVRO, JSON_SR, and PROTOBUF
- Type: string
- Default: BYTES
- Valid Values: AVRO, BYTES, JSON, JSON_SR, PROTOBUF, STRING
- Importance: high
input.data.format
Sets the input Kafka record value format. Valid entries are AVRO, JSON_SR, PROTOBUF, and JSON. Note that you must have Confluent Cloud Schema Registry configured if using a schema-based message format like AVRO, JSON_SR, or PROTOBUF.
- Type: string
- Default: JSON
- Importance: high
How should we connect to your data?¶
name
Sets a name for your connector.
- Type: string
- Valid Values: A string at most 64 characters long
- Importance: high
Kafka Cluster credentials¶
kafka.auth.mode
Kafka Authentication mode. It can be one of KAFKA_API_KEY or SERVICE_ACCOUNT. It defaults to KAFKA_API_KEY mode.
- Type: string
- Default: KAFKA_API_KEY
- Valid Values: KAFKA_API_KEY, SERVICE_ACCOUNT
- Importance: high
kafka.api.key
Kafka API Key. Required when kafka.auth.mode==KAFKA_API_KEY.
- Type: password
- Importance: high
kafka.service.account.id
The Service Account that will be used to generate the API keys to communicate with Kafka Cluster.
- Type: string
- Importance: high
kafka.api.secret
Secret associated with Kafka API key. Required when kafka.auth.mode==KAFKA_API_KEY.
- Type: password
- Importance: high
GCP credentials¶
keyfile
GCP service account JSON file with write permissions for BigQuery.
- Type: password
- Importance: high
BigQuery details¶
project
GCP Project ID where BigQuery is located.
- Type: string
- Importance: high
datasets
Name for the BigQuery dataset that Kafka topics write to.
- Type: string
- Importance: high
SQL/DDL Support¶
partitioning.type
The partitioning type to use.
NONE: The connector relies only on how the existing tables are set up. If the Auto create tables property is enabled, the connector creates non-partitioned tables.
INGESTION_TIME: Existing tables must be partitioned by ingestion time. The connector writes to the partition for the current wall clock time. If the Auto create tables property is enabled, the connector creates tables partitioned by ingestion time.
RECORD_TIME: Existing tables must be partitioned by ingestion time. The connector writes to the partition based on the Kafka record timestamp. If the Auto create tables property is enabled, the connector creates tables partitioned by ingestion time. The only supported
time.partitioning.type
value for RECORD_TIME is DAY.TIMESTAMP_COLUMN: The connector relies only on how the existing tables are set up. If the Auto create tables property is enabled, the connector creates tables partitioned by the
timestamp.partition.field.name
used.- Type: string
- Default: INGESTION_TIME
- Importance: high
topic2table.map
Map of topics to tables (optional). The required format is comma-separated tuples. For example, <topic-1>:<table-1>,<topic-2>:<table-2>,… Note that a topic name must not be modified using a regex SMT while using this option. Note that if this property is used,
sanitize.topics
is ignored. Also, if the topic-to-table map doesn’t contain the topic for a record, the connector creates a table with the same name as the topic name.- Type: string
- Default: “”
- Importance: medium
auto.create.tables
Designates whether or not to automatically create BigQuery tables. Note: Supports AVRO, JSON_SR, and PROTOBUF message format only.
- Type: boolean
- Default: false
- Importance: high
auto.update.schemas
Designates whether or not to automatically update BigQuery schemas. New fields in record schemas must be nullable. Note: Supports AVRO, JSON_SR, and PROTOBUF message format only.
- Type: boolean
- Default: false
- Importance: high
sanitize.topics
Designates whether to automatically sanitize topic names before using them as table names in BigQuery. If not enabled, topic names are used as table names.
- Type: boolean
- Default: true
- Importance: high
sanitize.field.names
Whether to automatically sanitize field names before using them as field names in BigQuery. BigQuery specifies that field names can only contain letters, numbers, and underscores. The sanitizer replaces invalid symbols with underscores. If the field name starts with a digit, the sanitizer adds an underscore in front of field name. Caution: Key duplication errors can occur if different fields are named a.b and a_b, for instance. After being sanitized, field names a.b and a_b will have same value.
- Type: boolean
- Default: false
- Importance: high
time.partitioning.type
The time partitioning type to use when creating new tables for
partitioning.type
INGESTION_TIME, RECORD_TIME or TIMESTAMP_COLUMN. Existing tables are not altered to use this partitioning type.- Type: string
- Default: DAY
- Importance: low
timestamp.partition.field.name
The name of the field in the value that contains the timestamp to partition by in BigQuery. This enable timestamp partitioning for tables. The connector ignores this property if
partitioning.type
is not TIMESTAMP_COLUMN or ifauto.create.tables
is false.- Type: string
- Importance: low
allow.schema.unionization
If enabled, when performing schema updates, record schemas are combined with the current schema of the BigQuery table. This can be useful if there are Kafka records with schemas that are missing fields that correspond to columns already present in the BigQuery table schema. Note that when this is enabled, unrelated records could be produced to a topic consumed by the connector. The reason for this is instead of failing on invalid data, the connector appends the field for the unrelated record schema to the BigQuery table schema.
- Type: boolean
- Default: false
- Importance: low
all.bq.fields.nullable
If true, no fields in any produced BigQuery schema are required. All non-nullable Avro fields are translated as NULLABLE (or REPEATED, if arrays).
- Type: boolean
- Default: false
- Importance: low
convert.double.special.values
Designates whether +Infinity is converted to Double.MAX_VALUE and whether -Infinity and NaN are converted to Double.MIN_VALUE to ensure successful delivery to BigQuery.
- Type: boolean
- Default: false
- Importance: low
Consumer configuration¶
max.poll.interval.ms
The maximum delay between subsequent consume requests to Kafka. This configuration property may be used to improve the performance of the connector, if the connector cannot send records to the sink system. Defaults to 300000 milliseconds (5 minutes).
- Type: long
- Default: 300000 (5 minutes)
- Valid Values: [60000,…,1800000] for non-dedicated clusters and [60000,…] for dedicated clusters
- Importance: low
max.poll.records
The maximum number of records to consume from Kafka in a single request. This configuration property may be used to improve the performance of the connector, if the connector cannot send records to the sink system. Defaults to 500 records.
- Type: long
- Default: 500
- Valid Values: [1,…,500] for non-dedicated clusters and [1,…] for dedicated clusters
- Importance: low
Number of tasks for this connector¶
tasks.max
Maximum number of tasks for the connector.
- Type: int
- Valid Values: [1,…]
- Importance: high
Next Steps¶
For an example that shows fully-managed Confluent Cloud connectors in action with Confluent Cloud ksqlDB, see the Cloud ETL Demo. This example also shows how to use Confluent CLI to manage your resources in Confluent Cloud.