พาร์ทิชันไฮฟ์และถังพร้อมตัวอย่าง

ตาราง พาร์ติชัน และบัคเก็ตเป็นส่วนหนึ่งของการสร้างแบบจำลองข้อมูล Hive

พาร์ติชั่นคืออะไร?

Hive Partitions เป็นวิธีจัดระเบียบตารางออกเป็นพาร์ติชั่นโดยการแบ่งตารางออกเป็นส่วนต่างๆ ตามคีย์พาร์ติชั่น

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

ตัวอย่างเช่น: -

“ลูกค้ามีข้อมูลอีคอมเมิร์ซบางส่วนที่เป็นของการดำเนินการในอินเดีย ซึ่งการดำเนินการแต่ละรัฐ (38 รัฐ) กล่าวถึงทั้งหมด หากเราใช้คอลัมน์รัฐเป็นคีย์พาร์ติชัน และดำเนินการพาร์ติชันบนข้อมูลอินเดียทั้งหมด เราจะได้จำนวนพาร์ติชัน (38 พาร์ติชัน) ซึ่งเท่ากับจำนวนรัฐ (38) ที่มีอยู่ในอินเดีย โดยสามารถดูข้อมูลแต่ละรัฐแยกกันในตารางพาร์ติชันได้

ตัวอย่างโค้ดสำหรับพาร์ติชัน

  1. การสร้างตารางทุกรัฐ
create table all states(state string, District string,Enrolments string)

row format delimited

fields terminated by ',';
  1. กำลังโหลดข้อมูลลงในตารางที่สร้างทุกสถานะ
Load data local inpath '/home/hduser/Desktop/AllStates.csv' into table allstates;
  1. การสร้างตารางพาร์ทิชัน
create table state_part(District string,Enrolments string) PARTITIONED BY(state string);
  1. สำหรับพาร์ติชันเราต้องตั้งค่าคุณสมบัตินี้
    set hive.exec.dynamic.partition.mode=nonstrict
  2. กำลังโหลดข้อมูลลงในตารางพาร์ติชัน
INSERT OVERWRITE TABLE state_part PARTITION(state)
SELECT district,enrolments,state from  allstates;
  1. การประมวลผลจริงและการสร้างตารางพาร์ติชั่นตามสถานะเป็นพาร์ติชั่นคีย์
  2. จะมีเอาต์พุตพาร์ติชัน 38 รายการในที่เก็บข้อมูล HDFS โดยมีชื่อไฟล์เป็นชื่อสถานะ เราจะตรวจสอบสิ่งนี้ในขั้นตอนนี้

ภาพหน้าจอต่อไปนี้จะแสดงการดำเนินการของโค้ดที่กล่าวถึงข้างต้น

พาร์ทิชันไฮฟ์

พาร์ทิชันไฮฟ์

พาร์ทิชันไฮฟ์

พาร์ทิชันไฮฟ์

จากโค้ดด้านบนเราทำสิ่งต่อไปนี้

  1. การสร้างตารางรัฐทั้งหมดด้วยชื่อคอลัมน์ 3 ชื่อ เช่น รัฐ เขต และการลงทะเบียน
  2. กำลังโหลดข้อมูลลงในตารางทุกสถานะ
  3. การสร้างตารางพาร์ติชันที่มีสถานะเป็นคีย์พาร์ติชัน
  4. ในขั้นตอนนี้ การตั้งค่าโหมดพาร์ติชันเป็นแบบไม่เข้มงวด (โหมดนี้จะเปิดใช้งานโหมดพาร์ติชันแบบไดนามิก)
  5. กำลังโหลดข้อมูลลงในพาร์ติชัน tablestate_part
  6. การประมวลผลจริงและการสร้างตารางพาร์ติชั่นตามสถานะเป็นพาร์ติชั่นคีย์
  7. จะมีเอาต์พุตพาร์ติชัน 38 รายการในที่เก็บข้อมูล HDFS โดยมีชื่อไฟล์เป็นชื่อสถานะ เราจะตรวจสอบสิ่งนี้ในขั้นตอนนี้ ในขั้นตอนนี้ เราจะเห็นเอาต์พุตของพาร์ติชัน 38 รายการใน HDFS

ถังคืออะไร?

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

  • ข้อมูลที่อยู่ในพาร์ติชั่นนั้นสามารถแบ่งออกเป็น Buckets เพิ่มเติมได้
  • การแบ่งจะดำเนินการตามแฮชของคอลัมน์เฉพาะที่เราเลือกในตาราง
  • ที่เก็บข้อมูลใช้อัลกอริทึม Hashing บางรูปแบบที่ส่วนหลังเพื่ออ่านแต่ละบันทึกและวางลงในที่เก็บข้อมูล
  • ใน Hive เราต้องเปิดใช้งาน buckets โดยใช้ set.hive.enforce.bucketing=true;

ขั้นตอน 1) การสร้าง Bucket ดังภาพด้านล่าง

ถังไฮฟ์

จากภาพหน้าจอด้านบน

  • เรากำลังสร้าง Sample_bucket ด้วยชื่อคอลัมน์ เช่น first_name, job_id, department, เงินเดือน และประเทศ
  • เรากำลังสร้างที่เก็บข้อมูล 4 อันตรงนี้
  • เมื่อข้อมูลถูกโหลดโดยอัตโนมัติแล้ว ให้วางข้อมูลลงใน 4 ถัง

ขั้นตอน 2) กำลังโหลดข้อมูลลงในที่เก็บข้อมูลตัวอย่างตาราง

สมมติว่ามี "ตารางพนักงาน" ที่สร้างไว้แล้วในระบบไฮฟ์ ในขั้นตอนนี้ เราจะเห็นการโหลดข้อมูลจากตารางพนักงานลงถังตัวอย่างตาราง

ก่อนที่เราจะเริ่มย้ายข้อมูลพนักงานลงในที่เก็บข้อมูล ตรวจสอบให้แน่ใจว่าประกอบด้วยชื่อคอลัมน์ เช่น first_name, job_id, department, เงินเดือน และประเทศ

ที่นี่เรากำลังโหลดข้อมูลลงในถังตัวอย่างจากตารางพนักงาน

ถังไฮฟ์

ขั้นตอน 3)กำลังแสดง 4 ที่เก็บข้อมูลที่สร้างขึ้นในขั้นตอนที่ 1

ถังไฮฟ์

จากภาพหน้าจอด้านบน เราจะเห็นว่าข้อมูลจากตารางพนักงานถูกถ่ายโอนไปยัง 4 บัคเก็ตที่สร้างขึ้นในขั้นตอนที่ 1