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

E-MapReduce:SDKモードでのデータのアーカイブとアーカイブ解除

最終更新日:Jan 11, 2025

JindoTableでは、SDKモードでarchiveTableコマンドとunarchiveTableコマンドを実行して、オブジェクトストレージサービス(OSS)のデータをアーカイブおよびアーカイブ解除できます。 これらのコマンドは、SmartDataのJindo Namespace Serviceコンポーネントに依存しません。 このトピックでは、archiveTableコマンドとunarchiveTableコマンドの使用方法について説明します。

前提条件

  • Java Development Kit(JDK)8がコンピューターにインストールされていること。
  • E-MapReduce(EMR)クラスターが作成されていること。 詳細については、「クラスターの作成」をご参照ください。
  • アーカイブするパーティションテーブルまたは非パーティションテーブルがOSSに格納されていること。 アーカイブできるのはテーブルデータのみです。

背景情報

JindoTableの元のarchiveコマンドとunarchiveコマンドを使用して、OSSのテーブルまたはパーティションをアーカイブまたはアーカイブ解除できます。 ただし、これらのコマンドはSmartDataのJindo Namespace Serviceコンポーネントに依存します。 新しいコマンドarchiveTableとunarchiveTableは、Jindo Namespace Serviceコンポーネントに依存しません。

archiveTableコマンドとunarchiveTableコマンドには、archiveコマンドとunarchiveコマンドに比べて次の利点があります:
  • SmartDataサービスがクラスターにデプロイされていない場合でも、archiveTableコマンドとunarchiveTableコマンドを実行できます。 たとえば、セルフマネージドクラスターでコマンドを実行できます。
  • archiveTableコマンドまたはunarchiveTableコマンドでフィルターパラメーターを設定して、複数のスレッドで多数のパーティションを同時にアーカイブまたはアーカイブ解除できます。 ローカルのマルチスレッドがビジネス要件を満たせない場合は、クラスター全体でMapReduceタスクを実行して、データをアーカイブまたはアーカイブ解除できます。

元のarchiveコマンドとunarchiveコマンドの詳細については、「JindoTableの使用」をご参照ください。

制限事項

archiveTableコマンドとunarchiveTableコマンドは、EMR V3.36.0以降のマイナーバージョン、およびEMR V5.2.0以降のマイナーバージョンでのみサポートされています。

archiveTable

archiveTableコマンドを使用して、OSSのテーブルまたはパーティションをアーカイブできます。

  1. SSHモードでクラスターにログオンします。 詳細については、「クラスターへのログオン」をご参照ください。
  2. 次のコマンドを実行して、ヘルプ情報を取得します。
    jindo table -help archiveTable
    次の情報が返されます:
      <dbName.tableName>      アーカイブするテーブル。
      -a/-i                   ストレージポリシー、-aはアーカイブ、-iはIA(低頻度アクセス)。
      <condition>/-fullTable  アーカイブするパーティションを決定するためのフィルター条件。一般的な演算子( '>'など)をサポートします。-fullTableは、すべてのパーティション(またはパーティション化されていないテーブル全体)をアーカイブすることを意味します。 -c "<condition>"と-fullTableのうち、いずれか1つのオプションを指定する必要があります。
      <before days>           オプション。テーブル/パーティションが、現在から指定日数以上前に作成(更新または変更ではない)された場合にのみアーカイブされます。
      <parallelism>           パーティションのアーカイブ時の最大同時実行数。デフォルトは1です。
      -mr/-mapReduce          ローカルレベルのマルチスレッドではなく、クラスターレベルのMapReduceジョブを使用してテーブル/パーティションをアーカイブします。
      -e/-explain             指定した場合、コマンドは実際にデータをアーカイブするのではなく、指定された条件でアーカイブされるテーブル/パーティションのみを出力します。
            <working directory>: MapReduceの一時ファイルを配置するディレクトリ。ローカルファイルシステムディレクトリを指定することはできません。 デフォルトは 'hdfs:///tmp/<current user>/jindotable-policy/' です。
    
      <log directory>  ログファイルを配置するディレクトリ。デフォルトは '/tmp/<current user>/' です。
                                
    archiveTableの構文:
    -archiveTable -t <dbName.tableName> \
    -a/-i \
    [-c "<condition>" | -fullTable] \
    [-b/-before <before days>] \
    [-p/-parallel <parallelism>] \
    [-mr/-mapReduce] \
    [-e/-explain] \
    [-w/-workingDir <working directory>] \
    [-l/-logDir <log directory>]
    パラメーター説明必須
    -t <dbName.tableName>アーカイブするテーブルの名前。 データベース名.テーブル名 の形式でこのパラメーターを指定する必要があります。

    データベース名とテーブル名はピリオド(.)で区切ります。 テーブルは、パーティションテーブルまたは非パーティションテーブルです。

    はい
    -a/-iデータをアーカイブするストレージクラス。 次のいずれかのオプションを使用して、ストレージクラスを指定できます。
    • -a: アーカイブ
    • -i: 低頻度アクセス(IA)

    コマンドで -i オプションを使用すると、ストレージクラスがアーカイブのファイルはスキップされます。

    はい
    -c "<condition>" | -fullTable-fullTable または -c "<condition>" のいずれかを指定する必要があります。
    • -fullTable を指定すると、パーティションテーブルまたは非パーティションテーブル全体がアーカイブされます。
    • -c "<condition>" を指定すると、フィルター条件を満たすパーティションのみがアーカイブされます。 大なり記号(>)などの一般的な演算子がサポートされています。

      たとえば、パーティションキー列がデータ型がStringのds列で、パーティション名が 'd' より大きいパーティションをアーカイブする場合、-c " ds > 'd' " を使用します。

    いいえ
    -b/before <before days>指定日数以上前に作成されたテーブルまたはパーティションのみをアーカイブできます。 いいえ
    -p/-parallel <parallelism>アーカイブ操作の並列度。 いいえ
    -mr/-mapReduceローカルマルチスレッドではなくHadoop MapReduceを使用してデータをアーカイブします。 いいえ
    -e/-explain説明モードを使用します。 説明モードでは、アーカイブされるパーティションのリストが表示されますが、データはアーカイブされません。 いいえ
    -w/-workingDirMapReduceジョブの作業ディレクトリ。 このオプションは、MapReduceジョブを使用してデータをアーカイブする場合にのみ使用されます。 ディレクトリに対する読み取りおよび書き込み権限が必要です。 ディレクトリは空でも空でなくてもかまいません。 MapReduceジョブの実行時に一時ファイルが作成され、ジョブの完了後に自動的に削除されます。 いいえ
    -l/-logDir <log directory>ログファイルが格納されるディレクトリ。 いいえ

unarchiveTable

unarchiveTableコマンドの構文は、archiveTableコマンドの構文に似ています。 unarchiveTableコマンドを使用して、OSSのテーブルまたはパーティションをアーカイブ解除できます。

  1. SSHモードでクラスターにログオンします。 詳細については、「クラスターへのログオン」をご参照ください。
  2. 次のコマンドを実行して、ヘルプ情報を取得します。
    jindo table -help unarchiveTable
    次の情報が返されます:
      <dbName.tableName>      アーカイブ解除するテーブル。
      -i                      IA(低頻度アクセス)にアーカイブ解除します。
      -o                      アーカイブ済みデータに一時的にアクセスできるようにリストアします。
      <condition>/-fullTable  アーカイブ解除するパーティションを決定するためのフィルター条件。一般的な演算子( '>'など)をサポートします。-fullTableは、すべてのパーティション(またはパーティション化されていないテーブル全体)をアーカイブ解除することを意味します。 -c "<condition>"と-fullTableのうち、いずれか1つのオプションを指定する必要があります。
      <before days>           オプション。テーブル/パーティションが、現在から指定日数以上前に作成(更新または変更ではない)された場合にのみアーカイブ解除されます。
      <parallelism>           パーティションのアーカイブ解除時の最大同時実行数。デフォルトは1です。
      -mr/-mapReduce          ローカルレベルのマルチスレッドではなく、クラスターレベルのMapReduceジョブを使用してテーブル/パーティションをアーカイブ解除します。
      -e/-explain             指定した場合、コマンドは実際にデータをアーカイブ解除するのではなく、指定された条件でアーカイブ解除されるテーブル/パーティションのみを出力します。
            <working directory>: MapReduceの一時ファイルを配置するディレクトリ。ローカルファイルシステムディレクトリを指定することはできません。 デフォルトは 'hdfs:///tmp/<current user>/jindotable-policy/' です。
    
      <log directory>  ログファイルを配置するディレクトリ。デフォルトは '/tmp/<current user>/' です。
    unarchiveTableの構文:
    -unarchiveTable -t <dbName.tableName> \
    [-i/-o] \
    [-c "<condition>" | -fullTable] \
    [-b/-before <before days>] \
    [-p/-parallel <parallelism>] \
    [-mr/-mapReduce] \
    [-e/-explain] \
    [-w/-workingDir <working directory>] \
    [-l/-logDir <log directory>]

unarchiveTableコマンドでは、必須パラメーター -a/-i の代わりに、オプションパラメーター -i/-o が使用されます。 これが、unarchiveTableコマンドのパラメーターとarchiveTableコマンドのパラメーターの唯一の違いです。

-i/-o の説明:
  • -i/-o を指定しない場合、アーカイブ解除するデータのストレージクラスはStandardに変更されます。
  • -i オプションを指定すると、アーカイブ解除するデータのストレージクラスはIAに変更されます。 ストレージクラスがStandardのファイルはスキップされます。
  • -o オプションを指定すると、データは一時的にアーカイブ解除されるだけで、ストレージクラスは保持されます。 ストレージクラスがStandardのファイルとストレージクラスがIAのファイルはスキップされます。 以前にアーカイブ解除されたファイルもスキップされます。 これにより、これらのファイルが繰り返しアーカイブ解除されることはありません。