آموزش Hive

آموزش Hive – پارتیشن بندی

Hive برای سازمان دهی کردن جدول ها آن ها را به پارتیشن هایی تقسیم می کنه. در این روش، جدول بر اساس مقادیر ستون های پارتیشن بندی شده مثل date، ciry و department به بخش های مرتبطی تقسیم میشه. با این روش، ایجاد کوئری برای بخشی از اطلاعات راحت میشه.

برای این که داده ها برای ایجاد کوئری بهینه تر بشن، ساختارهای اضافی بوجود آمده اند؛ یعنی جدول ها یا پارتیشن ها به قسمت های کوچک تری به نامِ bucket تقسیم شدن. تقسیم بندی اطلاعات به Bucket، بر اساس مقدار تابعِ hash مربوط به برخی از ستون های جدول انجام میشه.

برای مثال، جدولی به نامِ Tab1 حاوی اطلاعاتِ کارمندها است، مثل id، name، dept و yoj (سال شروع کار - year of joining). فرض می کنیم که میخواین اطلاعات تمام کارمندهایی را که در سال 2012 شروع به کار کردن، بازیابی کنین. یک کوئری تمام جدول را جستجو می کنه تا اطلاعات خواسته شده را پیدا کنه. ولی اگه اطلاعاتِ کارمندان را بر اساسِ year پارتیشن بندی کرده و آن ها را در فایل جداگانه ای ذخیره کنین، زمان پردازش کوئری کمتر میشه. مثال زیر نحوه ی پارتیش بندی فایل به همراه اطلاعاتش را نشان میده:

فایل زیر حاوی اطلاعات جدولِ employee است.

/tab1/employeedata/file1

id, name, dept, yoj
1, gopal, TP, 2012
2, kiran, HR, 2012
3, kaleel,SC, 2013
4, Prasanth, SC, 2013

اطلاعات بالا بر اساسِ year به دو فایل تقسیم شدن.

/tab1/employeedata/2012/file2

1, gopal, TP, 2012
2, kiran, HR, 2012

/tab1/employeedata/2013/file3

3, kaleel,SC, 2013
4, Prasanth, SC, 2013

اضافه کردن پارتیشن

می توانیم با تغییر جدول، پارتیشن هایی به آن را اضافه کنیم. فرض می کنیم نام جدول، employee است و دارای فیلدهایی مثلِ Id, Name, Salary, Designation, Dept و yoj است.

شکل دستوری:

ALTER TABLE table_name ADD [IF NOT EXISTS] PARTITION partition_spec
[LOCATION 'location1'] partition_spec [LOCATION 'location2'] ...;

partition_spec:
: (p_column = p_col_value, p_column = p_col_value, ...)

کوئری زیر برای اضافه کردن یک پارتیشن به جدولِ employee استفاده میشه.

hive> ALTER TABLE employee
> ADD PARTITION (year=’2013’)
> location '/2012/part2012';

تغییر نام پارتیشن

شکل دستوری این دستور بصورت زیر است:

ALTER TABLE table_name PARTITION partition_spec RENAME TO PARTITION partition_spec;

کوئری زیر برای تغییر نام پارتیشن استفاده میشه:

hive> ALTER TABLE employee PARTITION (year=’1203’)
   > RENAME TO PARTITION (Yoj=’1203’);

حذف پارتیشن

دستور زیر برای حذف پارتیشن استفاده میشه:

ALTER TABLE table_name DROP [IF EXISTS] PARTITION partition_spec, PARTITION partition_spec,...;

کوئری زیر برای حذف پارتیشن استفاده میشه:

hive> ALTER TABLE employee DROP [IF EXISTS]
   > PARTITION (year=’1203’);
در صورتی که سوال و یا نظری دارید، از بخش نظرات با ما در میان بگذارید.

خبـرنــامه

Newsletters

در خبــرنـامه سافت اسکیل عضو شویــد تا جدیدترین هـای سایت را بلافاصله در ایمیل خـود دریافت کنیـد

شما چه نظر و یا سوالی درباره این نوشته دارید؟

مبحث آموزشی

آموزش Hive

Learn Hive

پرســیدن سؤال جدید

سؤال های تخصصی خود را از ما بپرسید

دنبال کردن تلگرام کانال سافت اسکیل

https://telegram.me/softskill_ir

عملیات کاربران

خبـرنــامه

Newsletters

در خبــرنـامه سافت اسکیل عضو شویــد تا جدیدترین هـای سایت را بلافاصله در ایمیل خـود دریافت کنیـد

کلیک کنید و سوالات خود را از ما بپرسید
لطفا فرم سوال را پر کنید

سوال شما با موفقیت ثبت شد. برای اینکه بتوانیم به شما اطلاع رسانی کنیم، موارد زیر را وارد کنید:

لطفا چند لحظه منتظر بمانید ...