Hive - การแบ่งพาร์ติชัน

Hive จัดตารางเป็นพาร์ติชัน เป็นวิธีการแบ่งตารางออกเป็นส่วนที่เกี่ยวข้องตามค่าของคอลัมน์ที่แบ่งพาร์ติชันเช่นวันที่เมืองและแผนก การใช้พาร์ติชันทำให้ง่ายต่อการสืบค้นข้อมูลบางส่วน

ตารางหรือพาร์ติชันแบ่งย่อยออกเป็น buckets,เพื่อจัดเตรียมโครงสร้างเพิ่มเติมให้กับข้อมูลที่อาจใช้เพื่อการสืบค้นที่มีประสิทธิภาพมากขึ้น การเก็บข้อมูลทำงานตามค่าของฟังก์ชันแฮชของคอลัมน์บางคอลัมน์ของตาราง

ตัวอย่างเช่นตารางชื่อ Tab1มีข้อมูลพนักงานเช่น id, name, dept และ yoj (เช่นปีที่เข้าร่วม) สมมติว่าคุณต้องการเรียกดูรายละเอียดของพนักงานทั้งหมดที่เข้าร่วมในปี 2012 แบบสอบถามจะค้นหาข้อมูลที่ต้องการทั้งตาราง อย่างไรก็ตามหากคุณแบ่งข้อมูลพนักงานกับปีและจัดเก็บไว้ในไฟล์แยกต่างหากจะช่วยลดเวลาในการประมวลผลแบบสอบถาม ตัวอย่างต่อไปนี้แสดงวิธีแบ่งพาร์ติชันไฟล์และข้อมูล:

ไฟล์ต่อไปนี้มีตาราง Employeedata

/ tab1 / Employeedata / file1

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

ข้อมูลข้างต้นแบ่งเป็นสองไฟล์โดยใช้ปี

/ 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, ...)

แบบสอบถามต่อไปนี้ใช้เพื่อเพิ่มพาร์ติชันลงในตารางพนักงาน

hive> ALTER TABLE employee
> ADD PARTITION (year=’2012’)
> 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’);