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’);