MinIO からのデータロード
StarRocks は、MinIO からデータをロードするために次のオプションを提供しています。
- INSERT+
FILES()を使用した同期ロード - Broker Load を使用した非同期ロード
これらの各オプションにはそれぞれの利点があり、以下のセクションで詳しく説明します。
ほとんどの場合、使用が簡単な INSERT+FILES() メソッドをお勧めします。
ただし、INSERT+FILES() メソッドは現在、Parquet、ORC、および CSV ファイル形式のみをサポートしています。そのため、JSON などの他のファイル形式のデータをロードする必要がある場合や、データロード中に DELETE などのデータ変更を行う必要がある場合は、Broker Load を使用できます。
始める前に
ソースデータの準備
StarRocks にロードしたいソースデータが MinIO バケットに適切に保存されていることを確認してください。また、データとデータベースの場所を考慮することもお勧めします。バケットと StarRocks クラスターが同じリージョンにある場合、データ転送コストははるかに低くなります。
このトピックでは、サンプルデータセットを提供します。curl を使用してダウンロードできます。
curl -O https://starrocks-examples.s3.amazonaws.com/user_behavior_ten_million_rows.parquet
Parquet ファイルを MinIO システムにロードし、バケット名をメモしておいてください。このガイドの例では、バケット名として /starrocks を使用します。
権限の確認
StarRocks のテーブルにデータを ロード するには、その StarRocks テーブルに対して INSERT 権限を持つユーザーである必要があります。INSERT 権限がない場合は、GRANT に記載されている手順に従って、StarRocks クラスターに接続するために使用するユーザーに INSERT 権限を付与してください。構文は GRANT INSERT ON TABLE <table_name> IN DATABASE <database_name> TO { ROLE <role_name> | USER <user_identity>} です。
接続情報の収集
簡単に言うと、MinIO アクセスキー認証を使用するには、次の情報を収集する必要があります。
- データを保存するバケット
- バケット内の特定のオブジェクトにアクセスする場合のオブジェクトキー(オブジェクト名)
- MinIO エンドポイント
- アクセス資格情報として使用されるアクセスキーとシークレットキー

INSERT+FILES() の使用
このメソッドは v3.1 以降で利用可能で、現在は Parquet、ORC、および CSV(v3.3.0 以降)ファイル形式のみをサポートしています。
INSERT+FILES() の利点
FILES() は、指定したパス関連のプロパティに基づいてクラウドストレージに保存されたファイルを読み取り、ファイル内のデータのテーブルスキーマを推測し、ファイルからデータをデータ行として返すことができます。
FILES() を使用すると、次のことができます。
- SELECT を使用して MinIO から直接データをクエリする。
- CREATE TABLE AS SELECT (CTAS) を使用してテーブルを作成し、ロードする。
- INSERT を使用して既存のテーブルにデータをロードする。
典型的な例
SELECT を使用して MinIO から直接クエリする
SELECT+FILES() を使用して MinIO から直接クエリすることで、テーブルを作成する前にデータセットの内容をプレビューできます。例えば:
- データ を保存せずにデータセットをプレビューする。
- 最小値と最大値をクエリし、使用するデータ型を決定する。
NULL値をチェックする。
以下の例は、以前に MinIO システムに追加されたサンプルデータセットをクエリします。
コマンドのハイライトされた部分には、変更が必要な設定が含まれています。
- MinIO システムに合わせて
endpointとpathを設定します。 - MinIO システムが SSL を使用している場合は、
enable_sslをtrueに設定します。 - MinIO アクセスキーとシークレットキーを
AAAとBBBに置き換えます。
SELECT * FROM FILES
(
"aws.s3.endpoint" = "http://minio:9000",
"path" = "s3://starrocks/user_behavior_ten_million_rows.parquet",
"aws.s3.enable_ssl" = "false",
"aws.s3.access_key" = "AAAAAAAAAAAAAAAAAAAA",
"aws.s3.secret_key" = "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB",
"format" = "parquet",
"aws.s3.use_aws_sdk_default_behavior" = "false",
"aws.s3.use_instance_profile" = "false",
"aws.s3.enable_path_style_access" = "true"
)
LIMIT 3;
システムは次のクエリ結果を返します。
+--------+---------+------------+--------------+---------------------+
| UserID | ItemID | CategoryID | BehaviorType | Timestamp |
+--------+---------+------------+--------------+---------------------+
| 543711 | 829192 | 2355072 | pv | 2017-11-27 08:22:37 |
| 543711 | 2056618 | 3645362 | pv | 2017-11-27 10:16:46 |
| 543711 | 1165492 | 3645362 | pv | 2017-11-27 10:17:00 |
+--------+---------+------------+--------------+---------------------+
3 rows in set (0.41 sec)
上記で返された列名は Parquet ファイルによって提供されていることに注意してください。