Link Search Menu Expand Document

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

Содержание раздела
  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": "Покупка без акций"
  }
]