Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> SQL

Làm chủ phân vùng động Hive:Phân đoạn dữ liệu tự động để truy vấn nhanh hơn

Apache Hive là một hệ thống lưu trữ dữ liệu được xây dựng trên Hadoop dành cho các công việc phân tích và MapReduce. Việc phân vùng chia các tập dữ liệu lớn thành các phần nhỏ hơn để truy vấn nhanh hơn. Phân vùng động tự động xác định các giá trị phân vùng từ dữ liệu được chèn vào, không giống như phân vùng tĩnh nơi các giá trị được chỉ định thủ công.

Phân vùng tĩnh và động

Tính năng Phân vùng tĩnh Phân vùng động Giá trị phân vùng Được chỉ định thủ công cho mỗi lần chèn Tự động lấy từ dữ liệuTốt nhất choÍt phân vùng đã biếtNhiều phân vùng hoặc không xác địnhMệnh đề WHEREBắt buộcKhông bắt buộcTính linh hoạtThấpCao

Bật phân vùng động

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

Ví dụ hoàn chỉnh

Tạo bảng nguồn, tải dữ liệu rồi phân vùng động ?

-- 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 tự động tạo các thư mục phân vùng dựa trên country riêng biệt các giá trị trong dữ liệu nguồn.

Quản lý phân vùng

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

Kết luận

Phân vùng động trong Hive tự động tạo các phân vùng từ các giá trị dữ liệu trong khi INSERT, loại bỏ nhu cầu chỉ định thủ công từng phân vùng. Đó là lý tưởng cho các tập dữ liệu lớn có nhiều giá trị phân vùng riêng biệt, cải thiện hiệu suất truy vấn thông qua việc cắt bớt phân vùng đồng thời giảm bớt công sức thủ công.

Làm chủ phân vùng động Hive:Phân đoạn dữ liệu tự động để truy vấn nhanh hơn