このトピックでは、DataHub Java SDK のシャード操作について説明します。
シャードの説明
トピック内のシャードの数は、その同時データ転送機能を決定します。 各シャードは一意の ID を持ち、複数の状態が存在できます。
Opening:シャードは起動中です。
アクティブ:シャードがサービスを提供できる状態です。
有効な各シャードは、一定量のサーバーリソースを消費します。要件に基づいて、適切な数のシャードをリクエストできます。
シャードを一覧表示する
パラメータ
パラメータ名 | パラメータタイプ | 説明 |
projectName | String | プロジェクト名。 |
topicName | String | トピック名。 |
例外
例外クラス名 | エラーコード | 説明 |
DatahubClientException | - | これはすべての例外の基底クラスです。 |
サンプルコード
public static void listShard(String projectName, String topicName) {
try {
ListShardResult listShardResult = datahubClient.listShard(projectName, topicName);
if (listShardResult.getShards().size() > 0) {
for (ShardEntry entry : listShardResult.getShards()) {
System.out.println(entry.getShardId() + "\t"
+ entry.getState() + "\t"
+ entry.getLeftShardId() + "\t"
+ entry.getRightShardId());
}
}
} catch (DatahubClientException e) {
System.out.println(e.getErrorMessage());
// DatahubClientException がキャッチされた場合の処理
}
}シャード分割
この操作は、ACTIVE 状態のシャードを 2 つの新しい ACTIVE 状態のシャードに分割し、元のシャードを CLOSED 状態に変更します。CLOSED 状態のシャードは、読み取りのみ可能で、書き込みはできません。分割操作には、デフォルトの splitKey を使用するか、カスタムの splitKey を指定できます。
パラメータ
パラメータ名 | パラメータタイプ | 説明 |
プロジェクト名 | String | プロジェクト名です。 |
トピック名 | String | トピック名です。 |
シャード ID | 文字列 | 分割対象のシャード。 |
分割キー | 文字列 | シャードを分割するために使用される分割キーです。 |
例外
例外クラス名 | エラーコード | 説明 |
DatahubClientException | - | これはすべての例外の基底クラスです。 |
サンプルコード
public static void splitShard(String projectName, String topicName, String shardId) {
try {
shardId = "0";
SplitShardResult splitShardResult = datahubClient.splitShard(projectName, topicName, shardId);
for (ShardEntry entry : splitShardResult.getNewShards()) {
System.out.println(entry.getShardId());
}
} catch (DatahubClientException e) {
System.out.println(e.getErrorMessage());
}
}シャードのマージ
この操作は、ACTIVE 状態にある 2 つの隣接したシャードをマージします。マージ可能な隣接したシャードを特定するには、listShard の結果を参照できます。
パラメータ
パラメータ名 | パラメータタイプ | 説明 |
プロジェクト名 | 文字列 | プロジェクト名。 |
トピック名 | 文字列 | トピック名。 |
シャード ID | 文字列 | マージされるシャード。 |
隣接シャード ID | 文字列 | 指定されたシャードの隣接シャード。 |
例外
例外クラス名 | エラーコード | 説明 |
DatahubClientException | - | これはすべての例外の基底クラスです。 |
サンプルコード
public static void mergeShard() {
try {
String shardId = "7";
// adjacentShardId は shardId と隣接している必要があります。隣接するシャードの情報は listShard の結果で確認できます。
String adjacentShardId = "8";
MergeShardResult mergeShardResult = datahubClient.mergeShard(Constant.projectName, Constant.topicName, shardId, adjacentShardId);
System.out.println("merge successful");
System.out.println(mergeShardResult.getShardId());
} catch (DatahubClientException e) {
System.out.println(e.getErrorMessage());
}
}シャードの拡張
シャードを拡張する場合、新しいシャード数は元のシャード数以上である必要があります。
パラメータ
パラメータ名 | パラメータタイプ | 説明 |
projectName | String | プロジェクト名。 |
topicName | String | トピック名。 |
shardCount | int | 拡張するシャードの数。 |
adjacentShardId | String | 指定されたシャードの隣接シャード。 |
例外
例外クラス名 | エラーコード | 説明 |
DatahubClientException | - | これはすべての例外の基底クラスです。 |
サンプルコード
public static void extendTopic(String projectName, String topicName, int shardCount) {
try {
ExtendShardResult extendShardResult = datahubClient.extendShard(projectName, topicName, shardCount);
} catch (DatahubClientException e) {
System.out.println(e.getErrorMessage());
}
}