Формат выгрузки данных
Содержание раздела
Структура сообщений
Данные выгружаются из системы в виде сообщений топиков 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": "Покупка без акций"
}
]