すべてのプロダクト
Search
ドキュメントセンター

DataHub:シャード操作

最終更新日:Jul 26, 2025

このトピックでは、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());
        }

    }