Google BigQuery

Поддерживается только производитель

Компонент Google Bigquery обеспечивает доступ к инфраструктуре Cloud BigQuery (opens in a new tab) через API клиентских служб Google (opens in a new tab) .

Текущая реализация не использует gRPC.

Текущая реализация не поддерживает запросы BigQuery, т.е. является только производителем.

Пользователям Maven необходимо добавить следующую зависимость в свой pom.xml для этого компонента:

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-google-bigquery</artifactId>
    <!-- use the same version as your Camel core version -->
    <version>x.x.x</version>
</dependency>

Authentication Configuration

Аутентификация компонента Google BigQuery предназначена для использования с учётными записями сервисов GCP. Подробнее см. в руководстве по аутентификации Google Cloud Platform. (opens in a new tab)

Учетные данные безопасности Google можно задать явно, указав путь к расположению файла учетных данных GCP.

Или они устанавливаются неявно, когда фабрика соединений прибегает к учетным данным приложения по умолчанию (opens in a new tab) .

Имея ключ учётной записи службы , вы можете предоставить учётные данные для аутентификации коду приложения. Учётные данные безопасности Google можно задать через конечную точку компонента:

String endpoint = "google-bigquery://project-id:datasetId[:tableId]?serviceAccountKey=/home/user/Downloads/my-key.json";

Если вы не хотите указывать путь к файловой системе, вы также можете использовать содержимое файла учетных данных аутентификации в кодировке base64.

String endpoint = "google-bigquery://project-id:datasetId[:tableId]?serviceAccountKey=base64:<base64 encoded>";

Или установив переменную окружения GOOGLE_APPLICATION_CREDENTIALS:

export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/my-key.json"

URI Format

google-bigquery://project-id:datasetId[:tableId]?[options]

Configuring Options

Компоненты Camel настраиваются на двух отдельных уровнях:

  • уровень компонентов

  • уровень конечной точки

Configuring Component Options

На уровне компонентов задаются общие и общие конфигурации, которые затем наследуются конечными точками. Это самый высокий уровень конфигурации.

Например, компонент может иметь настройки безопасности, учетные данные для аутентификации, URL-адреса для сетевого подключения и т. д.

У некоторых компонентов всего несколько параметров, а у других -- много. Поскольку компоненты обычно имеют предустановленные значения по умолчанию, которые широко используются, зачастую вам может потребоваться настроить лишь несколько параметров компонента, а то и вовсе ни одного.

Вы можете настроить компоненты, используя:

  • Компонент DSL (opens in a new tab) .

  • в файле конфигурации ( application.propertiesфайлы *.yaml, и т.д.).

  • непосредственно в коде Java.

Configuring Endpoint Options

Настройка конечных точек обычно занимает больше времени, поскольку у них есть множество параметров. Эти параметры помогают вам настроить функции конечной точки. Параметры также классифицируются по тому, используется ли конечная точка как потребитель ( от ), как производитель ( от ) или и то, и другое.

Конечные точки чаще всего настраиваются непосредственно в URI конечной точки в виде параметров пути и запроса . Вы также можете использовать Endpoint DSL (opens in a new tab) и DataFormat DSL (opens in a new tab) в качестве типобезопасного способа настройки конечных точек и форматов данных в Java.

Хорошей практикой при настройке параметров является использование заполнителей свойств (opens in a new tab) .

Заполнители свойств обеспечивают несколько преимуществ:

  • Они помогают предотвратить использование жестко запрограммированных URL-адресов, номеров портов, конфиденциальной информации и других настроек.

  • Они позволяют вынести конфигурацию за пределы кода.

  • Они помогают коду стать более гибким и пригодным для повторного использования.

В следующих двух разделах перечислены все параметры, сначала для компонента, а затем для конечной точки.

Component Options

Компонент Google BigQuery поддерживает 5 опций, которые перечислены ниже.

connectionFactory (producer)

  • Autowired ConnectionFactory для подключения к сервису Bigquery. Если не указано, будет использовано подключение по умолчанию.

  • По умолчанию:

  • Тип: GoogleBigQueryConnectionFactory

datasetId (producer)

  • Идентификатор набора данных BigQuery.

  • По умолчанию:

  • Тип: String

lazyStartProducer (producer)

  • Тип: Следует ли запускать производитель в режиме ленивого запуска (при первом сообщении). Запуск в режиме ленивого запуска позволяет разрешить запуск CamelContext и маршрутов в ситуациях, когда производитель может выйти из строя при запуске, что приведет к сбою запуска маршрута. Отложив запуск в режим ленивого запуска, можно обработать сбой запуска во время маршрутизации сообщений с помощью обработчиков ошибок маршрутизации Camel. Имейте в виду, что после обработки первого сообщения создание и запуск производителя могут занять некоторое время и увеличить общее время обработки.

  • По умолчанию: false

  • Тип: boolean

projectId (producer)

  • Идентификатор проекта Google Cloud.

  • По умолчанию:

  • Тип: String

autowiredEnabled (advanced)

  • Включено ли автоматическое связывание. Это используется для параметров автоматического связывания (параметр должен быть помечен как autowired) путём поиска в реестре экземпляра соответствующего типа, который затем настраивается в компоненте. Это может использоваться для автоматической настройки источников данных JDBC, фабрик JMS-подключений, клиентов AWS и т. д.

  • По умолчанию: true

  • Тип: boolean

Endpoint Options

Конечная точка Google BigQuery настраивается с использованием синтаксиса URI:

google-bigquery:projectId:datasetId:tableId

Со следующими параметрами пути и запроса :

Path Parameters (3 parameters)

projectId (common)

  • Требуется идентификатор проекта Google Cloud.

  • По умолчанию:

  • Тип: String

datasetId (common)

  • Требуемый идентификатор набора данных BigQuery.

  • По умолчанию:

  • Тип: String

tableId (common)

  • Тип: Идентификатор таблицы BigQuery.

  • По умолчанию:

  • Тип: String

Query Parameters (4 parameters)

connectionFactory (producer)

  • Autowired ConnectionFactory для подключения к сервису Bigquery. Если не указано, будет использовано подключение по умолчанию.

  • По умолчанию:

  • Тип: GoogleBigQueryConnectionFactory

useAsInsertId (producer)

  • Тип: Имя поля для использования в качестве идентификатора вставки.

  • По умолчанию:

  • Тип: String

lazyStartProducer (producer (advanced))

  • Следует ли запускать производитель в режиме ленивого запуска (при первом сообщении). Запуск в режиме ленивого запуска позволяет разрешить запуск CamelContext и маршрутов в ситуациях, когда производитель может выйти из строя при запуске, что приведет к сбою запуска маршрута. Отложив запуск в режим ленивого запуска, можно обработать сбой запуска во время маршрутизации сообщений с помощью обработчиков ошибок маршрутизации Camel. Имейте в виду, что после обработки первого сообщения создание и запуск производителя могут занять некоторое время и увеличить общее время обработки.

  • По умолчанию: false

  • Тип: boolean

serviceAccountKey (security)

  • Ключ учетной записи службы в формате JSON для аутентификации приложения как учетной записи службы на облачной платформе Google.

  • По умолчанию:

  • Тип: String

Message Headers

Компонент Google BigQuery поддерживает 4 заголовка сообщения, которые перечислены ниже:

CamelGoogleBigQueryTableSuffix (producer)

Constant: TABLE_SUFFIX (opens in a new tab)

  • Суффикс таблицы, используемый при вставке данных.

  • По умолчанию:

  • Тип: String

CamelGoogleBigQueryTableId (producer)

Constant: TABLE_ID (opens in a new tab)

  • Тип: Идентификатор таблицы, в которую будут отправлены данные. Если указано, конфигурация конечной точки будет переопределена.

  • По умолчанию:

  • Тип: String

CamelGoogleBigQueryInsertId (producer)

Constant: INSERT_ID (opens in a new tab)

  • InsertId для использования при вставке данных.

  • По умолчанию:

  • Тип: String

CamelGoogleBigQueryPartitionDecorator (producer)

Constant: PARTITION_DECORATOR (opens in a new tab)

  • Тип: Декоратор раздела, указывающий раздел, который следует использовать при вставке данных.

  • По умолчанию:

  • Тип: String

Usage

Producer Endpoints

Конечные точки-производители могут принимать и доставлять в BigQuery как индивидуальные, так и групповые обмены. Групповые обмены имеют Exchange.GROUPED_EXCHANGEнабор свойств.

Поставщик Google BigQuery отправит групповой обмен в одном вызове API, если не указаны другие суффиксы таблиц или декораторы разделов. В этом случае он разобьёт его, чтобы гарантировать запись данных с правильным суффиксом или декоратором разделов.

Конечная точка Google BigQuery ожидает, что полезная нагрузка будет представлять собой карту или список карт. Полезная нагрузка, содержащая карту, вставит одну строку, а полезная нагрузка, содержащая список карт, вставит по одной строке для каждой записи в списке.

Template tables

Ссылка: https://cloud.google.com/bigquery/streaming-data-into-bigquery#template-tables (opens in a new tab)

Шаблонные таблицы можно указать с помощью GoogleBigQueryConstants.TABLE_SUFFIXзаголовка.

Т.е. следующий маршрут создаст таблицы и вставит записи, разбитые по дням:

from("direct:start")
  .header(GoogleBigQueryConstants.TABLE_SUFFIX, "_${date:now:yyyyMMdd}")
  .to("google-bigquery:sampleDataset:sampleTable")

Обратите внимание, что в этом случае рекомендуется использовать разбиение на разделы.

Partitioning

Ссылка: https://cloud.google.com/bigquery/docs/creating-partitioned-tables (opens in a new tab)

Разделение задаётся при создании таблицы, и если задано, данные будут автоматически разделены на отдельные таблицы. При добавлении данных можно указать конкретный раздел, установив GoogleBigQueryConstants.PARTITION_DECORATORзаголовок в обмене.

Ensuring data consistency

Ссылка: https://cloud.google.com/bigquery/streaming-data-into-bigquery#dataconsistency (opens in a new tab)

Идентификатор вставки можно задать в обмене с помощью заголовка GoogleBigQueryConstants.INSERT_IDили указав параметр запроса useAsInsertId. Поскольку идентификатор вставки необходимо указывать для каждой вставляемой строки, заголовок обмена не может использоваться, если полезная нагрузка представляет собой список. Если полезная нагрузка представляет собой список, он GoogleBigQueryConstants.INSERT_IDбудет проигнорирован. В этом случае используйте параметр запроса useAsInsertId.

Spring Boot Auto-Configuration

При использовании google-bigquery с Spring Boot обязательно используйте следующую зависимость Maven для поддержки автоматической настройки:

<dependency>
  <groupId>org.apache.camel.springboot</groupId>
  <artifactId>camel-google-bigquery-starter</artifactId>
  <version>x.x.x</version>
  <!-- use the same version as your Camel core version -->
</dependency>

Компонент поддерживает 11 опций, которые перечислены ниже.

camel.component.google-bigquery-sql.autowired-enabled

  • Включено ли автоматическое связывание. Это используется для параметров автоматического связывания (параметр должен быть помечен как autowired) путём поиска в реестре экземпляра соответствующего типа, который затем настраивается в компоненте. Это может использоваться для автоматической настройки источников данных JDBC, фабрик JMS-подключений, клиентов AWS и т. д.

  • По умолчанию: true

  • Тип: Boolean

camel.component.google-bigquery-sql.connection-factory

  • ConnectionFactory для подключения к сервису Bigquery. Если не указано, будет использовано значение по умолчанию. Параметр имеет тип org.apache.camel.component.google.bigquery.GoogleBigQueryConnectionFactory.

  • По умолчанию:

  • Тип: GoogleBigQueryConnectionFactory

camel.component.google-bigquery-sql.enabled

  • Включить ли автоматическую настройку компонента google-bigquery-sql. По умолчанию эта опция включена.

  • По умолчанию:

  • Тип: Boolean

camel.component.google-bigquery-sql.lazy-start-producer

  • Тип: Следует ли запускать производитель в режиме ленивого запуска (при первом сообщении). Запуск в режиме ленивого запуска позволяет разрешить запуск CamelContext и маршрутов в ситуациях, когда производитель может выйти из строя при запуске, что приведет к сбою запуска маршрута. Отложив запуск в режим ленивого запуска, можно обработать сбой запуска во время маршрутизации сообщений с помощью обработчиков ошибок маршрутизации Camel. Имейте в виду, что после обработки первого сообщения создание и запуск производителя могут занять некоторое время и увеличить общее время обработки.

  • По умолчанию: false

  • Тип: Boolean

camel.component.google-bigquery-sql.project-id

  • Идентификатор проекта Google Cloud.

  • По умолчанию:

  • Тип: String

camel.component.google-bigquery.autowired-enabled

  • Включено ли автоматическое связывание. Это используется для параметров автоматического связывания (параметр должен быть помечен как autowired) путём поиска в реестре экземпляра соответствующего типа, который затем настраивается в компоненте. Это может использоваться для автоматической настройки источников данных JDBC, фабрик JMS-подключений, клиентов AWS и т. д.

  • По умолчанию: true

  • Тип: Boolean

camel.component.google-bigquery.connection-factory

  • ConnectionFactory для подключения к сервису Bigquery. Если не указано, будет использовано значение по умолчанию. Параметр имеет тип org.apache.camel.component.google.bigquery.GoogleBigQueryConnectionFactory.

  • По умолчанию:

  • Тип: GoogleBigQueryConnectionFactory

camel.component.google-bigquery.dataset-id

  • Идентификатор набора данных BigQuery.

  • По умолчанию:

  • Тип: String

camel.component.google-bigquery.enabled

  • Тип: Включить ли автоматическую настройку компонента google-bigquery. По умолчанию эта опция включена.

  • По умолчанию:

  • Тип: Boolean

camel.component.google-bigquery.lazy-start-producer

  • Следует ли запускать производитель в режиме ленивого запуска (при первом сообщении). Запуск в режиме ленивого запуска позволяет разрешить запуск CamelContext и маршрутов в ситуациях, когда производитель может выйти из строя при запуске, что приведет к сбою запуска маршрута. Отложив запуск в режим ленивого запуска, можно обработать сбой запуска во время маршрутизации сообщений с помощью обработчиков ошибок маршрутизации Camel. Имейте в виду, что после обработки первого сообщения создание и запуск производителя могут занять некоторое время и увеличить общее время обработки.

  • По умолчанию: false

  • Тип: Boolean

camel.component.google-bigquery.project-id

  • Идентификатор проекта Google Cloud.

  • По умолчанию:

  • Тип: String