Hive 関数: 組み込みおよび UDF [ユーザー定義関数] の例


関数は、テーブル列名のオペランドに対して数学、算術、論理、リレーショナルなどの演算を実行するという特定の目的のために構築されます。

組み込み関数

これらは、Hive ですでに利用可能な関数です。 まず、アプリケーションの要件を確認する必要があります。その後、これらの組み込み関数をアプリケーションで使用できるようになります。 これらの関数をアプリケーション内で直接呼び出すことができます。

構文と型については次のセクションで説明します。

HIVE の組み込み関数の種類

  • 収集関数
  • 日付関数
  • 数学関数
  • 条件関数
  • 文字列関数
  • その他機能

収集関数

これらの関数はコレクションに使用されます。コレクションとは、グループを意味します。ping 要素の数と、単一の要素または配列の要素を返すかどうかは、関数名で指定されている戻り値の型によって異なります。

戻り値の型 関数名 詳細説明
INT サイズ(地図) マップタイプのコンポーネント番号を取得して与えます。
INT サイズ(配列) フェッチして配列型の要素番号を与えます。
配列 Map_keys(マップ) 入力マップのキーを含む配列を取得して返します。 ここでは配列は順序付けされていません
配列 Map_values(マップ) 入力マップの値を含む配列を取得して返します。 ここでは配列は順序付けされていません
配列 並べ替え_配列(配列) 入力配列を配列と要素の昇順にソートして返します。

日付関数

これらは、日付操作と、ある型から別の型への日付型の変換を実行するために使用されます。

関数名 戻り値の型 詳細説明
Unix_Timestamp() BigInt 最新情報を取得します Unixの 秒単位のタイムスタンプ
To_date(文字列タイムスタンプ) string タイムスタンプ文字列の日付部分を取得して提供します。
年(文字列日付) INT 日付またはタイムスタンプ文字列の年の部分を取得して提供します。
四半期(日付/タイムスタンプ/文字列) INT 日付、タイムスタンプ、または 1 ~ 4 の範囲の文字列を取得して、年の四半期を返します。
月(文字列日付) INT 日付またはタイムスタンプ文字列の月の部分を与えます。
時(文字列日付) INT タイムスタンプの時間を取得して提供します
分(文字列日付) INT タイムスタンプの分を取得して返します
Date_sub(文字列開始日、整数日) string サブを取得して提供しますtrac開始日までの日数
現在の日付 date クエリ評価の開始時に現在の日付を取得して返します。
LAST _day(日付文字列) string 日付が属する月の最後の日を取得して返します
trunc(日付文字列、文字列形式) string 日付を取得して、形式で指定された単位に切り捨てられて提供されます。

この中でサポートされている形式:

月/月/MM、年/YYYY/YY。

数学関数

これらの関数は数学的な目的で使用されます。 Operaション。 UDF を作成する代わりに、Hive にはいくつかの数学関数が組み込まれています。

関数名 戻り値の型 詳細説明
ラウンド(ダブルエックス) ダブル X の丸められた BIGINT 値をフェッチして返します。
ラウンド(DOUBLE X, INT d) ダブル Xを取得して小数点以下d桁に四捨五入して返します。
ブラウン(ダブルエックス) ダブル HALF_EVEN 丸めモードを使用して、X の丸められた BIGINT 値をフェッチして返します。
フロア(ダブルエックス) BIGINT X 値以下の最大 BIGINT 値を取得して返します。
ceil(DOUBLE a)、ceiling(DOUBLE a) BIGINT X 値以上の最小 BIGINT 値をフェッチして返します。
rand()、rand(INTシード) ダブル 0から1まで均一に分布する乱数を取得して返します。

条件関数

これらの関数は条件値のチェックに使用されます。

関数名 戻り値の型 詳細説明
if(Boolean testCondition, T valueTrue, T valueFalseOrNull) T 次の場合にフェッチして値 True を返します。
テスト条件は true、
それ以外の場合は False または Null 値を返します。
ISNULL(X) ブーリアン X が NULL の場合は true を返し、それ以外の場合は false を返します。
ISNOTNULL(X) ブーリアン X が NULL でない場合は true を返し、そうでない場合は false を返します。

文字列関数

文字列操作および文字列演算では、これらの関数を呼び出すことができます。

関数名 戻り値の型 詳細説明
逆方向(文字列 X) string Xの反転文字列が得られます
rpad(文字列 str, int 長, 文字列パッド) string フェッチして str を返します。これは、 length(整数値) の長さまでパッドで右が埋められます。
rtrim(文字列 X) string X の末尾 (右側) からスペースをトリミングした結果の文字列を取得して返します。
例えば、、rtrim(' 結果 ') の結果は '結果'
スペース(INT n) string これは、n 個のスペースの文字列を取得して返します。
split(STRING str, STRING pat) 配列 pat の周囲で str を分割します (pat は正規表現です)。
Str_to_map(テキスト[, 区切り文字1, 区切り文字2]) 地図 XNUMX つの区切り文字を使用して、テキストをキーと値のペアに分割します。

UDF (ユーザー定義関数)

Hive では、ユーザーは特定のクライアント要件を満たす独自の関数を定義できます。 これらは、Hive では UDF として知られています。 で書かれたユーザー定義関数 Java 特定のモジュール用。

UDFの中には、アプリケーションフレームワークでのコードの再利用性のために特別に設計されたものもあります。開発者はこれらの関数を Java これらの UDF を Hive と統合します。

クエリの実行中、開発者はコードを直接使用でき、UDF はユーザー定義のタスクに従って出力を返します。 コーディングと実行の面で高いパフォーマンスを提供します。

たとえば、Hiveには文字列のステミングのための定義済み関数はありません。そのためには、stem UDFを次のように記述します。 JavaStem 機能が必要な場所では、Hive でこの Stem UDF を直接呼び出すことができます。

ここで語幹機能とは、語源から語を派生させることを意味します。語幹アルゴリズムは、「wishing」、「wished」、「wishes」という単語を語源「wish」に短縮するようなものです。このタイプの機能を実行するには、UDFを次のように記述します。 Java そしてそれを統合する ハイブ.

ユースケースに応じて、UDF を記述できます。UDF は、さまざまな数の入力値と出力値を受け入れ、生成します。

一般的なタイプの UDF は、単一の入力値を受け入れ、単一の出力値を生成します。 クエリで UDF が使用されている場合、UDF は結果データ セットの行ごとに XNUMX 回呼び出されます。

別の方法では、値のグループを入力として受け入れ、単一の出力値を返すこともできます。