Обзор экспорта данных
Функция экспорта данных записывает наборы результатов запросов или данные таблиц Apache Doris в указанную систему хранения в заданном формате файлов. Обычно она используется для скачивания наборов результатов и обмена данными между системами.
Экспорт данных и резервное копирование
И экспорт данных, и резервное копирование позволяют выводить данные из Apache Doris во внешнее хранилище, но предназначены для разных сценариев. В следующей таблице приведены основные различия:
| Критерий сравнения | Экспорт данных | Резервное копирование |
|---|---|---|
| Конечное место хранения | HDFS, объектное хранилище, локальная файловая система | HDFS, объектное хранилище |
| Формат данных | Открытые форматы, такие как Parquet, ORC, CSV | Внутренний формат хранения Apache Doris |
| Скорость выполнения | Средняя (требуется чтение данных и преобразование в целевой формат) | Высокая (файлы данных Doris загружаются напрямую, без разбора или преобразования) |
| Гибкость | Позволяет гибко задавать состав экспортируемых данных с помощью SQL | Поддерживается только полное резервное копирование таблиц |
| Типичные сценарии использования | Скачивание наборов результатов, обмен данными между разными системами | Резервное копирование данных, миграция данных между кластерами Apache Doris |
Выбор способа экспорта
Apache Doris предоставляет следующие три способа экспорта данных, каждый из которых подходит для определённых задач:
- SELECT INTO OUTFILE: поддерживает экспорт любого набора результатов SQL-запроса.
- EXPORT: поддерживает экспорт части или всех данных таблицы.
- MySQL DUMP: экспорт данных, совместимый с командами MySQL Dump.
Сравнение возможностей трёх способов
В следующей таблице три способа экспорта сравниваются по режиму выполнения, возможностям SQL, параллелизму и поддерживаемым форматам, чтобы помочь вам быстро сделать выбор:
| Критерий сравнения | SELECT INTO OUTFILE | EXPORT | MySQL DUMP |
|---|---|---|---|
| Синхронный / асинхронный режим | Синхронный | Асинхронный (после отправки задания ход выполнения можно проверить с помощью SHOW EXPORT) | Синхронный |
| Поддержка произвольного SQL | Поддерживается | Не поддерживается | Не поддерживается |
| Экспорт указанных партиций | Поддерживается | Поддерживается | Не поддерживается |
| Экспорт указанных tablets | Поддерживается | Не поддерживается | Не поддерживается |
| Параллельный экспорт | Поддерживается, высокая степень параллелизма (ограничивается операторами, выполняемыми на одном узле, такими как ORDER BY) | Поддерживается, высокая степень параллелизма (параллелизм на уровне Tablet) | Не поддерживается, однопоточный экспорт |
| Поддерживаемые форматы экспорта | Parquet, ORC, CSV | Parquet, ORC, CSV | Собственный формат MySQL Dump |
| Поддержка внешних таблиц | Поддерживается | Поддерживается частично | Не поддерживается |
| Поддержка представлений | Поддерживается | Поддерживается | Поддерживается |
| Поддерживаемые места экспорта | S3, HDFS | S3, HDFS | LOCAL |
Сценарии применения
SELECT INTO OUTFILE
Подходит для следующих сценариев:
- Экспортируемые данные требуют сложной обработки, например фильтрации, агрегации или соединений.
- Подходит синхронное выполнение заданий.
Подробные сведения об использовании см. в разделе SELECT INTO OUTFILE.
EXPORT
Подходит для следующих сценариев:
- Экспорт большого объёма данных из одной таблицы, для которого нужны только простые условия фильтрации.
- Требуется асинхронная отправка заданий.
Подробные сведения об использовании см. в разделе Асинхронный экспорт с помощью Export.
MySQL Dump
Подходит для следующих сценариев:
- Требуется совместимость с экосистемой MySQL и экспорт как схем таблиц, так и данных.
- Используется только для разработки, тестирования или при очень небольших объёмах данных.
Подробные сведения об использовании см. в разделе MySQL Dump.
Сопоставление типов столбцов при экспорте в файлы
Форматы файлов Parquet и ORC имеют собственные определения типов данных. При экспорте Apache Doris автоматически преобразует внутренние типы данных в соответствующие типы Parquet/ORC. В формате CSV типы не определены: все данные выводятся в виде текста.
Ниже приведены сопоставления типов данных Apache Doris с типами форматов ORC и Parquet.
Сопоставление типов ORC
| Тип Doris | Тип ORC |
|---|---|
| boolean | boolean |
| tinyint | tinyint |
| smallint | smallint |
| int | int |
| bigint | bigint |
| largeInt | string |
| date | string |
| datev2 | date |
| datetime | string |
| datetimev2 | timestamp |
| timestamptz | timestamp with local time zone (ORC TIMESTAMP_INSTANT; начиная с 4.1.5 сохраняет семантику момента времени) |
| varbinary | binary |
| float | float |
| double | double |
| char / varchar / string | string |
| decimal | decimal |
| struct | struct |
| map | map |
| array | array |
| json | string |
| variant | string |
| bitmap | binary |
| quantile_state | binary |
| hll | binary |
Сопоставление типов Parquet
При экспорте в формат файлов Parquet Apache Doris сначала преобразует данные Doris из внутреннего представления в памяти в представление Arrow, также находящееся в памяти. Затем Arrow записывает их в файл Parquet. Сопоставления приведены ниже:
| Тип Doris | Тип Arrow | Физический тип Parquet | Логический тип Parquet |
|---|---|---|---|
| boolean | boolean | BOOLEAN | |
| tinyint | int8 | INT32 | INT_8 |
| smallint | int16 | INT32 | INT_16 |
| int | int32 | INT32 | INT_32 |
| bigint | int64 | INT64 | INT_64 |
| largeInt | utf8 | BYTE_ARRAY | UTF8 |
| date | utf8 | BYTE_ARRAY | UTF8 |
| datev2 | date32 | INT32 | DATE |
| datetime | utf8 | BYTE_ARRAY | UTF8 |
| datetimev2 | timestamp | INT96 / INT64 | TIMESTAMP(MICROS/MILLIS/SECONDS) |
| float | float32 | FLOAT | |
| double | float64 | DOUBLE | |
| char / varchar / string | utf8 | BYTE_ARRAY | UTF8 |
| decimal | decimal128 | FIXED_LEN_BYTE_ARRAY | DECIMAL(scale, precision) |
| struct | struct | Parquet Group | |
| map | map | Parquet Map | |
| array | list | Parquet List | |
| json | utf8 | BYTE_ARRAY | UTF8 |
| variant | utf8 | BYTE_ARRAY | UTF8 |
| bitmap | binary | BYTE_ARRAY | |
| quantile_state | binary | BYTE_ARRAY | |
| hll | binary | BYTE_ARRAY |
Начиная с 4.1.5, Outfile и Export используют enable_int96_timestamps для управления кодированием временных меток в Parquet. По умолчанию используется false, при котором записывается INT64 с логическим типом временной метки; в предыдущих версиях по умолчанию использовался INT96. Устанавливайте true только для совместимости с устаревшими средствами чтения. Допустимы только true и false. Не используйте вместо этого parquet.enable_int96_timestamps. Подробнее о семантике временных меток, представляющих момент времени (instant) и локальное время (wall-clock), см. в разделе Parquet.
Связанные документы
- Асинхронный экспорт с помощью Export: использование команды
EXPORTдля асинхронного экспорта данных таблиц или партиций. - SELECT INTO OUTFILE: использование
SELECT INTO OUTFILEдля синхронного экспорта результатов запросов. - MySQL Dump: использование инструмента
mysqldumpдля экспорта схем таблиц и данных. - Рекомендации по экспорту данных: настройка параллелизма экспорта и методы оценки его скорости.