Π€ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ Ρ„Π°ΠΉΠ»ΠΎΠ² Π² Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ…: ΠΊΡ€Π°Ρ‚ΠΊΠΈΠΉ Π»ΠΈΠΊΠ±Π΅Π·

Π€ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ Ρ„Π°ΠΉΠ»ΠΎΠ² Π² Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ…: ΠΊΡ€Π°Ρ‚ΠΊΠΈΠΉ Π»ΠΈΠΊΠ±Π΅Π·
Weather Deity by Remarin

Команда Mail.ru Cloud Solutions ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Π° Π Π°Ρ…ΡƒΠ»Π° Π‘Ρ…Π°Ρ‚ΠΈΠΈ ΠΈΠ· ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Clairvoyant ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ Π΅ΡΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ Ρ„Π°ΠΉΠ»ΠΎΠ² Π² Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠ°ΠΊΠΈΠ΅ самыС распространСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ² Hadoop ΠΈ ΠΊΠ°ΠΊΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ.

Π—Π°Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ½Ρ‹ Ρ€Π°Π·Π½Ρ‹Π΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ Ρ„Π°ΠΉΠ»ΠΎΠ²

Π‘Π΅Ρ€ΡŒΠ΅Π·Π½ΠΎΠ΅ ΡƒΠ·ΠΊΠΎΠ΅ мСсто Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ HDFS, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ MapReduce ΠΈ Spark β€” врСмя поиска, чтСния, Π° Ρ‚Π°ΠΊΠΆΠ΅ записи Π΄Π°Π½Π½Ρ‹Ρ…. Π­Ρ‚ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΡƒΡΡƒΠ³ΡƒΠ±Π»ΡΡŽΡ‚ΡΡ трудностями Π² ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ большими Π½Π°Π±ΠΎΡ€Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, Ссли Ρƒ нас Π½Π΅ фиксированная, Π° ΡΠ²ΠΎΠ»ΡŽΡ†ΠΈΠΎΠ½ΠΈΡ€ΡƒΡŽΡ‰Π°Ρ схСма, ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π½Π΅ΠΊΠΈΠ΅ ограничСния Π½Π° Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅.

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ… ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π½Π° подсистСму хранСния β€” Hadoop Ρ…Ρ€Π°Π½ΠΈΡ‚ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½ΠΎ для достиТСния отказоустойчивости. ΠšΡ€ΠΎΠΌΠ΅ дисков, Π½Π°Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‚ΡΡ процСссор, ΡΠ΅Ρ‚ΡŒ, систСма Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π° ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. По ΠΌΠ΅Ρ€Π΅ роста объСма Π΄Π°Π½Π½Ρ‹Ρ… увСличиваСтся ΠΈ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ ΠΈΡ… ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ хранСния.

Π Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ Ρ„Π°ΠΉΠ»ΠΎΠ² Π² Hadoop ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π½Ρ‹ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΈΠΌΠ΅Π½Π½ΠΎ этих ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. Π’Ρ‹Π±ΠΎΡ€ подходящСго Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Ρ„Π°ΠΉΠ»Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ сущСствСнныС прСимущСства:

  1. Π‘ΠΎΠ»Π΅Π΅ быстроС врСмя чтСния.
  2. Π‘ΠΎΠ»Π΅Π΅ быстроС врСмя записи.
  3. РаздСляСмыС Ρ„Π°ΠΉΠ»Ρ‹.
  4. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΡΠ²ΠΎΠ»ΡŽΡ†ΠΈΠΈ схСм.
  5. Π Π°ΡΡˆΠΈΡ€Π΅Π½Π½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° сТатия.

Одни Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ для ΠΎΠ±Ρ‰Π΅Π³ΠΎ использования, Π΄Ρ€ΡƒΠ³ΠΈΠ΅ для Π±ΠΎΠ»Π΅Π΅ спСцифичСских Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ², Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Ρ‹ с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… характСристик Π΄Π°Π½Π½Ρ‹Ρ…. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ Π²Ρ‹Π±ΠΎΡ€ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ довольно большой.

Π€ΠΎΡ€ΠΌΠ°Ρ‚ Ρ„Π°ΠΉΠ»ΠΎΠ² Avro

Для сСриализации Π΄Π°Π½Π½Ρ‹Ρ… ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Avro β€” это основанный Π½Π° строках, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ строковый, Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ хранСния Π΄Π°Π½Π½Ρ‹Ρ… Π² Hadoop. Он Ρ…Ρ€Π°Π½ΠΈΡ‚ схСму Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ JSON, облСгчая Π΅Π΅ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΡŽ любой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ. Π‘Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Π΅ Π»Π΅ΠΆΠ°Ρ‚ Π² Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅, ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΠΎ ΠΈ эффСктивно.

БистСма сСриализации Avro Π½Π΅ΠΉΡ‚Ρ€Π°Π»ΡŒΠ½Π° ΠΊ языку. Π€Π°ΠΉΠ»Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ языками, Π² настоящСС врСмя это C, C++, C#, Java, Python ΠΈ Ruby.

ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠΉ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ Avro являСтся надСТная ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° схСм Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ с Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΡΠ²ΠΎΠ»ΡŽΡ†ΠΈΠΎΠ½ΠΈΡ€ΡƒΡŽΡ‚. Avro ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚ измСнСния схСмы β€” ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Π΅ΠΉ.

Avro ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹Π΅ структуры Π΄Π°Π½Π½Ρ‹Ρ…. НапримСр, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ запись, которая содСрТит массив, пСрСчислимый Ρ‚ΠΈΠΏ ΠΈ подзапись.

Π€ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ Ρ„Π°ΠΉΠ»ΠΎΠ² Π² Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ…: ΠΊΡ€Π°Ρ‚ΠΊΠΈΠΉ Π»ΠΈΠΊΠ±Π΅Π·
Π­Ρ‚ΠΎΡ‚ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ идСально ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для записи Π² ΠΏΠΎΡΠ°Π΄ΠΎΡ‡Π½ΡƒΡŽ (ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π½ΡƒΡŽ) Π·ΠΎΠ½Ρƒ ΠΎΠ·Π΅Ρ€Π° Π΄Π°Π½Π½Ρ‹Ρ… (ΠΎΠ·Π΅Ρ€ΠΎ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈΠ»ΠΈ data lake β€” коллСкция инстансов для хранСния Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… Π² Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ нСпосрСдствСнно ΠΊ источникам Π΄Π°Π½Π½Ρ‹Ρ…).

Π’Π°ΠΊ Π²ΠΎΡ‚, для записи Π² ΠΏΠΎΡΠ°Π΄ΠΎΡ‡Π½ΡƒΡŽ Π·ΠΎΠ½Ρƒ ΠΎΠ·Π΅Ρ€Π° Π΄Π°Π½Π½Ρ‹Ρ… Ρ‚Π°ΠΊΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π»ΡƒΡ‡ΡˆΠ΅ всСго ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΏΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ:

  1. Π”Π°Π½Π½Ρ‹Π΅ ΠΈΠ· этой Π·ΠΎΠ½Ρ‹ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ для дальнСйшСй ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ниТСстоящими систСмами β€” ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π½Π° основС строк Π² этом случаС Π±ΠΎΠ»Π΅Π΅ эффСктивСн.
  2. НиТСстоящиС систСмы ΠΌΠΎΠ³ΡƒΡ‚ Π»Π΅Π³ΠΊΠΎ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ схСм ΠΈΠ· Ρ„Π°ΠΉΠ»ΠΎΠ² β€” Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ схСмы ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ Π²ΠΎ внСшнСм ΠΌΠ΅Ρ‚Π°-Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅.
  3. Π›ΡŽΠ±ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ исходной схСмы Π»Π΅Π³ΠΊΠΎ обрабатываСтся (ΡΠ²ΠΎΠ»ΡŽΡ†ΠΈΡ схСмы).

Π€ΠΎΡ€ΠΌΠ°Ρ‚ Ρ„Π°ΠΉΠ»ΠΎΠ² Parquet

Parquet β€” опСнсорсный Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Ρ„Π°ΠΉΠ»ΠΎΠ² для Hadoop, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ…Ρ€Π°Π½ΠΈΡ‚ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ структуры Π΄Π°Π½Π½Ρ‹Ρ… Π² плоском столбчатом Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅.

По ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΌ строчным ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠΌ, Parquet Π±ΠΎΠ»Π΅Π΅ эффСктивСн с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния хранСния ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

Π­Ρ‚ΠΎ особСнно ΠΏΠΎΠ»Π΅Π·Π½ΠΎ для запросов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ столбцы ΠΈΠ· ΡˆΠΈΡ€ΠΎΠΊΠΎΠΉ (со ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ столбцами) Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. Благодаря Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρƒ Ρ„Π°ΠΉΠ»ΠΎΠ² Ρ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ столбцы, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π²Π²ΠΎΠ΄-Π²Ρ‹Π²ΠΎΠ΄ сводится ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΡƒ.

НСбольшоС отступлСниС-пояснСниС: Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Ρ„Π°ΠΉΠ»Π° Parquet Π² Hadoop, Π΄Π°Π²Π°ΠΉΡ‚Π΅ посмотрим, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ основанный Π½Π° столбцах β€” Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ столбчатый β€” Ρ„ΠΎΡ€ΠΌΠ°Ρ‚. Π’ Ρ‚Π°ΠΊΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ вмСстС хранятся ΠΎΠ΄Π½ΠΎΡ‚ΠΈΠΏΠ½Ρ‹Π΅ значСния ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ столбца.

НапримСр, запись Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ поля ID, Name ΠΈ Department. Π’ этом случаС всС значСния столбца ID Π±ΡƒΠ΄ΡƒΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ вмСстС, ΠΊΠ°ΠΊ ΠΈ значСния столбца Name ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. Π’Π°Π±Π»ΠΈΡ†Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊΠΎΠΉ Π²ΠΈΠ΄:

ID
Name
Department

1
emp1
d1

2
emp2
d2

3
emp3
d3

Π’ строковом Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ Π΄Π°Π½Π½Ρ‹Π΅ сохранятся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

1
emp1
d1
2
emp2
d2
3
emp3
d3

Π’ столбчатом Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ² Ρ‚Π΅ ΠΆΠ΅ Π΄Π°Π½Π½Ρ‹Π΅ сохранятся Ρ‚Π°ΠΊ:

1
2
3
emp1
emp2
emp3
d1
d2
d3

Π‘Ρ‚ΠΎΠ»Π±Ρ‡Π°Ρ‚Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π±ΠΎΠ»Π΅Π΅ эффСктивСн, ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ нСсколько столбцов. Он ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ столбцы, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ находятся ΠΏΠΎ сосСдству. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π° сводятся ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΡƒ.

НапримСр, Π²Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ столбСц NAME. Π’ строковом Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ запись Π² Π½Π°Π±ΠΎΡ€Π΅ Π΄Π°Π½Π½Ρ‹Ρ… Π½ΡƒΠΆΠ½ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ, Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΏΠΎ полям, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ NAME. Π‘Ρ‚ΠΎΠ»Π±Ρ‡Π°Ρ‚Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ позволяСт ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ нСпосрСдствСнно ΠΊ столбцу Name, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ всС значСния для этого столбца хранятся вмСстС. НС придСтся ΡΠΊΠ°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всю запись.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, столбчатый Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ΠΏΠΎΠ²Ρ‹ΡˆΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ запросов, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ для ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° ΠΊ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹ΠΌ столбцам трСбуСтся мСньшС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ поиска ΠΈ сокращаСтся количСство ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°, вСдь происходит Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½ΡƒΠΆΠ½Ρ‹Ρ… столбцов.

Одна ΠΈΠ· ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… особСнностСй Parquet Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π² Ρ‚Π°ΠΊΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ с Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ структурами. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π² Ρ„Π°ΠΉΠ»Π΅ Parquet Π΄Π°ΠΆΠ΅ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ поля ΠΌΠΎΠΆΠ½ΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π±Π΅Π· нСобходимости Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ всС поля Π²ΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ структурС. Для хранСния Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… структур Parquet ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΈΠ·ΠΌΠ΅Π»ΡŒΡ‡Π΅Π½ΠΈΡ ΠΈ сборки (shredding and assembly).

Π€ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ Ρ„Π°ΠΉΠ»ΠΎΠ² Π² Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ…: ΠΊΡ€Π°Ρ‚ΠΊΠΈΠΉ Π»ΠΈΠΊΠ±Π΅Π·
Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Ρ„Π°ΠΉΠ»Π° Parquet Π² Hadoop, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π½Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Ρ‹:

  1. Π“Ρ€ΡƒΠΏΠΏΠ° строк (row group): логичСскоС Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ Ρ€Π°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° строки. Π“Ρ€ΡƒΠΏΠΏΠ° строк состоит ΠΈΠ· Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ столбца Π² Π½Π°Π±ΠΎΡ€Π΅ Π΄Π°Π½Π½Ρ‹Ρ….
  2. Π€Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ столбца (column chunk): Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ столбца. Π­Ρ‚ΠΈ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ столбцов ΠΆΠΈΠ²ΡƒΡ‚ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΠ΅ строк ΠΈ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎ Π±ΡƒΠ΄ΡƒΡ‚ смСТными Π² Ρ„Π°ΠΉΠ»Π΅.
  3. Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° (page): Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ столбцов дСлятся Π½Π° страницы, записанныС Π΄Ρ€ΡƒΠ³ Π·Π° Π΄Ρ€ΡƒΠ³ΠΎΠΌ. Π£ страниц ΠΎΠ±Ρ‰ΠΈΠΉ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Π΅.

Π€ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ Ρ„Π°ΠΉΠ»ΠΎΠ² Π² Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ…: ΠΊΡ€Π°Ρ‚ΠΊΠΈΠΉ Π»ΠΈΠΊΠ±Π΅Π·
Π—Π΄Π΅ΡΡŒ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ просто содСрТит волшСбноС число PAR1 (4 Π±Π°ΠΉΡ‚Π°), ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ„Π°ΠΉΠ» ΠΊΠ°ΠΊ Ρ„Π°ΠΉΠ» Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Parquet.

Π’ Ρ„ΡƒΡ‚Π΅Ρ€Π΅ записано ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

  1. ΠœΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ содСрТат стартовыС ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ столбца. ΠŸΡ€ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠΈ Π½ΡƒΠΆΠ½ΠΎ сначала ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ всС ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰ΠΈΠ΅ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ столбцов. Π—Π°Ρ‚Π΅ΠΌ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ столбцов слСдуСт Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ. Π•Ρ‰Π΅ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Π²Π΅Ρ€ΡΠΈΡŽ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°, схСму ΠΈ Π»ΡŽΠ±Ρ‹Π΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ°Ρ€Ρ‹ ΠΊΠ»ΡŽΡ‡-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.
  2. Π”Π»ΠΈΠ½Π° ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… (4 Π±Π°ΠΉΡ‚Π°).
  3. Π’ΠΎΠ»ΡˆΠ΅Π±Π½ΠΎΠ΅ число PAR1 (4 Π±Π°ΠΉΡ‚Π°).

Π€ΠΎΡ€ΠΌΠ°Ρ‚ Ρ„Π°ΠΉΠ»ΠΎΠ² ORC

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ строково-столбчатый Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Ρ„Π°ΠΉΠ»ΠΎΠ² (Optimized Row Columnar, ORC) ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΠΎΡ‡Π΅Π½ΡŒ эффСктивный способ хранСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π±Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅ΠΎΠ΄ΠΎΠ»Π΅Ρ‚ΡŒ ограничСния Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ². Π₯Ρ€Π°Π½ΠΈΡ‚ Π΄Π°Π½Π½Ρ‹Π΅ Π² идСально ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅, позволяя ΠΏΡ€ΠΎΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Π΅ Π΄Π΅Ρ‚Π°Π»ΠΈ β€” ΠΏΡ€ΠΈ этом Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ построСния Π±ΠΎΠ»ΡŒΡˆΠΈΡ…, слоТных ΠΈΠ»ΠΈ обслуТиваСмых Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ индСксов.

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° ORC:

  1. Один Ρ„Π°ΠΉΠ» Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ, Ρ‡Ρ‚ΠΎ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π½Π° NameNode (ΡƒΠ·Π΅Π» ΠΈΠΌΠ΅Π½).
  2. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… Hive, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ DateTime, дСсятичныС ΠΈ слоТныС Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… (struct, list, map ΠΈ union).
  3. ΠžΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ΅ считываниС ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Ρ„Π°ΠΉΠ»Π° Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ процСссами RecordReader.
  4. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ раздСлСния Ρ„Π°ΠΉΠ»ΠΎΠ² Π±Π΅Π· сканирования Π½Π° Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ°Ρ€ΠΊΠ΅Ρ€ΠΎΠ².
  5. ΠžΡ†Π΅Π½ΠΊΠ° максимально Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ³ΠΎ выдСлСния памяти ΠΊΡƒΡ‡ΠΈ Π½Π° процСссы чтСния/записи ΠΏΠΎ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π² Ρ„ΡƒΡ‚Π΅Ρ€Π΅ Ρ„Π°ΠΉΠ»Π°.
  6. ΠœΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ Π² Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ сСриализации Protocol Buffers, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΈ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ поля.

Π€ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ Ρ„Π°ΠΉΠ»ΠΎΠ² Π² Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ…: ΠΊΡ€Π°Ρ‚ΠΊΠΈΠΉ Π»ΠΈΠΊΠ±Π΅Π·
ORC Ρ…Ρ€Π°Π½ΠΈΡ‚ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ строк Π² ΠΎΠ΄Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅, Π° Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ строчныС Π΄Π°Π½Π½Ρ‹Π΅ хранятся Π² столбчатом Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅.

Π€Π°ΠΉΠ» ORC Ρ…Ρ€Π°Π½ΠΈΡ‚ Π³Ρ€ΡƒΠΏΠΏΡ‹ строк, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ полосами (stripes) ΠΈ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π² Ρ„ΡƒΡ‚Π΅Ρ€Π΅ Ρ„Π°ΠΉΠ»Π°. Postscript Π² ΠΊΠΎΠ½Ρ†Π΅ Ρ„Π°ΠΉΠ»Π° содСрТит ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ сТатия ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ сТатого Ρ„ΡƒΡ‚Π΅Ρ€Π°.

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ€Π°Π·ΠΌΠ΅Ρ€ полосы составляСт 250 ΠœΠ‘. Π—Π° счСт полос Ρ‚Π°ΠΊΠΎΠ³ΠΎ большого Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΈΠ· HDFS выполняСтся Π±ΠΎΠ»Π΅Π΅ эффСктивно: большими Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½Ρ‹ΠΌΠΈ Π±Π»ΠΎΠΊΠ°ΠΌΠΈ.

Π’ Ρ„ΡƒΡ‚Π΅Ρ€Π΅ Ρ„Π°ΠΉΠ»Π° записан список полос Π² Ρ„Π°ΠΉΠ»Π΅, количСство строк Π½Π° полосу ΠΈ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ столбца. Π’Π°ΠΌ ΠΆΠ΅ записано Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ count, min, max ΠΈ sum ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ столбцу.

Π€ΡƒΡ‚Π΅Ρ€ полосы содСрТит ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ мСстополоТСний ΠΏΠΎΡ‚ΠΎΠΊΠ°.

Π‘Ρ‚Ρ€ΠΎΡ‡Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ сканировании Ρ‚Π°Π±Π»ΠΈΡ†.

Π˜Π½Π΄Π΅ΠΊΡΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ значСния для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ столбца ΠΈ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ строк Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ столбцС. Π˜Π½Π΄Π΅ΠΊΡΡ‹ ORC ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Π²Ρ‹Π±ΠΎΡ€Π° полос ΠΈ Π³Ρ€ΡƒΠΏΠΏ строк, Π° Π½Π΅ для ΠΎΡ‚Π²Π΅Ρ‚Π° Π½Π° запросы.

Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ Ρ€Π°Π·Π½Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ² Ρ„Π°ΠΉΠ»ΠΎΠ²

Avro ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Parquet

  1. Avro β€” Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ хранСния ΠΏΠΎ строкам, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Parquet Ρ…Ρ€Π°Π½ΠΈΡ‚ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎ столбцам.
  2. Parquet Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для аналитичСских запросов, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ чтСния ΠΈ запрос Π΄Π°Π½Π½Ρ‹Ρ… Π³ΠΎΡ€Π°Π·Π΄ΠΎ эффСктивнСС, Ρ‡Π΅ΠΌ запись.
  3. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ записи Π² Avro Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ эффСктивнСС, Ρ‡Π΅ΠΌ Π² Parquet.
  4. Avro Π±ΠΎΠ»Π΅Π΅ Π·Ρ€Π΅Π»ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с ΡΠ²ΠΎΠ»ΡŽΡ†ΠΈΠ΅ΠΉ схСм. Parquet ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ схСмы, Π° Π² Avro Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΡ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ ΡΠ²ΠΎΠ»ΡŽΡ†ΠΈΡ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ столбцов.
  5. Parquet идСально ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для запроса подмноТСства столбцов Π² ΠΌΠ½ΠΎΠ³ΠΎΠΊΠΎΠ»ΠΎΠ½ΠΎΡ‡Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅. Avro ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ETL, Π³Π΄Π΅ ΠΌΡ‹ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅ΠΌ всС столбцы.

ORC ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Parquet

  1. Parquet Π»ΡƒΡ‡ΡˆΠ΅ Ρ…Ρ€Π°Π½ΠΈΡ‚ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅.
  2. ORC Π»ΡƒΡ‡ΡˆΠ΅ приспособлСн ΠΊ ΠΏΡ€ΠΎΡ‚Π°Π»ΠΊΠΈΠ²Π°Π½ΠΈΡŽ ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚ΠΎΠ² (predicate pushdown).
  3. ORC ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ свойства ACID.
  4. ORC Π»ΡƒΡ‡ΡˆΠ΅ сТимаСт Π΄Π°Π½Π½Ρ‹Π΅.

Π§Ρ‚ΠΎ Π΅Ρ‰Π΅ ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅:

  1. Анализ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΎΠ±Π»Π°ΠΊΠ΅: ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΡΡ‚Π°Ρ‚ΡŒ Π΄Π°Ρ‚Π°-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ.
  2. Π‘ΠΊΡ€ΠΎΠΌΠ½ΠΎΠ΅ руководство ΠΏΠΎ схСмам Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ….
  3. Наш Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌ-ΠΊΠ°Π½Π°Π» ΠΎ Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ трансформации.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com