Перейти к содержимому
Последнее обновление

Обзор экспорта данных

Функция экспорта данных записывает наборы результатов запросов или данные таблиц 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 OUTFILEEXPORTMySQL DUMP
Синхронный / асинхронный режимСинхронныйАсинхронный (после отправки задания ход выполнения можно проверить с помощью SHOW EXPORT)Синхронный
Поддержка произвольного SQLПоддерживаетсяНе поддерживаетсяНе поддерживается
Экспорт указанных партицийПоддерживаетсяПоддерживаетсяНе поддерживается
Экспорт указанных tabletsПоддерживаетсяНе поддерживаетсяНе поддерживается
Параллельный экспортПоддерживается, высокая степень параллелизма (ограничивается операторами, выполняемыми на одном узле, такими как ORDER BY)Поддерживается, высокая степень параллелизма (параллелизм на уровне Tablet)Не поддерживается, однопоточный экспорт
Поддерживаемые форматы экспортаParquet, ORC, CSVParquet, ORC, CSVСобственный формат MySQL Dump
Поддержка внешних таблицПоддерживаетсяПоддерживается частичноНе поддерживается
Поддержка представленийПоддерживаетсяПоддерживаетсяПоддерживается
Поддерживаемые места экспортаS3, HDFSS3, HDFSLOCAL

Сценарии применения​

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
booleanboolean
tinyinttinyint
smallintsmallint
intint
bigintbigint
largeIntstring
datestring
datev2date
datetimestring
datetimev2timestamp
timestamptztimestamp with local time zone (ORC TIMESTAMP_INSTANT; начиная с 4.1.5 сохраняет семантику момента времени)
varbinarybinary
floatfloat
doubledouble
char / varchar / stringstring
decimaldecimal
structstruct
mapmap
arrayarray
jsonstring
variantstring
bitmapbinary
quantile_statebinary
hllbinary

Сопоставление типов Parquet​

При экспорте в формат файлов Parquet Apache Doris сначала преобразует данные Doris из внутреннего представления в памяти в представление Arrow, также находящееся в памяти. Затем Arrow записывает их в файл Parquet. Сопоставления приведены ниже:

Тип DorisТип ArrowФизический тип ParquetЛогический тип Parquet
booleanbooleanBOOLEAN
tinyintint8INT32INT_8
smallintint16INT32INT_16
intint32INT32INT_32
bigintint64INT64INT_64
largeIntutf8BYTE_ARRAYUTF8
dateutf8BYTE_ARRAYUTF8
datev2date32INT32DATE
datetimeutf8BYTE_ARRAYUTF8
datetimev2timestampINT96 / INT64TIMESTAMP(MICROS/MILLIS/SECONDS)
floatfloat32FLOAT
doublefloat64DOUBLE
char / varchar / stringutf8BYTE_ARRAYUTF8
decimaldecimal128FIXED_LEN_BYTE_ARRAYDECIMAL(scale, precision)
structstructParquet Group
mapmapParquet Map
arraylistParquet List
jsonutf8BYTE_ARRAYUTF8
variantutf8BYTE_ARRAYUTF8
bitmapbinaryBYTE_ARRAY
quantile_statebinaryBYTE_ARRAY
hllbinaryBYTE_ARRAY
примечание

Начиная с 4.1.5, Outfile и Export используют enable_int96_timestamps для управления кодированием временных меток в Parquet. По умолчанию используется false, при котором записывается INT64 с логическим типом временной метки; в предыдущих версиях по умолчанию использовался INT96. Устанавливайте true только для совместимости с устаревшими средствами чтения. Допустимы только true и false. Не используйте вместо этого parquet.enable_int96_timestamps. Подробнее о семантике временных меток, представляющих момент времени (instant) и локальное время (wall-clock), см. в разделе Parquet.