Bosh sahifa Wiki Hive

Hive

Hive — katta hajmdagi ma’lumotlarni distributed storage ustida SQLga yaqin til orqali query qilish va qayta ishlashga mo‘ljallangan data warehouse tizimi. U Hadoop ekotizimida paydo bo‘lgan bo‘lib, batch analytics va ETL jarayonlarini soddalashtiradi.

Hive table va schema metadata’sini catalogda saqlaydi, querylarni esa distributed execution engine uchun tasklarga aylantiradi.

HiveQL

Hive query tili SQLga o‘xshaydi.

Misol:

SELECT region, SUM(amount)
FROM sales
GROUP BY region;

HiveQL:

amallarini qo‘llashi mumkin.

Aniq syntax va imkoniyatlar versiya hamda execution engine’ga bog‘liq.

Table

Hive table data fayllari va ularga tegishli schema metadata’sini birlashtiradi.

Table column, type, partition, storage format va locationga ega.

Data ko‘pincha HDFS yoki object storage’da saqlanadi.

Hive table ma’lumotning fizik nusxasini har doim o‘zi boshqarmaydi.

Managed table

Managed table’da Hive data location va lifecycle’ni boshqaradi.

Table drop qilinganda data ham o‘chirilishi mumkin.

Bu vaqtinchalik yoki to‘liq Hive boshqaruvidagi dataset uchun ishlatiladi.

Drop semantikasi storage va configurationga bog‘liq.

External table

External table mavjud fayllarga schema beradi.

Table drop qilinsa metadata o‘chadi, ammo data fayllari saqlanib qoladi.

Bu:

  • umumiy data lake;
  • boshqa engine bilan birga ishlash;
  • raw data;
  • mustaqil lifecycle

uchun qulay.

Metastore

Metastore quyidagilarni saqlaydi:

  • database;
  • table;
  • column;
  • partition;
  • file location;
  • format;
  • statistics;
  • permissionga tegishli metadata.

Bir nechta query engine bir xil metastore’dan foydalanishi mumkin.

Metastore availability va schema compatibility muhim.

Partition

Katta table partition key bo‘yicha kataloglarga ajratiladi.

Masalan:

date=2026-07-14/
region=UZ/

Query filter partition keyni ishlatsa faqat tegishli kataloglar o‘qiladi.

Bu partition pruning.

Juda ko‘p mayda partition metastore yukini oshiradi.

Bucketing

Table rowlari hash asosida oldindan belgilangan bucket fayllarga bo‘linadi.

Bucketing:

uchun ishlatilishi mumkin.

Bucket soni va key query patternga mos bo‘lishi kerak.

File format

Hive turli file formatlar bilan ishlaydi.

Keng tarqalgan turlar:

  • text;
  • CSVga yaqin format;
  • Avro;
  • ORC;
  • Parquet.

Columnar format:

imkoniyatlarini beradi.

SerDe

Serializer/Deserializer file ichidagi byte’larni Hive row va columnlariga aylantiradi.

Custom yoki built-in SerDe:

  • delimiter;
  • JSON;
  • regular expression;
  • binary format

bilan ishlashi mumkin.

Noto‘g‘ri SerDe rowlarni null yoki noto‘g‘ri columnlarga ajratishi mumkin.

Schema-on-read

Hive ko‘pincha file data’siga o‘qish vaqtida schema qo‘llaydi.

File allaqachon storage’da mavjud bo‘lishi mumkin.

Bu moslashuvchan, ammo invalid row va type conversion query vaqtida ko‘rinadi.

Curated tablelarda data oldindan tekshiriladi.

Query execution

Hive query logical va physical planga aylantiriladi.

Execution backend:

  • MapReduce;
  • Tezroq DAG engine;
  • Sparkga o‘xshash engine

bo‘lishi mumkin.

Query katta batch tasklarga bo‘linadi.

Interaktiv past latency har doim asosiy maqsad bo‘lmagan.

Statistics

Optimizer table va column statistics’dan foydalanadi.

Ma’lumotlar:

  • row soni;
  • file hajmi;
  • distinct;
  • min-max;
  • null;
  • partition statistics.

Statistics eskirsa join order va execution plan yomonlashishi mumkin.

Join

Katta tablelar joinida shuffle yuz beradi.

Kichik table barcha workerga tarqatilsa map-side yoki broadcast joinga o‘xshash optimization ishlatiladi.

Data skew ayrim reducer yoki taskni sekinlashtiradi.

Dynamic partition

Insert vaqtida partition qiymatlari data rowlaridan olinishi mumkin.

Bu ko‘p partitionni bitta query bilan yaratadi.

Nazorat bo‘lmasa minglab mayda partition va file paydo bo‘ladi.

Maximal partition soni va file hajmi boshqariladi.

Kichik fayllar

Ko‘p parallel task juda ko‘p mayda output file yaratishi mumkin.

Bu:

xarajatini oshiradi.

Compaction yoki output partition sonini kamaytirish ishlatiladi.

ACID table

Ayrim Hive table’lar insert, update va delete transactionlarini qo‘llashi mumkin.

Bu base file va delta filelar orqali amalga oshirilishi mumkin.

Background compaction delta’larni birlashtiradi.

Transaction manager, bucket va file format talablari mavjud bo‘lishi mumkin.

Data warehouse vazifasi

Hive:

  • raw data’ni parse qilish;
  • partitionlangan tarix saqlash;
  • ETL;
  • summary table;
  • batch report;
  • boshqa engine uchun catalog

vazifalarini bajaradi.

U operational OLTP database o‘rnida ishlatilmaydi.

Security

Access:

darajasida boshqariladi.

SQL permission mavjud bo‘lsa ham user storage fayllariga bevosita kira olmasligi kerak.

Audit va data masking qo‘llanishi mumkin.

Query queue

Ko‘p analyst bir vaqtda katta query ishga tushirsa cluster resource’lari uchun raqobat yuz beradi.

Queue va scheduler:

  • jamoa;
  • priority;
  • memory;
  • CPU;
  • maksimal parallel query

bo‘yicha workloadni boshqaradi.

Schema evolution

Columnar file va Hive table schema’si vaqt o‘tishi bilan o‘zgarishi mumkin.

Field qo‘shish odatda osonroq.

Column rename, tartib yoki type o‘zgarishi eski fayllar bilan compatibility muammosini keltiradi.

Field IDga ega formatlar rename’ni ishonchliroq boshqarishi mumkin.

Temporary table

Session doirasidagi oraliq natija temporary table’da saqlanishi mumkin. Bu murakkab ETLni bosqichlarga ajratadi, ammo session tugaganda data lifecycle’i aniq boshqariladi.

Bog‘liq tushunchalar

HiveQL, Metastore, Managed table, External table, Partition, Bucketing, SerDe, ORC, Parquet, Data warehouse, Hadoop