Формат выгрузки данных

Содержание раздела
  1. Структура сообщений
  2. Формат данных
  3. Примеры
    1. Пример выгружаемой схемы данных Avro
    2. Пример выгружаемых записей Avro

Структура сообщений

Данные выгружаются из системы в виде сообщений топиков Kafka. Каждое сообщение имеет структуру, показанную на рисунке ниже.

Структура выгружаемых сообщений

Формат данных

Данные выгружаются из системы в следующем формате:

  • Выгрузка данных выполняется в топик Kafka, указанный в настройках внешней таблицы выгрузки.
  • Каждое сообщение топика Kafka состоит из ключа и тела.
  • Тело сообщения представляет собой файл Avro (Object Container File), который состоит из заголовка и блоков данных.
  • Заголовок файла содержит схему данных Avro.
  • Схема данных тела сообщения содержит следующие элементы: имя, тип “record” и перечень полей. Для каждого поля указано имя, а также тип данных из числа перечисленных в разделе Выгружаемые типы данных (см. пример ниже).
  • Каждый блок данных содержит запись, представленную в бинарной кодировке. Запись соответствует схеме данных из заголовка файла Avro.
  • Каждая запись содержит перечень полей и их значений. Имена и порядок перечисления полей, а также типы данных их значений соответствуют схеме данных (см. пример ниже).
  • Состав и порядок полей совпадают в следующих объектах:
    • во внешней таблице выгрузки,
    • в схеме данных тела сообщения,
    • в наборе выгружаемых записей.

Типы данных Avro, доступные к выгрузке из системы, описаны в разделе Выгружаемые типы данных. Подробнее о формате Avro см. в официальной документации на сайте https://avro.apache.org.

Примеры

Пример выгружаемой схемы данных Avro

Пример ниже содержит схему данных Avro, выгружаемую с данными о продажах из СУБД ADB. Для наглядности примера бинарные данные представлены в JSON-формате.

{
  "name": "row",
  "type": "record",
  "fields": [
    {
      "name": "id",
      "type": "long"
    },
    {
      "name": "transaction_date",
      "type": "long"
    },
    {
      "name": "product_code",
      "type": "string"
    },
    {
      "name": "product_units",
      "type": "long"
    },
    {
      "name": "store_id",
      "type": "long"
    },
    {
      "name": "description",
      "type": "string"
    }
  ]
}

Пример выгружаемых записей Avro

В примере ниже показан набор записей Avro о продажах, выгруженных из СУБД ADB и соответствующих схеме из предыдущего примера. Для наглядности примера бинарные данные представлены в JSON-формате.

[
  {
    "id": 1000111,
    "transaction_date": 1614269474000000,
    "product_code": "ABC102101",
    "product_units": 2,
    "store_id": 1000012345,
    "description": "Покупка по акции 1+1"
  },
  {
    "id": 1000112,
    "transaction_date": 1614334214000000,
    "product_code": "ABC102001",
    "product_units": 1,
    "store_id": 1000000123,
    "description": "Покупка без акций"
  }
]