テーブルエンジンまたはテーブル関数を使用して、OSS (Object Storage Service) からApsaraDB for ClickHouseにデータをインポートし、ログクエリ、分析、および処理を行うことができます。 このトピックでは、OSSからApsaraDB for ClickHouseにデータをインポートする方法について説明します。
前提条件
OSSが有効化されています。 OSSを有効化する方法の詳細については、OSSコンソールを使用して開始するトピックのOSSの有効化セクションをご参照ください。
バケット作成についての バケットとApsaraDB for ClickHouseクラスターは同じリージョンにデプロイされています。 バケットの作成方法の詳細については、「OSSコンソールを使用して開始する」トピックの「バケットの作成」セクションをご参照ください。
OSSバケットへのアクセスに使用されるAlibaba Cloudアカウントには、バケット内のオブジェクトに対する読み取り権限が付与されています。 権限を付与する方法の詳細については、「概要」をご参照ください。
データ準備
次のテストデータをtest.csvという名前のCSVファイルに保存し、そのファイルをOSSにアップロードします。 データをインポートする場合、ApsaraDB for ClickHouseクラスターでサポートされているデフォルトの列区切り文字はコンマ (,)
です。 データをアップロードする方法の詳細については、「OSSコンソールを使用して開始する」トピックの「オブジェクトのアップロード」セクションをご参照ください。
1,yang,32,shanghai,http://example1.com
2,wang,22,beijing,http://example2.com
3,xiao,23,shenzhen,http://example3.com
4,jess,45,hangzhou,http://example4.com
5,jack,14,shanghai,http://example5.com
6,tomy,25,hangzhou,http://example6.com
7,lucy,45,shanghai,http://example7.com
8,tengyin,26,shanghai,http://example8.com
9,wangli,27,shenzhen,http://example9.com
10,xiaohua,37,shanghai,http://example10.com
手順
ApsaraDB for ClickHouseクラスターに接続します。 詳細については、「ApsaraDB For ClickHouseクラスターへの接続」をご参照ください。
oss_test_tbl_local
という名前のローカルテーブルを作成します。重要ApsaraDB for ClickHouseテーブルは、OSS外部テーブルと同じスキーマを使用し、OSS外部テーブルのデータ形式と互換性がある必要があります (特にnullフィールドの場合) 。 これにより、データ解析の失敗によるクラスターの問題を防ぎます。
ローカルテーブルを作成するには、ApsaraDB for ClickHouseクラスターのエディションに基づいてステートメントを実行する必要があります。 左側のナビゲーションウィンドウで [クラスター情報] をクリックし、[クラスタープロパティ] セクションでクラスターのエディションを表示します。
ビジネス要件に基づいてテーブルエンジンを選択できます。 テーブルエンジンの詳細については、「テーブルエンジン」をご参照ください。
Single-replica Editionのクラスタにローカルテーブルを作成するために使用されるステートメント
CREATE TABLE oss_test_tbl_local ON CLUSTER default ( id UInt8, user_name String, age UInt16, city String, access_url String ) ENGINE = MergeTree() ORDER BY id;
Double-replica Editionのクラスタにローカルテーブルを作成するために使用するステートメント
CREATE TABLE oss_test_tbl_local ON CLUSTER default ( id UInt8, user_name String, age UInt16, city String, access_url String ) ENGINE = ReplicatedMergeTree('/clickhouse/tables/{database}/{table}/{shard}', '{replica}') ORDER BY id;
(オプション)
oss_test_tbl_distributed
という名前の分散テーブルを作成します。説明コレクション内のローカルテーブルにデータを分散する場合は、分散テーブルを作成する必要があります。
CREATE TABLE oss_test_tbl_distributed ON CLUSTER default ( id UInt8, user_name String, age UInt16, city String, access_url String ) ENGINE = Distributed(default, default, oss_test_tbl_local, rand());
OSSからApsaraDB for ClickHouseにデータをインポートします。
テーブルエンジンまたはテーブル関数を使用して、OSSからApsaraDB for ClickHouseにデータをインポートできます。
重要OSS外部テーブルを作成するには、クラスターのカーネルバージョンに基づいてステートメントを実行する必要があります。 左側のナビゲーションウィンドウで [クラスター情報] をクリックし、[クラスタープロパティ] セクションにクラスターのカーネルバージョンを表示します。
方法1: テーブルエンジンを使用してOSSからデータをインポート
方法2: テーブル関数を使用してOSSからデータをインポート
分散テーブル
oss_test_tbl_distributed
のデータを照会し、OSSのデータがApsaraDB for ClickHouseにインポートされているかどうかを確認します。SELECT * FROM oss_test_tbl_distributed;
次の応答が返されます。
┌─id─┬─user_name─┬──age──┬───city─────┬─────access_url────────┐ │ 1 │ yang │ 32 │ shanghai │ http://example1.com │ │ 2 │ wang │ 22 │ beijing │ http://example2.com │ │ 3 │ xiao │ 23 │ shenzhen │ http://example3.com │ │ 4 │ jess │ 45 │ hangzhou │ http://example4.com │ │ 5 │ jack │ 14 │ shanghai │ http://example5.com │ │ 6 │ tomy │ 25 │ hangzhou │ http://example6.com │ │ 7 │ lucy │ 45 │ shanghai │ http://example7.com │ │ 8 │ tengyin │ 26 │ shanghai │ http://example8.com │ │ 9 │ wangli │ 27 │ shenzhen │ http://example9.com │ │ 10 │ xiaohua │ 37 │ shanghai │ http://example10.com │ └────┴───────────┴───────┴────────────┴───────────────────────┘
ワイルドカード文字を使用したOSSのストレージパスのファジーマッチング
ほとんどの場合、OSS内の複数の小さなファイルは、同じ命名規則に基づいて作成されます。 小さなファイルの分析を簡単にするために、oss-file-path
パラメーターを設定してファジーマッチングを実行するときに、次のワイルドカード文字を使用できます。
*
: すべてのファイルまたはディレクトリに一致します。 たとえば、/dir/*
は、/dir
ディレクトリ内のすべてのファイルと一致します。{x, y, z}
: 括弧 {} で囲まれた値のいずれかに一致します。 たとえば、file_{x, y, z}
は、file_x
、file_y
、またはfile_z
と一致します。{num1. num2}
: 最小値、最大値、またはそれらの間の値に一致します。 たとえば、file_{1 .. 3}
は、file_1
、file_2
、またはfile_3
と一致します。?
: ランダムな文字に一致します。 たとえば、ファイル_?
は、file_a
、file_b
、file_c
、または名前が類似している他のファイルに一致します。
例
ファイルは、次の構造を使用するディレクトリにアップロードできます。
oss://testBucketName/
doc-data/
oss-import/
small_files/
access_log_csv_1.txt
access_log_csv_2.txt
access_log_csv_3.txt
次のリストは、参照用にのみoss-file-path
パラメーターの値を示しています。
oss:// testBucketName/doc-data/oss-import/small_files/*
oss:// testBucketName/doc-data/oss-import/small_files/access *
oss:// testBucketName/doc-data/oss-import/small_files/access_log_csv_{1,2,3}.txt
oss:// testBucketName/doc-data/oss-import/*/access_log_csv_{1,2,3}.txt
oss:// testBucketName/doc-data/oss-import/*/*
oss:// testBucketName/doc-data/oss-import/*/access_log_csv_{1...3}.txt
oss:// testBucketName/doc-data/oss-import/*/access_log_csv_?.txt