Chức năng Hive: Tích hợp & UDF (Chức năng do người dùng xác định)

Mục lục:

Anonim

Các hàm được xây dựng cho một mục đích cụ thể để 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 bảng.

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

Đây là những chức năng đã có trong Hive. Đầu tiên, chúng ta phải kiểm tra yêu cầu ứng dụng và sau đó chúng ta có thể sử dụng các chức năng được tích hợp sẵn này trong các ứ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 loại được đề cập trong phần sau.

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

  • Chức năng Bộ sưu tập
  • Chức năng ngày
  • Các hàm toán học
  • Các chức năng có điều kiện
  • Hàm chuỗi
  • Khác. Chức năng

Chức năng Bộ sưu tập:

Các hàm này được sử dụng cho các bộ sưu tập. Tập hợp có nghĩa là nhóm các phần tử và trả về một hoặc một mảng các phần tử phụ 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 Sự miêu tả
INT kích thước (Bản đồ ) Nó sẽ tìm nạp và cung cấp số thành phần trong loại bản đồ
INT kích thước (Mảng ) Nó sẽ tìm nạp và cung cấp 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 là 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 là mảng không có thứ tự
Mảng Sort_array (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ề

Chức năng ngày:

Chúng được sử dụng để thực hiện các 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 Sự miêu tả
Unix_Timestamp () BigInt Chúng tôi sẽ nhận được dấu thời gian Unix hiện tại trong vài 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 cho năm một phần 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à cung cấp một phần tư của năm cho một 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 cho tháng một phần 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 (chuỗi ngày bắt đầu, int ngày) chuỗi Nó sẽ tìm nạp và cung cấp 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
LAST _day (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à cung cấp ngày được cắt ngắn cho đơn vị được định dạng chỉ định. Các định dạng được hỗ trợ trong này: MONTH / MON / MM, YEAR / YYYY / YY.

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

Các hàm này được sử dụng cho các phép toán. Thay vì tạo cácUDF, chúng tôi có một số hàm toán học có sẵn trong Hive.

Tên chức năng Loại trả lại Sự miêu tả
vòng (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
vòng (DOUBLE X, INT d) GẤP ĐÔI Nó sẽ tìm nạp và trả về X được làm tròn thành d chữ số thập phân
bround (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 cách sử dụng chế độ làm tròn HALF_EVEN
tầng (DOUBLE X) BIGINT 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à (DOUBLE a), trần nhà (DOUBLE a) BIGINT 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 (INT seed) GẤP ĐÔI Nó sẽ tìm nạp và trả về một số ngẫu nhiên được phân phối đồng nhất từ ​​0 đến 1

Các chức năng có điều kiện:

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

Tên chức năng Loại trả lại Sự miêu tả
if (Boolean testCondition, 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à true, cho giá trị False hoặc Null nếu ngược lại.
ISNULL (X) Boolean Nó sẽ tìm nạp và đưa ra giá trị true nếu X là NULL và ngược lại là false.
ISNOTNULL (X) Boolean Nó sẽ tìm nạp và đưa ra giá trị true nếu X không phải là NULL và ngược lại là false.

Hàm chuỗi:

Các thao tác chuỗi và các phép toán chuỗi các hàm này có thể được gọi.

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

UDF (Chức năng 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 để sử dụng lại mã trong các khuôn khổ ứ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à các UDF sẽ trả về kết quả đầu ra theo các tác vụ người dùng xác định. Nó sẽ cung cấp hiệu suất cao về mã hóa và thực thi.

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

Ở đây chức năng gốc có nghĩa là dẫn xuất các từ từ các từ gốc của nó. Nó giống như thuật toán gốc 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 chức năng kiểu này, chúng ta có thể viết UDF trong java và tích hợp với Hive.

Tùy thuộc vào các trường hợp sử dụng mà UDF có thể được viết, nó sẽ chấp nhận và tạo ra các 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ả.

Theo 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ề giá trị đầu ra duy nhất.