Hive Bitmap UDF
Hive Bitmap UDF は、Hive で直接使用できる UDF を提供します。これらは、Bitmap データを生成し、Bitmap に関連する計算を行うために使用できます。
Hive Bitmap UDF で定義された Bitmap フォーマットは StarRocks のフォーマットと一致しており、Bitmap データを StarRocks にロードしたり、StarRocks から Hive にアンロードする際に直接使用できます。
適用シナリオ:
- 生データの量が多く、これらのデータを直接 StarRocks にロードして計算すると、StarRocks クラスターに大きな負荷がかかります。望ましい解決策は、Hive で Bitmap データを生成し、それを StarRocks にロードすることです。
- StarRocks で生成さ れた Bitmap データを他のシステムで使用するために Hive にエクスポートすること。
サポートされているソースおよびターゲットデータ型:
- v3.1 以降では、String、Base64、および Binary のデータのロードとアンロードをサポートしています。
- v2.5 および v3.0 では、String と Base64 データのロードとアンロードのみをサポートしています。
生成可能な Hive Bitmap UDF
-
com.starrocks.hive.udf.UDAFBitmapAgg
複数行の非 null 値を 1 行の Bitmap 値に結合します。これは StarRocks の組み込み集計関数 bitmap_agg と同等です。
-
com.starrocks.hive.udf.UDAFBitmapUnion
一連のビットマップの和集合を計算します。これは StarRocks の組み込み集計関数 bitmap_union と同等です。
-
com.starrocks.hive.udf.UDFBase64ToBitmap
base64 エンコードされた文字列をビットマップに変換します。これは StarRocks の組み込み関数 base64_to_bitmap と同等です。
-
com.starrocks.hive.udf.UDFBitmapAnd
2 つのビットマップの交差を計算します。これは StarRocks の組み込み関数 bitmap_and と同等です。
-
com.starrocks.hive.udf.UDFBitmapCount
ビットマップ内の値の数をカウントします。これは StarRocks の組み込み関数 bitmap_count と同等です。
-
com.starrocks.hive.udf.UDFBitmapFromString
カンマ区切りの文字列をビットマップに変換します。これは StarRocks の組み込み関数 bitmap_from_string と同等です。
-
com.starrocks.hive.udf.UDFBitmapOr
2 つのビットマップの和集合を計算します。これは StarRocks の組み込み関数 bitmap_or と同等です。
-
com.starrocks.hive.udf.UDFBitmapToBase64
Bitmap を Base64 文字列に変換します。これは StarRocks の組み込み関数 bitmap_to_base64 と同等です。
-
com.starrocks.hive.udf.UDFBitmapToString
ビットマップをカンマ区切りの文字列に変換します。これは StarRocks の組み込み関数 bitmap_to_string と同等です。
-
com.starrocks.hive.udf.UDFBitmapXor
2 つのビットマップのユニークな要素の集合を計算します。これは StarRocks の組み込み関数 bitmap_xor と同等です。
使用方法
-
FE で Hive UDF をコンパイルして生成します。
./build.sh --hive-udffe/hive-udf/ディレクトリに JAR パッケージhive-udf-1.0.0.jarが生成されます。 -
JAR パッケージを HDFS にアップロードします。
hadoop fs -put -f ./hive-udf-1.0.0.jar hdfs://<hdfs_ip>:<hdfs_port>/hive-udf-1.0.0.jar -
JAR パッケージを Hive にロード します。
hive> add jar hdfs://<hdfs_ip>:<hdfs_port>/hive-udf-1.0.0.jar; -
UDF 関数をロードします。
hive> create temporary function bitmap_agg as 'com.starrocks.hive.udf.UDAFBitmapAgg';
hive> create temporary function bitmap_union as 'com.starrocks.hive.udf.UDAFBitmapUnion';
hive> create temporary function base64_to_bitmap as 'com.starrocks.hive.udf.UDFBase64ToBitmap';
hive> create temporary function bitmap_and as 'com.starrocks.hive.udf.UDFBitmapAnd';
hive> create temporary function bitmap_count as 'com.starrocks.hive.udf.UDFBitmapCount';
hive> create temporary function bitmap_from_string as 'com.starrocks.hive.udf.UDFBitmapFromString';
hive> create temporary function bitmap_or as 'com.starrocks.hive.udf.UDFBitmapOr';
hive> create temporary function bitmap_to_base64 as 'com.starrocks.hive.udf.UDFBitmapToBase64';
hive> create temporary function bitmap_to_string as 'com.starrocks.hive.udf.UDFBitmapToString';
hive> create temporary function bitmap_xor as 'com.starrocks.hive.udf.UDFBitmapXor';