Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> SQL

การเรียนรู้การแบ่งพาร์ติชันแบบไดนามิกแบบ Hive:การแบ่งส่วนข้อมูลอัตโนมัติเพื่อการสืบค้นที่เร็วขึ้น

Apache Hive คือระบบคลังข้อมูลที่สร้างขึ้นบน Hadoop สำหรับการวิเคราะห์และงาน MapReduce การแบ่งพาร์ติชันจะแบ่งชุดข้อมูลขนาดใหญ่ออกเป็นส่วนเล็กๆ เพื่อการสืบค้นที่รวดเร็วยิ่งขึ้น การแบ่งพาร์ติชันแบบไดนามิกจะกำหนดค่าพาร์ติชันจากข้อมูลที่ถูกแทรกโดยอัตโนมัติ ซึ่งแตกต่างจากการแบ่งพาร์ติชันแบบคงที่ซึ่งมีการระบุค่าด้วยตนเอง

การแบ่งพาร์ติชันแบบคงที่และแบบไดนามิก

คุณลักษณะ การแบ่งพาร์ติชันแบบคงที่ การแบ่งพาร์ติชันแบบไดนามิก ค่าพาร์ติชั่นระบุด้วยตนเองต่อการแทรก ได้รับมาจากข้อมูลโดยอัตโนมัติดีที่สุดสำหรับพาร์ติชั่นที่รู้จักน้อยพาร์ติชั่นจำนวนมากหรือที่ไม่รู้จัก WHERE clauseจำเป็นไม่จำเป็นความยืดหยุ่นต่ำสูง

การเปิดใช้งานการแบ่งพาร์ติชันแบบไดนามิก

SET hive.exec.dynamic.partition = true;
SET hive.exec.dynamic.partition.mode = nonstrict;

ตัวอย่างที่สมบูรณ์

สร้างตารางต้นฉบับ โหลดข้อมูล จากนั้นแบ่งพาร์ติชันแบบไดนามิก ?

-- Step 1: Create source table
CREATE TABLE sales_raw (
 id INT,
 product STRING,
 amount DOUBLE,
 sale_date STRING,
 country STRING
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';
-- Step 2: Load data
LOAD DATA LOCAL INPATH '/home/data/sales.csv' INTO TABLE sales_raw;
-- Step 3: Create partitioned table
CREATE TABLE sales_partitioned (
 id INT,
 product STRING,
 amount DOUBLE,
 sale_date STRING
)
PARTITIONED BY (country STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';
-- Step 4: Insert with dynamic partitioning
INSERT INTO TABLE sales_partitioned PARTITION (country)
SELECT id, product, amount, sale_date, country
FROM sales_raw;

Hive จะสร้างไดเรกทอรีพาร์ติชันโดยอัตโนมัติตาม country ที่แตกต่างกัน ค่าในแหล่งข้อมูล

การจัดการพาร์ติชัน

-- View partitions
SHOW PARTITIONS sales_partitioned;
-- Query specific partition (partition pruning)
SELECT * FROM sales_partitioned WHERE country = 'India';
-- Drop a partition
ALTER TABLE sales_partitioned DROP PARTITION (country = 'India');

บทสรุป

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

การเรียนรู้การแบ่งพาร์ติชันแบบไดนามิกแบบ Hive:การแบ่งส่วนข้อมูลอัตโนมัติเพื่อการสืบค้นที่เร็วขึ้น