メインコンテンツまでスキップ
バージョン: Latest-3.4

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.confkrb5.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.typekudu に設定された 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.typehive に設定された 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 テーブルのクエリ

  1. Kudu クラスター内のデータベースを表示するには、SHOW DATABASES を使用します。

    SHOW DATABASES FROM <catalog_name>;
  2. 現在のセッションで目的の catalog に切り替えるには、SET CATALOG を使用します。

    SET CATALOG <catalog_name>;

    次に、現在のセッションでアクティブなデータベースを指定するには、USE を使用します。

    USE <db_name>;

    または、目的の catalog でアクティブなデータベースを直接指定するには、USE を使用します。

    USE <catalog_name>.<db_name>;
  3. 指定されたデータベース内の目的のテーブルをクエリするには、SELECT を使用します。

    SELECT count(*) FROM <table_name> LIMIT 10;

Kudu からのデータのロード

OLAP テーブル olap_tbl があると仮定して、次のようにデータを変換してロードできます。

INSERT INTO default_catalog.olap_db.olap_tbl SELECT * FROM kudu_table;