ClickHouse は、クエリのオンライン分析処理 (OLAP) 用のオープンソースの列指向データベース管理システム (DBMS) です。 このドキュメントでは、ClickHouse Writer の仕組みとパラメーターについて、およびコードエディターを使用した構成方法について説明します。
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 パラメーターから値を取得するため、このパラメーターを設定する必要はありません。
|
必須 | なし |
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 の構成
{
"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"
}
]
}
}