Phân vùng Hive & Nhóm có ví dụ

Mục lục:

Anonim

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ì?

Hive Partitions 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 các 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 hữu ích khi bảng có một hoặc nhiều khóa Phân vùng. Các khóa phân vùng là các yếu tố cơ bản để xác định cách dữ liệu được lưu trữ 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ề hoạt động của Ấn Độ, trong đó toàn bộ hoạt động của từng bang (38 bang) được đề cập đến. 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ể để lấy Số lượng phân vùng (38 phân vùng) bằng với số tiểu bang (38) hiện có ở Ấn Độ. Như vậy, dữ liệu từng tiểu bang có thể được xem riêng biệt trong các 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 delimitedfields 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ộ nhớ 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 đoạn mã được đề cập ở trên

Từ đoạn mã trên, chúng tôi thực hiện những điều sau

  1. Tạo bảng tất cả các tiểu bang với 3 tên cột như tiểu bang, quận và ghi danh
  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. Trong 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 tôi thấy 38 đầu ra phân vùng trong HDFS

Xô là gì?

Buckets in hive được sử dụng để tách dữ liệu bảng hive 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 có trong các phân vùng đó có thể được chia nhỏ hơn nữa 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 Hashing ở cuối để đọc từng bản ghi và đặt nó vào nhóm
  • Trong Hive, chúng ta phải bậ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.

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, phòng ban, tiền lương và quốc gia
  • Chúng tôi đang tạo 4 nhóm ở đó.
  • Sau khi dữ liệu được tải tự động, hãy đặt dữ liệu vào 4 nhóm

Bước 2) 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 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, phòng ban, tiền 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.

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

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