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:
- select;
- filter;
- join;
- aggregation;
- window function;
- insert;
- table DDL
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:
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:
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:
- NameNode metadata;
- query planning;
- file open;
- object storage request
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.
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