このトピックでは、Lindorm Distributed Processing System (LDPS) の OLAP または ETL リソースグループを介して SQL 文を実行してデータを読み書きする方法について説明します。
前提条件
Lindorm インスタンスで LindormTable がアクティブ化されていること。詳細については、「インスタンスの作成」をご参照ください。
Lindorm インスタンスで LDPS がアクティブ化されていること。詳細については、「LDPS をアクティブ化し、構成を変更する」をご参照ください。
クライアントの IP アドレスが Lindorm インスタンスのホワイトリストに追加されていること。詳細については、「ホワイトリストを構成する」をご参照ください。
OLAP リソースグループを使用する
LDPS の OLAP リソースグループを使用すると、クエリおよび分析シナリオで MySQL プロトコルを使用できるため、低レイテンシの応答で高並列パフォーマンスを実現できます。 OLAP リソースグループがアクティブ化されると、永続的な計算リソースが割り当てられ、迅速なクエリ応答が保証されます。
手順 1:OLAP リソースグループを作成する
Lindorm コンソール にログインします。ページの左上隅で、インスタンスがデプロイされているリージョンを選択します。インスタンス一覧 ページで、管理するインスタンスの ID をクリックするか、インスタンスに対応する [アクション] 列の [管理] をクリックします。
[インスタンスの詳細] ページの [構成] セクションで、[コンピューティングエンジン] に対応する [アクション] 列の [リソースグループ] をクリックします。

表示される [リソースグループの詳細] ダイアログボックスで、[リソースグループの作成] をクリックし、次のパラメーターを構成します。
パラメーター
説明
リソースグルーブタイプ
OLAP を選択します。
リソースグループ名
作成するリソースグループの名前。名前には小文字と数字のみを含めることができ、長さは 63 文字を超えることはできません。例:
cg0。ノードの仕様
ノードの仕様を選択します。
ジョブ内のワーカーノード
有効な値:4 ~ 1024。デフォルト値:
4。[OK] をクリックして、リソースグループを作成します。
説明作成プロセスには約 20 分かかります。
[リソースグループの詳細] ダイアログボックスで、作成されたリソースグループの ステータスと説明 が 実行中 に設定されている場合、OLAP リソースグループ名にポインターを移動すると、OLAP リソースグループの Virtual Private Cloud (VPC) エンドポイント (例:
jdbc:mysql://ld-bp1dv48fk0yg0****-olap-proxy-ldps.lindorm.aliyuncs.com:9030) を取得できます。MySQL クライアントを構成 した後、VPC 内部エンドポイントを介して指定された OLAP リソースグループへの JDBC 接続を確立し、LindormTable のユーザー名とパスワードでログインします。MySQL プロトコルを介して OLAP リソースグループに接続し、SQL クエリを実行できます。
mysql -hld-bp1dv48fk0yg0****-olap-proxy-ldps.lindorm.aliyuncs.com -P9030 -uroot -p
手順 2:データにアクセスする
列指向データにアクセスする
列指向データは、Iceberg エコシステムと互換性のある列指向ストレージデータレイクです。データは Lindorm インスタンスのファイルエンジンに保存され、OLAP リソースグループを介して書き込みおよびクエリを実行できます。
列指向データは、lindorm_columnar という名前のカタログ (異なるデータソースを識別するために使用) に保存されます。OLAP リソースグループが MySQL プロトコルを介して接続されると、デフォルトで列指向データカタログにアクセスします。SET CATALOG lindorm_columnar; 文を実行して、明示的に列指向データカタログに切り替えることもできます。
データベースを作成して使用します。
-- データベースを作成します。 CREATE DATABASE olapdemo; -- データベースを使用します。 USE olapdemo;データテーブルを作成し、データを書き込みます。
-- テーブルを作成します。 CREATE TABLE test (id INT, name STRING) ENGINE = iceberg; -- テーブルにデータを挿入します。 INSERT INTO test VALUES (0, 'Jay'), (1, 'Edison');データをクエリします。
例 1:
SELECT id, name FROM test WHERE id != 0;出力:
+------+--------+ | id | name | +------+--------+ | 1 | Edison | +------+--------+例 2:
SELECT count(distinct name) FROM test;出力:
+----------------------+ | count(DISTINCT name) | +----------------------+ | 2 | +----------------------+例 3:
SELECT * FROM (SELECT id, name FROM test WHERE id != 0) t0 JOIN (SELECT id, name FROM test WHERE id != 2) t1 ON t0.id=t1.id;+------+--------+------+--------+ | id | name | id | name | +------+--------+------+--------+ | 1 | Edison | 1 | Edison | +------+--------+------+--------+
テーブルを削除します。
DROP TABLE test;データベースを削除します。
DROP DATABASE olapdemo;
ワイドテーブルデータにアクセスする
OLAP リソースグループを使用すると、LindormTable 内のデータを直接クエリし、その計算能力を活用して複雑なクエリ計算を効率的に実行できます。OLAP リソースグループは、ワイドテーブルの作成またはワイドテーブルへのデータの書き込みをサポートしていません。データクエリ操作のみをサポートしています。
LindormTable データは、lindorm_table という名前のカタログに保存されます。LindormTable データにアクセスするには、SET CATALOG lindorm_table; 文を明示的に実行して、lindorm_table カタログに切り替える必要があります。
使用可能なワイドテーブルが既にある場合は、次の手順に進みます。それ以外の場合は、LindormTable に接続 し、次の文を実行して tb という名前のワイドテーブルを作成します。
-- データベースを作成します。
CREATE DATABASE test;
-- データベースを使用します。
USE test;
-- ワイドテーブルを作成し、2 つのデータレコードを挿入します。
CREATE TABLE tb (id varchar, name varchar, address varchar, primary key(id, name)) ;
UPSERT INTO tb (id, name, address) values ('001', 'Jack', 'hz');
UPSERT INTO tb (id, name, address) values ('002', 'Edison', 'bj'); OLAP リソースグループに接続されている MySQL コマンドラインツールで、次の文を実行してワイドテーブルデータにアクセスします。
明示的にデータソースに切り替え、データベースを使用します。
-- 明示的にデータソースに切り替えます。 SET CATALOG lindorm_table; -- test データベースを使用します。 USE test;ワイドテーブルデータをクエリします。
例 1:
SELECT * FROM tb LIMIT 5;出力:
+------+--------+---------+ | id | name | address | +------+--------+---------+ | 001 | Jack | hz | | 002 | Edison | bj | +------+--------+---------+例 2:
SELECT count(*) FROM tb;出力:
+----------+ | count(*) | +----------+ | 2 | +----------+
ETL リソースグループを使用する
LDPS の ETL リソースグループを使用すると、サーバーレス Spark SQL を使用してデータのクエリと書き込みを実行できます。リソースはオンデマンドでリクエストされ、自動的に解放されるため、ETL リソースグループは低頻度のクエリまたはオフラインレポートクエリに適しています。
手順 1:リソースグループをアクティブ化する
Lindorm コンソール にログインします。ページの左上隅で、インスタンスがデプロイされているリージョンを選択します。 インスタンス一覧 ページで、管理するインスタンスの ID をクリックするか、インスタンスに対応する [アクション] 列の [管理] をクリックします。
[インスタンスの詳細] ページの [構成] セクションで、[コンピューティングエンジン] に対応する [アクション] 列の [リソースグループ] をクリックします。

[リソースグループの詳細] ダイアログボックスで、[リソースグループの作成] をクリックし、次のパラメーターを構成します。
パラメーター
説明
リソースグルーブタイプ
ETL を選択します。
リソースグループ名
作成するリソースグループの名前。名前には小文字と数字のみを含めることができ、長さは 63 文字を超えることはできません。例:
cg0。1 日のリソースクォータ
リソースグループが 1 日に消費する Capacity Unit (CU) リソースの上限。単位:
CU*時間。デフォルト値:100000。重要制限を超えた場合、ジョブはすぐに強制的に削除されます。安定性の要件が高いリソースグループの場合、このパラメーターを
0に設定できます。これは、制限がないことを示します。CPU 上限 (コア数)
リソースグループの CPU コアの最大数。有効な値:100 ~ 100000。
メモリ上限 (GB)
リソースグループで使用可能な最大メモリ。有効な値:400 ~ 1000000。デフォルト値は構成されていません。
承認済みユーザー
デフォルト値は
*です。これは、すべてのユーザーがリソースグループにアクセスできることを示します。[OK] をクリックして、リソースグループを作成します。
手順 2:環境を準備する
次の環境は、Lindorm インスタンスがデプロイされているのと同じ VPC 内の Elastic Compute Service (ECS) インスタンスにデプロイされます。
Java Development Kit (JDK) V1.8 以降をインストールします。
Spark リリースパッケージ をダウンロードします。
Spark リリースパッケージを解凍します。
環境変数 SPARK_HOME を、パッケージの解凍先のパスに設定します。
export SPARK_HOME=/path/to/spark/;次の構成ファイルでパラメーターを構成します:
$SPARK_HOME/conf/beeline.conf。endpoint:JDBC 用の LDPS エンドポイント。 エンドポイントの取得方法については、「エンドポイントを表示する」をご参照ください。
user:LindormTable への接続に使用するユーザー名。
password:LindormTable への接続に使用するパスワード。
shareResource:同じユーザーの複数のセッション間で計算リソースを共有するかどうかを指定します。デフォルト値:
true。compute-group:使用する ETL リソースグループの名前。デフォルト値:
default。
$SPARK_HOME/binパスに移動し、./beelineコマンドを実行します。次の情報が返されます。Welcome to Lindorm Distributed Processing System (LDPS) !!! Initializing environment. It might take minutes ... Environemnt prepared. You may visit your jdbc cluster by below url: http://alb-boqak6zfns5gzx****.cn-hangzhou.alb.aliyuncsslb.com/proxy/75ce76086b61470da7046bd4c2b7**** Please note -- you are sharing this JDBC cluster between SQL sessions from the same user. The cluster will be released by auto if idle for 4 hours. You may also kill it manually by visiting above web url and clicking 'kill' in tab of 'Query Engine' lindorm-beeline>対話型セッションで、SQL 文を実行して書き込みまたはクエリ操作を実行します。
説明返された情報にある URL
http://alb-boqak6zfns5gzx****.cn-hangzhou.alb.aliyuncsslb.com/proxy/75ce76086b61470da7046bd4c2b7****を使用して、LDPS の SparkUI にアクセスできます。
手順 3:データにアクセスする
列指向データにアクセスする
列指向データは、Iceberg エコシステムと互換性のある列指向ストレージデータレイクです。データは Lindorm インスタンスのファイルエンジンに保存され、Spark SQL を使用して書き込みおよびクエリを実行できます。
列指向データは、lindorm_columnar という名前のカタログ (異なるデータソースを識別するために使用) に保存されます。OLAP リソースグループが MySQL プロトコルを介して接続されると、デフォルトで列指向データカタログにアクセスします。SET CATALOG lindorm_columnar; 文を実行して、明示的に列指向データカタログに切り替えることもできます。
データベースを作成して使用します。
-- データベースを作成します。 CREATE DATABASE etldemo; -- データベースを使用します。 USE etldemo;データテーブルを作成し、テーブルにデータを書き込みます。
-- テーブルを作成します。 CREATE TABLE test (id INT, name STRING); -- テーブルにデータを挿入します。 INSERT INTO test VALUES (0, 'Jay'), (1, 'Edison');データをクエリします。
例 1:
SELECT id, name FROM test WHERE id != 0;出力:
+------+--------+ | id | name | +------+--------+ | 1 | Edison | +------+--------+例 2:
SELECT count(distinct name) FROM test;出力:
+----------------------+ | count(DISTINCT name) | +----------------------+ | 2 | +----------------------+例 3:
SELECT *FROM (SELECT id, name FROM test WHERE id != 0) t0 JOIN (SELECT id, name FROM test WHERE id != 2) t1 ON t0.id=t1.id;+------+--------+------+--------+ | id | name | id | name | +------+--------+------+--------+ | 1 | Edison | 1 | Edison | +------+--------+------+--------+
テーブルを削除します。
DROP TABLE test;データベースを削除します。
DROP DATABASE etldemo;
ワイドテーブルデータにアクセスする
ETL リソースグループを使用すると、LindormTable 内のデータを直接クエリし、その計算能力を活用して複雑なクエリ計算を効率的に実行できます。ETL リソースグループは、ワイドテーブルの作成またはワイドテーブルへのデータの書き込みをサポートしていません。データクエリ操作のみをサポートしています。
LindormTable データは、lindorm_table という名前のカタログに保存されます。LindormTable データにアクセスするには、SET CATALOG lindorm_table; 文を明示的に実行して、lindorm_table カタログに切り替える必要があります。
使用可能なワイドテーブルが既にある場合は、次のステップに進みます。そうでない場合は、LindormTable に接続する (tb という名前のワイドテーブルを作成するには、次の文を実行します。
-- データベースを作成します。
CREATE DATABASE test;
-- データベースを使用します。
USE test;
-- データテーブルを作成し、2 つのデータレコードを挿入します。
CREATE TABLE tb (id varchar, name varchar, address varchar, primary key(id, name)) ;
UPSERT INTO tb (id, name, address) values ('001', 'Jack', 'hz');
UPSERT INTO tb (id, name, address) values ('002', 'Edison', 'bj'); lindorm-beeline 対話型セッションで、次のクエリ文を実行してワイドテーブルデータにアクセスします。
明示的にデータソースに切り替え、データベースを使用します。
-- データソースに明示的に切り替えます。 SET CATALOG lindorm_table; -- test データベースを使用します。 USE test;ワイドテーブルデータのクエリを実行します。
例 1:
SELECT * FROM tb LIMIT 5;出力:
+------+--------+---------+ | id | name | address | +------+--------+---------+ | 001 | Jack | hz | | 002 | Edison | bj | +------+--------+---------+例 2:
SELECT count(*) FROM tb;出力:
+-----------+ | count(1) | +-----------+ | 2 | +-----------+