Kudu catalog
StarRocks は v3.3 以降で Kudu catalog をサポートしています。
Kudu catalog は、Apache Kudu からデータを取り込まずにクエリを実行できる外部カタログの一種です。
また、Kudu catalog を使用して INSERT INTO を利用することで、Kudu からデータを直接変換してロードすることができます。
Kudu クラスターで SQL ワークロードを成功させるためには、StarRocks クラスターが以下の重要なコンポーネントと統合する必要があります。
- Kudu ファイルシステムまたは Hive メタストアのようなメタストア
使用上の注意
Kudu catalog はデータのクエリにのみ使用できます。Kudu catalog を使用して、Kudu クラスター内のデータを削除、削除、または挿入することはできません。
統合準備
Kudu catalog を作成する前に、StarRocks クラスターが Kudu クラスターのストレージシステムとメタストアと統合できることを確認してください。
NOTE
クエリを送信した際に不明なホストを示すエラーが返された場合は、KUDU クラスターのノードのホスト名と IP アドレスのマッピングを /etc/hosts パスに追加する必要があります。
Kerberos 認証
KUDU クラスターまたは Hive メタストアで Kerberos 認証が有効になっている場合、StarRocks クラスターを次のように設定します。
- 各 FE と各 BE で
kinit -kt keytab_path principal
コマンドを実行して、Key Distribution Center (KDC) から Ticket Granting Ticket (TGT) を取得します。このコマンドを実行するには、KUDU クラスターと Hive メタストアにアクセスする権限が必要です。このコマンドを使用して KDC にアクセスすることは時間に敏感です。そのため、cron を使用してこのコマンドを定期的に実行する必要があります。 - 各 FE の $FE_HOME/conf/fe.conf ファイルと各 BE の $BE_HOME/conf/be.conf ファイルに
JAVA_OPTS="-Djava.security.krb5.conf=/etc/krb5.conf"
を追加します。この例では、/etc/krb5.conf
は krb5.conf ファイルの保存パスです。必要に応じてパスを変更できます。
Kudu catalog の作成
構文
CREATE EXTERNAL CATALOG <catalog_name>
[COMMENT <comment>]
PROPERTIES
(
"type" = "kudu",
CatalogParams
)
パラメータ
catalog_name
Kudu catalog の名前です。命名規則は以下の通りです。
- 名前には文字、数字 (0-9)、およびアンダースコア (_) を含めることができます。文字で始まる必要があります。
- 名前は大文字と小文字を区別し、1023 文字を超えることはできません。
comment
Kudu catalog の説明です。このパラメータはオプションです。
type
データソースのタイプです。値を kudu
に設定します。
CatalogParams
StarRocks が Kudu クラスターのメタデータにアクセスする方法に関する一連のパラメータです。
次の表は、CatalogParams
で設定する必要があるパラメータを説明しています。
パラメータ | 必須 | 説明 |
---|---|---|
kudu.catalog.type | はい | Kudu クラスターで使用するメタストアのタイプです。このパラメータを kudu または hive に設定します。 |
kudu.master | いいえ | Kudu Master のアドレスを指定します。デフォルトは localhost:7051 です。 |
hive.metastore.uris | いいえ | Hive メタストアの URI です。形式: thrift://<metastore_IP_address>:<metastore_port> 。Hive メタストアで高可用性 (HA) が有効になっている場合、複数のメタストア URI を指定し、カンマ (, ) で区切ることができます。例: "thrift://<metastore_IP_address_1>:<metastore_port_1>,thrift://<metastore_IP_address_2>:<metastore_port_2>,thrift://<metastore_IP_address_3>:<metastore_port_3>" 。 |
kudu.schema-emulation.enabled | いいえ | schema エミュレーションを有効または無効にするオプションです。デフォルトではオフ (false) になっており、すべてのテーブルは default schema に属します。 |
kudu.schema-emulation.prefix | いいえ | kudu.schema-emulation.enabled = true の場合にのみ設定する schema エミュレーションのプレフィックスです。デフォルトのプレフィックスは空文字列です: 。 |
NOTE
Hive メタストアを使用する場合、Kudu データをクエリする前に、Hive メタストアノードのホスト名と IP アドレスのマッピングを
/etc/hosts
パスに追加する必要があります。そうしないと、クエリを開始する際に StarRocks が Hive メタストアにアクセスできない可能性があります。
例
-
次の例は、Kudu クラスターからデータをクエリするために、メタストアタイプ
kudu.catalog.type
がkudu
に設定されたkudu_catalog
という名前の Kudu catalog を作成します。CREATE EXTERNAL CATALOG kudu_catalog
PROPERTIES
(
"type" = "kudu",
"kudu.master" = "localhost:7051",
"kudu.catalog.type" = "kudu",
"kudu.schema-emulation.enabled" = "true",
"kudu.schema-emulation.prefix" = "impala::"
); -
次の例は、Kudu クラスターからデータをクエリするために、メタストアタイプ
kudu.catalog.type
がhive
に設定されたkudu_catalog
という名前の Kudu catalog を作成します。CREATE EXTERNAL CATALOG kudu_catalog
PROPERTIES
(
"type" = "kudu",
"kudu.master" = "localhost:7051",
"kudu.catalog.type" = "hive",
"hive.metastore.uris" = "thrift://xx.xx.xx.xx:9083",
"kudu.schema-emulation.enabled" = "true",
"kudu.schema-emulation.prefix" = "impala::"
);
Kudu catalog の表示
現在の StarRocks クラスター内のすべての catalog をクエリするには、SHOW CATALOGS を使用します。
SHOW CATALOGS;
外部 catalog の作成ステートメントをクエリするには、SHOW CREATE CATALOG を使用します。次の例では、kudu_catalog
という名前の Kudu catalog の作成ステートメントをクエリします。
SHOW CREATE CATALOG kudu_catalog;
Kudu catalog の削除
外部 catalog を削除するには、DROP CATALOG を使用します。
次の例では、kudu_catalog
という名前の Kudu catalog を削除します。
DROP Catalog kudu_catalog;
Kudu テーブルのスキーマの表示
Kudu テーブルのスキーマを表示するには、次のいずれかの構文を使用します。
-
スキーマの表示
DESC[RIBE] <catalog_name>.<database_name>.<table_name>;
-
CREATE ステートメントからスキーマと場所の表示
SHOW CREATE TABLE <catalog_name>.<database_name>.<table_name>;
Kudu テーブルのクエリ
-
Kudu クラスター内のデータベースを表示するには、SHOW DATABASES を使用します。
SHOW DATABASES FROM <catalog_name>;
-
現在のセッションで目的の catalog に切り替えるには、SET CATALOG を使用します。
SET CATALOG <catalog_name>;
次に、現在のセッションでアクティブなデータベースを指定するには、USE を使用します。
USE <db_name>;
または、目的の catalog でアクティブなデータベースを直接指定するには、USE を使用します。
USE <catalog_name>.<db_name>;
-
指定されたデータベース内の目的のテーブルをクエリするには、SELECT を使用します。
SELECT count(*) FROM <table_name> LIMIT 10;
Kudu からのデータのロード
OLAP テーブル olap_tbl
があると仮定して、次のようにデータを変換してロードできます。
INSERT INTO default_catalog.olap_db.olap_tbl SELECT * FROM kudu_table;