Skip to main content
Version: 26.2 Preview

Fluss catalog

A Fluss catalog is an external catalog that enables you to query Apache Fluss tables without loading data into StarRocks.

Usage notes​

In the current version, Fluss catalogs support querying only Fluss tables that have DataLake enabled and use Apache Paimon as the lake storage.

Create a Fluss catalog​

Syntax​

CREATE EXTERNAL CATALOG <catalog_name>
[COMMENT <comment>]
PROPERTIES
(
"type" = "fluss",
"bootstrap.servers" = "<fluss_bootstrap_server>",
"fluss.option.<fluss_client_option>" = "<value>",
"table.datalake.paimon.<paimon_option>" = "<value>"
);

Parameters​

catalog_name​

The name of the Fluss catalog. The naming conventions are as follows:

  • The name can contain letters, digits (0-9), and underscores (_). It must start with a letter.
  • The name is case-sensitive and cannot exceed 1023 characters in length.

comment​

The description of the Fluss catalog. This parameter is optional.

PROPERTIES​

ParameterRequiredDescription
typeYesThe data source type. Set the value to fluss.
bootstrap.serversYesThe address that StarRocks uses to connect to Fluss. Example: fluss-host:9123.
fluss.option.<fluss_client_option>NoA Fluss client option. Remove the fluss.option. prefix to obtain the corresponding Fluss client configuration key. For example, fluss.option.client.security.protocol sets client.security.protocol.
table.datalake.paimon.<paimon_option>NoA Paimon option used by StarRocks to access the lake storage of a Fluss table.

Example​

The following example creates a Fluss catalog that uses Paimon filesystem metastore and S3 storage:

CREATE EXTERNAL CATALOG fluss_catalog
PROPERTIES
(
"type" = "fluss",
"bootstrap.servers" = "fluss-host:9123",

-- Optional. Configure these properties when Fluss client
-- authentication is enabled.
"fluss.option.client.security.protocol" = "SASL",
"fluss.option.client.security.sasl.mechanism" = "PLAIN",
"fluss.option.client.security.sasl.username" = "<fluss_user>",
"fluss.option.client.security.sasl.password" = "<fluss_password>",

-- Paimon lake storage.
"table.datalake.paimon.metastore" = "filesystem",
"table.datalake.paimon.warehouse" = "s3://bucket/path",
"table.datalake.paimon.s3.endpoint" = "https://s3.<region>.amazonaws.com",
"table.datalake.paimon.s3.access-key" = "<access_key>",
"table.datalake.paimon.s3.secret-key" = "<secret_key>"

-- To use Alibaba Cloud OSS, replace the S3 warehouse and properties
-- above with the following properties:
-- "table.datalake.paimon.warehouse" = "oss://<bucket>/<path>",
-- "table.datalake.paimon.fs.oss.endpoint" = "oss-cn-hangzhou.aliyuncs.com",
-- "table.datalake.paimon.fs.oss.accessKeyId" = "<access_key_id>",
-- "table.datalake.paimon.fs.oss.accessKeySecret" = "<access_key_secret>"
);

View Fluss catalogs​

You can use SHOW CATALOGS to query all catalogs in the current StarRocks cluster:

SHOW CATALOGS;

You can also use SHOW CREATE CATALOG to query the creation statement of an external catalog:

SHOW CREATE CATALOG fluss_catalog;

Drop a Fluss catalog​

You can use DROP CATALOG to drop an external catalog:

DROP CATALOG fluss_catalog;

View the schema of a Fluss table​

You can use one of the following syntaxes to view the schema of a Fluss table:

  • View schema

    DESC[RIBE] <catalog_name>.<database_name>.<table_name>;
  • View schema and location from the CREATE statement

    SHOW CREATE TABLE <catalog_name>.<database_name>.<table_name>;

Query a Fluss table​

  1. Use SHOW DATABASES to view the databases in Fluss:

    SHOW DATABASES FROM <catalog_name>;
  2. Use SET CATALOG to switch to the Fluss catalog in the current session:

    SET CATALOG <catalog_name>;

    Then, use USE to specify the active database:

    USE <db_name>;

    Or, directly specify the active database in the Fluss catalog:

    USE <catalog_name>.<db_name>;
  3. Use SELECT to query a Fluss table:

    -- Union read: historical data in the lake and real-time data in Fluss.
    SELECT * FROM <table_name>;

    -- Lake read: historical data in the lake only.
    SELECT * FROM <table_name>$lake;

    -- Real-time read: real-time data in Fluss only.
    SELECT * FROM <table_name>$rt;