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


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

組み込み関数

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

構文と型については以下で説明します。wing のセクションから無料でダウンロードできます。

HIVE の組み込み関数の種類

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

収集関数

これらの関数はコレクションに使用されます。 コレクションとは要素のグループ化を意味し、関数名で指定された戻り値の型に応じて単一または配列の要素を返します。

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

日付関数

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

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

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

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

数学関数

これらの関数は数学的演算に使用されます。 UDF を作成する代わりに、Hive にはいくつかの数学関数が組み込まれています。

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

条件関数

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

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

文字列関数

文字列操作と文字列操作のこれらの関数を呼び出すことができます。

関数名 戻り値の型 Description
逆方向(文字列 X) 文字列 Xの反転文字列が得られます
rpad(文字列 str, int 長, 文字列パッド) 文字列 フェッチして str を返します。これは、 length(整数値) の長さまでパッドで右が埋められます。
rtrim(文字列 X) 文字列 X の末尾 (右側) からスペースをトリミングした結果の文字列を取得して返します。
例えば、、rtrim(' 結果 ') の結果は '結果'
スペース(INT n) 文字列 これは、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 には事前定義された関数がありません。 このために、Java でステム UDF を作成できます。 Stem 機能が必要な場合は常に、Hive でこの Stem UDF を直接呼び出すことができます。

ここでのステ​​ム機能とは、ルート単語から単語を派生させることを意味します。 これは、ステミング アルゴリズムが「wishing」、「wished」、「wish」という単語をルート単語の「wish」に還元するようなものです。 このタイプの機能を実行するには、Java で UDF を作成し、それを ハイブ.

ユースケースに応じて、UDF を作成できます。 異なる数の入力値と出力値を受け入れて生成します。

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

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