ClickHouse は、クエリのオンライン分析処理 (OLAP) 用のオープンソースの列指向データベース管理システム (DBMS) です。 このドキュメントでは、ClickHouse Writer の仕組みとパラメーターについて、およびコードエディターを使用した構成方法について説明します。

重要 現在、ClickHouse Writer はデフォルトのリソースグループをサポートしていません。 データ統合またはカスタムリソースグループには、排他的リソースグループを使用します。 詳細については、「Use exclusive resource groups for data integration」、「カスタムリソースグループの追加」をご参照ください。

ClickHouse Writer を使用すると、ClickHouse データベースにデータを書き込むことができます。 具体的には、ClickHouse Writer は、Java Database Connectivity (JDBC) を介してリモートの ClickHouse データベースに接続し、 INSERT INTO 文を実行して ClickHouse データベースにデータを書き込みます。

ClickHouse Writer は、extract-transform-load (ETL) の開発者がデータウェアハウスから ClickHouse データベースにデータをインポートするために設計されています。 ClickHouse Writer は、データベース管理者 (DBA) などのユーザーがデータ移行ツールとして使用することもできます。

ClickHouse Writer は、Data Integration リーダーからデータを取得し、構成に基づいて生成された INSERT INTO ステートメントを実行して、データをターゲット ClickHouse データベースに書き込みます。

制限事項

  • ClickHouse Writer は、JDBC を介して ClickHouse データベースに接続し、JDBC ステートメントを使用してターゲットテーブルにのみデータを書き込むことができます。
  • ClickHouse Writer では、列のフィルタリングと列の順序変更ができます。 必要に応じて列を入力できます。
  • ClickHouse の負荷を考慮して、INSERT INTO 書き込みモードを使用する場合は、1 秒あたりのスループット (TPS) を 1,000 に調整することを推奨します。
  • ノードのすべてのタスクが実行された後、ClickHouse Writer は単一プロセスの POST Flush 操作を実行して、ClickHouse データベースのデータレコードを更新します。
  • ドライバーのバージョンと ClickHouse データベースの互換性を確認します。 ClickHouse Writer は、次のバージョンの ClickHouse データベースドライバを使用します。
    <dependency>
        <groupId>ru.yandex.clickhouse</groupId>
        <artifactId>clickhouse-jdbc</artifactId>
        <version>0.2.4.ali2-SNAPSHOT</version>
    </dependency>

パラメーター

パラメーター 説明 必須 / 任意 デフォルト値
jdbcUrl ClickHouse データベースに接続するための JDBC URL です。 システムが自動的に connection パラメーターから値を取得するため、このパラメーターを設定する必要はありません。
  • データベースに対して構成できる JDBC URL は 1 つのみです。
  • 形式は、ClickHouse の公式仕様に準拠している必要があります。 接続機能の情報も指定できます。 例: jdbc:clickhouse://127.0.0.1:3306/database
必須 なし
username データベースに接続するためのユーザー名です。 必須 なし
password データベースに接続するためのパスワードです。 必須 なし
table JSON 配列で記述されているターゲットテーブルの名前です。
システムが自動的に connection パラメーターから値を取得するため、このパラメーターを設定する必要はありません。
必須 なし
column データが書き込まれるターゲットテーブルの列です。 複数の列を入力する場合は、カンマ (,) で区切ります。 例: "column": ["id", "name", "age"]
column パラメーターは空白にできません。
必須 なし
preSql 同期ノードが実行される前に実行する SQL 文です。 @table を使用して、SQL 文で変更するテーブル名です。 SQL 文を実行すると、DataWorks は @table をターゲットテーブルの名前に置き換えます。 任意 なし
postSql 同期ノードの実行後に実行する SQL 文です。 任意 なし
batchSize 一度に書き込まれるデータレコード数です。 このパラメーターを設定すると、ネットワーク上で Data Integration と ClickHouse 間のインタラクションを大幅に低減し、全体のスループットを向上させることができます。 ただし、値が大きすぎると、データ同期プロセス中に OOM (データ不足) が発生する可能性があります。 任意 1024

コードレス UI を使用した ClickHouse Writer の構成

現在、ClickHouse Writer でコードレスユーザーインターフェイス (UI) はサポートされていません。

コードエディターを使用した ClickHouse Writer の構成

次のコードでは、ノードが ClickHouse データベースにデータを書き込む構成になっています。
{
    "type":"job",
    "version": "2.0", // バージョン番号。
    "steps":[
        {
            "stepType":"stream",
            "parameter":{},
            "name":"Reader",
            "category":"reader"
        },
        {
            "stepType":"clickhouse",// ライターのタイプ。
            "parameter":{
                "username": "",
                "password": "",
                "column": [// データが書き込まれる列。
                    "id",
                    "name"
                ],
                "connection": [
                    {
                        "table":[// ターゲットテーブルの名前。
                            "ClickHouse_table"
                        ],
                        "jdbcUrl": "jdbc:clickhouse://ip:port/database"
                    }
                ],
                "preSql": [ // 同期ノードを実行する前に実行する SQL 文。
                    "delete from @table where db_id = -1"
                ],
                "postSql": [// 同期ノードを実行した後に実行する SQL 文。
                    "update @table set db_modify_time = now() where db_id = 1"
                ],
                "batchSize": "1024",
                "batchByteSize": "67108864",
                "writeMode": "insert"
            },
            "name":"Writer",
            "category":"writer"
        }
    ],
    "setting":{
        "errorLimit":{
            "record":"0"// 許容するダーティデータレコードの最大数。
        },
        "speed":{
            "throttle":false,// 帯域幅調整を有効化するかどうかを指定します。 値が false の場合は、帯域幅が調整されていないことを示します。 値が trueの場合は、帯域幅が調整されていることを示します。 最大伝送速度は、このパラメーターを true に設定した場合にのみ有効になります。
            "concurrent":1,// 並行スレッドの最大数。
        }
    },
    "order":{
        "hops":[
            {
                "from":"Reader",
                "to":"Writer"
            }
        ]
    }
}