Вычислительный уровень: различные вычислительные механизмы.
Уровень хранения: постоянное хранилище, в котором хранятся данные.
Уровень формата данных: определяет организационный формат в файле уровня хранения. Вычислительный механизм считывает и записывает файлы посредством поддержки уровня формата с точки зрения формы данных с многоуровневой точки зрения.
С многоуровневой точки зрения форма данных,Механизм вычислений ведет себя какRows+Columns,хранилищеслоистыйданные ФормаfileиBlocks、Слой форматаФайл внутреннийиз Расположение данных (Layout+Schema)
Данные каждой строки представляют собой последовательное хранилище в файле.,Чтение всей строки данных эффективно,ОдинокийIOПросто читайте последовательно。Типичные системы являются реляционными.данные Библиотека、key-valueданные Библиотека
Данные каждого столбца в файле представляют собой непрерывное хранилище.,Чтение всего столбца более эффективно,данные в одном столбце имеют один и тот же тип,Кодирование со сжатием более эффективно. Общие крупномасштабные системы анализа данных, такие как SQL-on-Hadoop.,данныеанализ озера и т. д. илиClickHouse,Greenplum,Алибаба ОблакоMaxComputeждатьданныесклад Библиотека Вот и все Формат
Резюме: Уровень формата определяет расположение данных.,Подключиться к вычислительному механизмуихранилище Служить。OLTPиOLAPРазница в сценах очевидна。Бизнес-сценарии определяют техническую реализацию,банковский депозит Применимо кOLTP,Список Применимо кOLAP
Parquetбольшойданные Наиболее широко используется в области анализа.из Список Формат;Sparkрекомендоватьхранилище Формат
Protocol Bufferопределение、Поддерживает необязательные и повторяющиеся поля.、Поддержка вложенных типов (вложенные типы сохраняют только данные конечных узлов)
RowGroup: каждая группа строк содержит определенное количество строк фиксированного размера.
ColumnChunk:RowGroupРазделить на несколько столбцовColumnChunk
Страница: ColumnChunk по-прежнему внутренне делится на страницы.,Общие советы8KBразмер。сжатиеикодированиеизбазовая единица。сохранено согласноизданные Типы делятся наData Page、Dictionary Page、Index Page
FooterСохранение метаинформации файла:Schema、Config、Metadata(Rowgroup Meta、Column Meta)
Plainпрямойхранилищеоригинальныйданные
Кодирование длины прогона (RLE) подходит для сценариев, где база столбцов небольшая и имеется много повторяющихся значений, таких как перечисления, логические значения, фиксированные параметры и т. д.
Bit-Pack Encoding:СотрудничатьRLEкодированиеиспользовать,Сделайте хранилище пластиковых номеров более компактным
Кодировка словаря Словарь Кодирование в основном используется для кодирования строк.,Подходит для случаев, когда основание колонны невелико.,Построить словарную таблицу,написатьDictionary Page;Пучокданныеиспользовать словарьindexзаменять,Затем используйтеRLEкодирование
В сценарии по умолчаниюparquet-mrбудет автоматически основываться наданные Выбор функции。в бизнесе сопределениесцена,Можно использоватьorg.apache.parquet.column.values.factory.ValuesWriteFactory
pageЗаканчиватьencodingпосле,Компресс
Поддерживает несколько алгоритмов сжатия.
snappy: блок скорости сжатия, низкая степень сжатия, подходит для горячих данных.
gzip: медленная скорость сжатия, высокая степень сжатия, подходит для холодных данных.
zstd: новый алгоритм сжатия.,сжатие Сравниватьиgzipпочти,исжатие速度Сравнивать肩snappy
Рекомендуемый выборsnappyилиzstd,Полностью протестируйте эффект сжатия в зависимости от типа бизнеса.,и влияние на производительность запросов
По сравнению с традиционными базами данных поддержка индексов очень грубая.
Min-Max Index:Записыватьpageвнутреннийcolumnизmin_valueиmax_value
Column Index:footerвнутриизcolumn metadataВключатьcolumnChunkизвсеpageизMin-Max value
Offset Index:Записыватьpageв файлеизoffsetиpageизrow range
parquet.bloom.filter.enabled
spark.sql.parquet.ebableVectorizeReader
ORC — один из наиболее широко используемых форматов списка в области анализа больших данных.,отhiveпроект
испытание:хранилищебоковое восприятиеschema、Совместимость и интеграция вычислительной экосистемы、column family