Форматы для ввода и вывода данных
Форматы для ввода и вывода данных
ClickHouse поддерживает большинство известных текстовых и бинарных форматов данных. Это позволяет легко интегрироваться в практически любой рабочий конвейер данных, чтобы воспользоваться преимуществами ClickHouse.
Форматы ввода
Форматы ввода используются для:
- Парсинга данных, предоставляемых в операциях
INSERT
- Выполнения запросов
SELECT
из таблиц, основанных на файлах, таких какFile
,URL
илиHDFS
- Чтения словарей
Выбор правильного формата ввода имеет решающее значение для эффективного приёма данных в ClickHouse. С более чем 70 поддерживаемыми форматами выбор наиболее производительного варианта может значительно повлиять на скорость вставки, использование CPU и памяти, а также на общую эффективность системы. Чтобы помочь с этим выбором, мы провели бенчмаркинг производительности ввода по форматам, выявив ключевые выводы:
- Формат Native является наиболее эффективным форматом ввода, предлагая лучшее сжатие, минимальное использование ресурсов и минимальные накладные расходы на обработку на стороне сервера.
- Сжатие имеет решающее значение - LZ4 уменьшает размер данных с минимальными затратами CPU, в то время как ZSTD предлагает более высокое сжатие за счёт дополнительных затрат CPU.
- Предварительная сортировка имеет умеренное влияние, так как ClickHouse уже эффективно сортирует.
- Пакетная загрузка значительно улучшает эффективность - более крупные пакеты снижают накладные расходы на вставку и увеличивают пропускную способность.
Для глубокого анализа результатов и лучших практик читайте полный анализ бенчмаркинга. Для ознакомления с полными результатами тестов исследуйте онлайн-дашборд FastFormats.
Форматы вывода
Поддерживаемые форматы вывода используются для:
- Организации результатов запроса
SELECT
- Выполнения операций
INSERT
в таблицы, основанные на файлах
Обзор форматов
Поддерживаемые форматы:
Вы можете контролировать некоторые параметры обработки формата с помощью настроек ClickHouse. Для получения дополнительной информации смотрите раздел Настройки.
TabSeparated
Смотрите TabSeparated
TabSeparatedRaw
Смотрите TabSeparatedRaw
TabSeparatedWithNames
Смотрите TabSeparatedWithNames
TabSeparatedWithNamesAndTypes
Смотрите TabSeparatedWithNamesAndTypes
TabSeparatedRawWithNames
Смотрите TabSeparatedRawWithNames
TabSeparatedRawWithNamesAndTypes
Смотрите TabSeparatedRawWithNamesAndTypes
Template
Смотрите Template
TemplateIgnoreSpaces
Смотрите TemplateIgnoreSpaces
TSKV
Смотрите TSKV
CSV
Смотрите CSV
CSVWithNames
Смотрите CSVWithNames
CSVWithNamesAndTypes
Смотрите CSVWithNamesAndTypes
CustomSeparated
Смотрите CustomSeparated
CustomSeparatedWithNames
Смотрите CustomSeparatedWithNames
CustomSeparatedWithNamesAndTypes
Смотрите CustomSeparatedWithNamesAndTypes
SQLInsert
Смотрите SQLInsert
JSON
Смотрите JSON
JSONStrings
Смотрите JSONStrings
JSONColumns
Смотрите JSONColumns
JSONColumnsWithMetadata
Смотрите JSONColumnsWithMetadata
JSONAsString
Смотрите JSONAsString
JSONAsObject
Смотрите JSONAsObject
JSONCompact
Смотрите JSONCompact
JSONCompactStrings
Смотрите JSONCompactStrings
JSONCompactColumns
Смотрите JSONCompactColumns
JSONEachRow
Смотрите JSONEachRow
PrettyJSONEachRow
Смотрите PrettyJSONEachRow
JSONStringsEachRow
Смотрите JSONStringsEachRow
JSONCompactEachRow
Смотрите JSONCompactEachRow
JSONCompactStringsEachRow
Смотрите JSONCompactStringsEachRow
JSONEachRowWithProgress
Смотрите JSONEachRowWithProgress
JSONStringsEachRowWithProgress
Смотрите JSONStringsEachRowWithProgress
JSONCompactEachRowWithNames
Смотрите JSONCompactEachRowWithNames
JSONCompactEachRowWithNamesAndTypes
Смотрите JSONCompactEachRowWithNamesAndTypes
JSONCompactEachRowWithProgress
Аналогично JSONEachRowWithProgress
, но выводит события row
в компактном формате, как в формате JSONCompactEachRow
.
JSONCompactStringsEachRowWithNames
Смотрите JSONCompactStringsEachRowWithNames
JSONCompactStringsEachRowWithNamesAndTypes
Смотрите JSONCompactStringsEachRowWithNamesAndTypes
JSONObjectEachRow
Смотрите JSONObjectEachRow
Настройки JSON форматов
Смотрите Настройки JSON форматов
BSONEachRow
Смотрите BSONEachRow
Native
Смотрите Native
Null
Смотрите Null
Pretty
Смотрите Pretty
PrettyNoEscapes
Смотрите PrettyNoEscapes
PrettyMonoBlock
Смотрите PrettyMonoBlock
PrettyNoEscapesMonoBlock
Смотрите PrettyNoEscapesMonoBlock
PrettyCompact
Смотрите PrettyCompact
PrettyCompactNoEscapes
Смотрите PrettyCompactNoEscapes
PrettyCompactMonoBlock
Смотрите PrettyCompactMonoBlock
PrettyCompactNoEscapesMonoBlock
Смотрите PrettyCompactNoEscapesMonoBlock
PrettySpace
Смотрите PrettySpace
PrettySpaceNoEscapes
Смотрите PrettySpaceNoEscapes
PrettySpaceMonoBlock
Смотрите PrettySpaceMonoBlock
PrettySpaceNoEscapesMonoBlock
Смотрите PrettySpaceNoEscapesMonoBlock
RowBinary
Смотрите RowBinary
RowBinaryWithNames
Смотрите RowBinaryWithNames
RowBinaryWithNamesAndTypes
Смотрите RowBinaryWithNamesAndTypes
RowBinaryWithDefaults
Смотрите RowBinaryWithDefaults
Values
Смотрите Values
Vertical
Смотрите Vertical
XML
Смотрите XML
CapnProto
Смотрите CapnProto
Prometheus
Смотрите Prometheus
Protobuf
Смотрите Protobuf
ProtobufSingle
Смотрите ProtobufSingle
ProtobufList
Смотрите ProtobufList
Avro
Смотрите Avro
AvroConfluent
Смотрите AvroConfluent
Parquet
Смотрите Parquet
ParquetMetadata
Смотрите ParquetMetadata
Arrow
Смотрите Arrow
ArrowStream
Смотрите ArrowStream
ORC
Смотрите ORC
One
Смотрите One
Npy
Смотрите Npy
LineAsString
Смотрите:
Regexp
Смотрите Regexp
RawBLOB
Смотрите RawBLOB
Markdown
Смотрите Markdown
MsgPack
Смотрите MsgPack
MySQLDump
Смотрите MySQLDump
DWARF
Смотрите Dwarf
Form
Смотрите Form
Схема формата
Имя файла, содержащего схему формата, задаётся с помощью настройки format_schema
.
Необходимо установить эту настройку при использовании одного из форматов Cap'n Proto
и Protobuf
.
Схема формата — это комбинация имени файла и названия типа сообщения в этом файле, разделённых двоеточием,
например, schemafile.proto:MessageType
.
Если файл имеет стандартное расширение для формата (например, .proto
для Protobuf
),
его можно опустить, и в этом случае схема формата выглядит как schemafile:MessageType
.
Если вы вводите или выводите данные через клиент в интерактивном режиме, то имя файла, указанное в схеме формата, может содержать абсолютный путь или путь относительно текущего каталога на клиенте. Если вы используете клиент в пакетном режиме, путь к схеме должен быть относительным по соображениям безопасности.
Если вы вводите или выводите данные через HTTP интерфейс, имя файла, указанное в схеме формата, должно находиться в каталоге, указанном в format_schema_path в конфигурации сервера.
Пропуск ошибок
Некоторые форматы, такие как CSV
, TabSeparated
, TSKV
, JSONEachRow
, Template
, CustomSeparated
и Protobuf
, могут пропускать повреждённые строки, если произошла ошибка парсинга и продолжать парсинг с начала следующей строки. Смотрите настройки input_format_allow_errors_num и
input_format_allow_errors_ratio.
Ограничения:
- В случае ошибки парсинга
JSONEachRow
пропускает все данные до новой строки (или EOF), поэтому строки должны быть разделены\n
, чтобы правильно подсчитать ошибки. Template
иCustomSeparated
используют разделитель после последнего столбца и разделитель между строками для определения начала следующей строки, поэтому пропуск ошибок работает только в том случае, если хотя бы один из них не пуст.