Phân vùng & nhóm Hive với ví dụ

Bảng, Phân vùng và Nhóm là các phần của mô hình hóa dữ liệu Hive.

Phân vùng là gì?

Phân vùng Hive là một cách tổ chức các bảng thành các phân vùng bằng cách chia bảng thành các phần khác nhau dựa trên các khóa phân vùng.

Phân vùng rất hữu ích khi bảng có một hoặc nhiều Khóa phân vùng. Khóa phân vùng là thành phần cơ bản để xác định cách lưu trữ dữ liệu trong bảng.

Ví dụ: -

“Khách hàng có Một số dữ liệu thương mại điện tử thuộc về các hoạt động của Ấn Độ trong đó toàn bộ hoạt động của từng tiểu bang (38 tiểu bang) được đề cập. Nếu chúng tôi lấy cột trạng thái làm khóa phân vùng và thực hiện phân vùng trên toàn bộ dữ liệu Ấn Độ đó, chúng tôi có thể nhận được Số lượng phân vùng (38 phân vùng) bằng số lượng trạng thái (38) có ở Ấn Độ. Sao cho mỗi dữ liệu trạng thái có thể được xem riêng trong bảng phân vùng.

Đoạn mã mẫu cho phân vùng

  1. Tạo bảng tất cả các trạng thái
create table all states(state string, District string,Enrolments string)

row format delimited

fields terminated by ',';
  1. Đang tải dữ liệu vào bảng đã tạo tất cả các trạng thái
Load data local inpath '/home/hduser/Desktop/AllStates.csv' into table allstates;
  1. Tạo bảng phân vùng
create table state_part(District string,Enrolments string) PARTITIONED BY(state string);
  1. Đối với phân vùng, chúng ta phải đặt thuộc tính này
    set hive.exec.dynamic.partition.mode=nonstrict
  2. Đang tải dữ liệu vào bảng phân vùng
INSERT OVERWRITE TABLE state_part PARTITION(state)
SELECT district,enrolments,state from  allstates;
  1. Xử lý thực tế và hình thành các bảng phân vùng dựa trên trạng thái làm khóa phân vùng
  2. Sẽ có 38 đầu ra phân vùng trong bộ lưu trữ HDFS với tên tệp là tên trạng thái. Chúng tôi sẽ kiểm tra điều này trong bước này

Các ảnh chụp màn hình sau đây sẽ cho bạn thấy việc thực thi mã được đề cập ở trên

Phân vùng tổ ong

Phân vùng tổ ong

Phân vùng tổ ong

Phân vùng tổ ong

Từ đoạn mã trên, chúng ta thực hiện những việc sau

  1. Tạo bảng tất cả các bang với 3 tên cột như bang, quận và tuyển sinh
  2. Đang tải dữ liệu vào bảng tất cả các trạng thái
  3. Tạo bảng phân vùng với trạng thái là khóa phân vùng
  4. Ở bước này Đặt chế độ phân vùng là không nghiêm ngặt (Chế độ này sẽ kích hoạt chế độ phân vùng động)
  5. Đang tải dữ liệu vào phân vùng tablestate_part
  6. Xử lý thực tế và hình thành các bảng phân vùng dựa trên trạng thái làm khóa phân vùng
  7. Sẽ có 38 đầu ra phân vùng trong bộ lưu trữ HDFS với tên tệp là tên trạng thái. Chúng tôi sẽ kiểm tra điều này trong bước này. Trong bước này, chúng ta thấy 38 đầu ra phân vùng trong HDFS

Xô là gì?

Nhóm trong tổ ong được sử dụng để phân tách dữ liệu bảng tổ ong thành nhiều tệp hoặc thư mục. nó được sử dụng để truy vấn hiệu quả.

  • Dữ liệu hiện có trong các phân vùng đó có thể được chia thành các Nhóm
  • Việc phân chia được thực hiện dựa trên Hash của các cột cụ thể mà chúng tôi đã chọn trong bảng.
  • Nhóm sử dụng một số dạng thuật toán băm ở phía sau để đọc từng bản ghi và đặt nó vào nhóm
  • Trong Hive, chúng ta phải kích hoạt nhóm bằng cách sử dụng set.hive.enforce.bucketing=true;

Bước 1) Tạo Bucket như hình dưới đây.

Xô tổ ong

Từ ảnh chụp màn hình ở trên

  • Chúng tôi đang tạo sample_bucket với các tên cột như first_name, job_id, bộ phận, mức lương và quốc gia
  • Chúng tôi đang tạo 4 thùng ở đây.
  • Sau khi dữ liệu được tải tự động, hãy đặt dữ liệu vào 4 nhóm

Bước 2) Đang tải dữ liệu vào nhóm mẫu bảng

Giả sử rằng”Bảng nhân viên” đã được tạo trong hệ thống Hive. Trong bước này, chúng ta sẽ thấy việc tải Dữ liệu từ bảng nhân viên vào nhóm mẫu của bảng.

Trước khi chúng tôi bắt đầu di chuyển dữ liệu nhân viên vào các nhóm, hãy đảm bảo rằng dữ liệu đó bao gồm các tên cột như first_name, job_id, bộ phận, mức lương và quốc gia.

Ở đây chúng tôi đang tải dữ liệu vào nhóm mẫu từ bảng nhân viên.

Xô tổ ong

Bước 3)Hiển thị 4 nhóm đã tạo ở Bước 1

Xô tổ ong

Từ ảnh chụp màn hình ở trên, chúng ta có thể thấy dữ liệu từ bảng nhân viên được chuyển vào 4 nhóm được tạo ở bước 1.