Hàm Hive: Ví dụ tích hợp & UDF [Hàm do người dùng xác định]


Các hàm được xây dựng cho một mục đích cụ thể là thực hiện các phép toán như Toán học, số học, logic và quan hệ trên các toán hạng của tên cột trong bảng.

Chức năng tích hợp sẵn

Đây là những chức năng đã có sẵn trong Hive. Đầu tiên, chúng ta phải kiểm tra yêu cầu của ứng dụng và sau đó chúng ta có thể sử dụng các hàm tích hợp này trong ứng dụng của mình. Chúng ta có thể gọi các hàm này trực tiếp trong ứng dụng của mình.

Cú pháp và các kiểu được đề cập ở phần sau.

Các loại chức năng tích hợp trong HIVE

  • Chức năng thu thập
  • Chức năng ngày
  • Các hàm toán học
  • Hàm có điều kiện
  • Hàm chuỗi
  • Linh tinh. Chức năng

Chức năng thu thập

Các chức năng này được sử dụng cho các bộ sưu tập. Bộ sưu tập có nghĩa là việc nhóm các phần tử và trả về một hoặc một mảng phần tử tùy thuộc vào kiểu trả về được đề cập trong tên hàm.

Loại trả lại Tên chức năng Mô tả
INT kích thước(Bản đồ ) Nó sẽ tìm nạp và đưa ra số thành phần trong loại bản đồ
INT kích thước (Mảng ) Nó sẽ tìm nạp và đưa ra số phần tử trong kiểu mảng
Mảng Map_keys(Bản đồ ) Nó sẽ tìm nạp và đưa ra một mảng chứa các khóa của bản đồ đầu vào. Ở đây mảng không có thứ tự
Mảng Map_values(Bản đồ ) Nó sẽ tìm nạp và đưa ra một mảng chứa các giá trị của bản đồ đầu vào. Ở đây mảng không có thứ tự
Mảng Sắp xếp_mảng(Mảng ) sắp xếp mảng đầu vào theo thứ tự tăng dần của mảng và các phần tử rồi trả về nó

Chức năng ngày

Chúng được sử dụng để thực hiện Thao tác ngày và chuyển đổi loại Ngày từ loại này sang loại khác:

Tên chức năng Loại trả lại Mô tả
Unix_Timestamp() BigInt Chúng ta sẽ có được hiện tại Unix dấu thời gian tính bằng giây
To_date(dấu thời gian chuỗi) chuỗi Nó sẽ tìm nạp và cung cấp phần ngày của chuỗi dấu thời gian:
năm(chuỗi ngày) INT Nó sẽ tìm nạp và cung cấp phần năm của ngày hoặc chuỗi dấu thời gian
quý(ngày/dấu thời gian/chuỗi) INT Nó sẽ tìm nạp và đưa ra phần tư trong năm cho ngày, dấu thời gian hoặc chuỗi trong phạm vi từ 1 đến 4
tháng (chuỗi ngày) INT Nó sẽ cung cấp phần tháng của ngày hoặc chuỗi dấu thời gian
giờ(chuỗi ngày) INT Nó sẽ tìm nạp và đưa ra giờ của dấu thời gian
phút(chuỗi ngày) INT Nó sẽ tìm nạp và đưa ra phút của dấu thời gian
Date_sub(ngày bắt đầu chuỗi, int ngày) chuỗi Nó sẽ tìm nạp và đưa ra phép trừ số ngày cho ngày bắt đầu
Ngay hiện tại ngày Nó sẽ tìm nạp và đưa ra ngày hiện tại khi bắt đầu đánh giá truy vấn
CUỐI CÙNG _ngày(chuỗi ngày) chuỗi Nó sẽ tìm nạp và đưa ra ngày cuối cùng của tháng mà ngày đó thuộc về
trunc(ngày chuỗi, định dạng chuỗi) chuỗi Nó sẽ tìm nạp và đưa ra ngày được cắt ngắn theo đơn vị được chỉ định theo định dạng.

Các định dạng được hỗ trợ trong này:

THÁNG/THÁNG/MM, NĂM/YYYY/YY.

Các hàm toán học

Các hàm này được sử dụng cho Toán học Operaý kiến. Thay vì tạoUDF, chúng tôi có một số hàm toán học sẵn có trong Hive.

Tên chức năng Loại trả lại Mô tả
tròn (ĐÔI X) GẤP ĐÔI Nó sẽ tìm nạp và trả về giá trị BIGINT được làm tròn của X
vòng(DOUBLE X, INT d) GẤP ĐÔI Nó sẽ tìm nạp và trả về X được làm tròn đến d chữ số thập phân
tròn (DOUBLE X) GẤP ĐÔI Nó sẽ tìm nạp và trả về giá trị BIGINT được làm tròn của X bằng chế độ làm tròn HALF_EVEN
sàn nhà (DOUBLE X) LỚN Nó sẽ tìm nạp và trả về giá trị BIGINT tối đa bằng hoặc nhỏ hơn giá trị X
trần nhà(ĐÔI a), trần nhà(ĐÔI a) LỚN Nó sẽ tìm nạp và trả về giá trị BIGINT tối thiểu bằng hoặc lớn hơn giá trị X
rand(), rand(hạt giống INT) GẤP ĐÔI Nó sẽ tìm nạp và trả về một số ngẫu nhiên được phân bố đồng đều từ 0 đến 1

Hàm có điều kiện

Các hàm này được sử dụng để kiểm tra các giá trị có điều kiện.

Tên chức năng Loại trả lại Mô tả
if(Điều kiện kiểm tra Boolean, T valueTrue, T valueFalseOrNull) T Nó sẽ tìm nạp và cho giá trị True khi
Điều kiện kiểm tra là đúng,
trả về giá trị False hoặc Null nếu không.
KHÔNG CÓ( X) Boolean Nó sẽ lấy và trả về true nếu X là NULL và false nếu không.
KHÔNG CÓ(X ) Boolean Nó sẽ lấy và trả về true nếu X không phải là NULL và false nếu không phải.

Hàm chuỗi

Thao tác chuỗi và thao tác chuỗi các hàm này có thể được gọi.

Tên chức năng Loại trả lại Mô tả
đảo ngược (chuỗi X) chuỗi Nó sẽ cho chuỗi đảo ngược của X
rpad(chuỗi str, độ dài int, pad chuỗi) chuỗi Nó sẽ tìm nạp và đưa ra str, được đệm bên phải bằng phần đệm theo chiều dài (giá trị nguyên)
rtrim(chuỗi X) chuỗi Nó sẽ tìm nạp và trả về chuỗi thu được từ việc cắt bớt khoảng trắng ở cuối (phía bên phải) của X
Ví dụ, rtrim(' results ') trả về ' kết quả'
dấu cách(INT n) chuỗi Nó sẽ tìm nạp và đưa ra một chuỗi n khoảng trắng.
chia(STRING str, STRING vỗ) mảng Tách str xung quanh pat (pat là một biểu thức chính quy).
Str_to_map(văn bản[, dấu phân cách1, dấu phân cách2]) bản đồ Nó sẽ chia văn bản thành các cặp khóa-giá trị bằng hai dấu phân cách.

UDF (Hàm do người dùng xác định)

Trong Hive, người dùng có thể xác định các chức năng riêng để đáp ứng các yêu cầu nhất định của khách hàng. Chúng được gọi là UDF trong Hive. Các hàm do người dùng xác định được viết bằng Java cho các mô-đun cụ thể.

Một số UDF được thiết kế đặc biệt cho khả năng sử dụng lại mã trong các khung ứng dụng. Nhà phát triển sẽ phát triển các chức năng này trong Java và tích hợp các UDF đó với Hive.

Trong quá trình thực thi Truy vấn, nhà phát triển có thể trực tiếp sử dụng mã và UDF sẽ trả về kết quả đầu ra theo các tác vụ do người dùng xác định. Nó sẽ cung cấp hiệu suất cao về mặt mã hóa và thực thi.

Ví dụ: đối với việc tạo chuỗi, chúng tôi không có bất kỳ hàm nào được xác định trước trong Hive. Đối với điều này, chúng ta có thể viết UDF gốc trong Java. Bất cứ nơi nào chúng ta cần chức năng Stem, chúng ta có thể trực tiếp gọi Stem UDF này trong Hive.

Chức năng gốc ở đây có nghĩa là lấy từ từ từ gốc của nó. Nó giống như thuật toán bắt nguồn làm giảm các từ “mong muốn”, “mong muốn” và “mong muốn” thành từ gốc “mong muốn”. Để thực hiện loại chức năng này, chúng ta có thể viết UDF bằng Java và tích hợp nó với Tổ ong.

Tùy thuộc vào trường hợp sử dụng, UDF có thể được viết. Nó sẽ chấp nhận và tạo ra số lượng giá trị đầu vào và đầu ra khác nhau.

Loại UDF chung sẽ chấp nhận một giá trị đầu vào duy nhất và tạo ra một giá trị đầu ra duy nhất. Nếu UDF được sử dụng trong truy vấn thì UDF sẽ được gọi một lần cho mỗi hàng trong tập dữ liệu kết quả.

Nói cách khác, nó có thể chấp nhận một nhóm giá trị làm đầu vào và trả về một giá trị đầu ra duy nhất.