Форматы для ввода и вывода данных
Форматы для ввода и вывода данных
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
используют разделитель после последнего столбца и разделитель между строками для нахождения начала следующей строки, поэтому пропуск ошибок работает только в том случае, если хотя бы один из них не пуст.