MoveTo コマンドは、テーブルとパーティションのデータを新しいストレージパスに移行します。
前提条件
- Java Development Kit (JDK) 8 がインストールされていること。
- クラスターが作成されていること。詳細については、「クラスターの作成」をご参照ください。
背景情報
MoveTo コマンドは、基盤となるデータをコピーし、メタデータを自動的に更新して、テーブルとパーティションのデータを新しいパスに完全に移行します。フィルター条件を使用して、一度に複数のパーティションをコピーできます。組み込みのセーフガードが、移行中のデータ整合性を保護します。
制限
MoveTo コマンドは、E-MapReduce (EMR) V3.36.0 以降、または EMR V5.2.0 以降を実行しているクラスターでサポートされています。
MoveTo コマンドの使用
重要 一度に 1 つの MoveTo プロセスのみをクラスターで実行できます。MoveTo プロセスがすでに実行中の場合、新しい MoveTo プロセスは設定ロックの取得に失敗して終了します。システムは、プロセスが実行中であることを通知します。この場合、実行中のプロセスを停止して新しいプロセスを開始するか、現在のプロセスが終了するまで待つことができます。
- Secure Shell (SSH) を使用してクラスターにログインします。詳細については、「クラスターへのログイン」をご参照ください。
- 次のコマンドを実行して、ヘルプ情報を表示します。
jindo table -help moveToヘルプ情報は次のとおりです。<dbName.tableName> 移動するテーブル。 <destination path> 宛先のベースディレクトリ。常に「テーブルの場所」と同じレベルにあり、移動された パーティションまたは非パーティションデータが配置されます。 <condition>/-fullTable 移動するパーティションを決定するためのフィルター条件。 一般的な演算子 (「>」など) や組み込み UDF (to_date など) をサポートします (UDF はまだサポートされていません)。 -c "<condition>" と -fullTable のうち、いずれか 1 つだけを 指定する必要があります。 <before days> オプション。テーブル/パーティションが、現在から指定された日数より前に 作成された (更新または変更されていない) 場合にのみ移動します。 <parallelism> パーティションをコピーする際の最大同時実行数。デフォルトは 1 です。 <OSS storage policy>: OSS の宛先のストレージポリシー。Standard (デフォルト)、 IA、 Archive、または ColdArchive を指定できます。OSS 以外の宛先には適用されません。 注: ColdArchive ストレージポリシーを使用する場合は、 お使いの OSS バケットでコールドアーカイブが有効になっていることを確認してください。 -o/-overWrite データが移動される最終パスを上書きします。 パーティションテーブルの場合、これは <destination path> の サブディレクトリであるパーティションの場所のみを上書きします。 非パーティションテーブルの場合、<destination path> 自体を上書きします。 -r/-removeSource 対応するテーブル/パーティションが新しい宛先に正常に 移動されたときに、ソースデータを削除します。 それ以外の場合 (デフォルト)、ソースデータはそのまま残ります。 -skipTrash [-r/-removeSource] が有効な場合にのみ適用されます。 指定した場合、ソースデータはゴミ箱をバイパスして ファイルシステムから即座に削除されます。 -e/-explain 指定した場合、コマンドは実際にはデータを移動せず、 指定された条件で移動されるテーブル/パーティションを表示するだけです。 <log directory> ログファイルを配置するディレクトリ。デフォルトは '/tmp/<current user>/' です。MoveTo コマンドの構文は次のとおりです。jindo table -moveTo \ -t <dbName.tableName> \ -d <destination path> \ [-c "<condition>" | -fullTable] \ [-b/-before <before days>] \ [-p/-parallel <parallelism>] \ [-s/-storagePolicy <OSS storage policy>] \ [-o/-overWrite] \ [-r/-removeSource] \ [-skipTrash] \ [-e/-explain] \ [-l/-logDir <log directory>]パラメーター 説明 必須 -t <dbName.tableName> 移動するテーブルの名前。 database_name.table_nameの形式を使用します。データベース名とテーブル名はピリオド (.) で区切られます。テーブルは、パーティションテーブルまたは非パーティションテーブルのいずれかです。
はい -d <destination path> 宛先パス。パーティションを移動する場合でも、非パーティションテーブル全体を移動する場合でも、このパスはテーブルレベルの場所に対応します。パーティションを移動する場合、パーティションのフルパスは、宛先パスにパーティション名を追加したものです (例: <destination path>/p1=v1/p2=v2/)。はい -c "<condition>" | -fullTable -c "<condition>"または-fullTableのいずれかを指定する必要があります。-fullTableを指定すると、テーブル全体が移行されます。テーブルはパーティションテーブルまたは非パーティション化テーブルのいずれかです。-c "<condition>"を指定すると、この条件に一致するパーティションが移行されます。大なり記号 (>) などの一般的な演算子がサポートされています。例えば、String データ型のパーティションキー列
dsで、パーティション名が 'd' より大きいパーティションを選択する場合は、-c " ds > 'd' "を使用します。
はい -b/-before <before days> 指定した日数より前に作成されたテーブルまたはパーティションのみを移動します。 いいえ -p/-parallel <parallelism> 移行操作の並列度。 いいえ -s/-storagePolicy <OSS storage policy> OSS にコピーされるデータのストレージポリシー。次のポリシーが利用可能です。 - Standard:標準ストレージ。(デフォルト)
- IA:低頻度アクセス (IA) ストレージ。
- Archive:アーカイブストレージ。
- ColdArchive:コールドアーカイブストレージ。説明 このポリシーを使用する前に、お使いの OSS バケットでこの機能が有効になっていることを確認してください。
いいえ -o/-overWrite 宛先パスを上書きするかどうかを指定します。パーティションテーブルの場合、このオプションはテーブルパス全体ではなく、移動するパーティションのパスのみを上書きします。 いいえ -r/-removeSource 移行が完了し、メタデータが更新された後にソースデータを削除するかどうかを指定します。パーティションテーブルの場合、このオプションは正常に移動されたパーティションのソースパスのみを削除します。 いいえ -skipTrash ソースパスを削除するときにゴミ箱をバイパスするかどうかを指定します。 説明 このパラメーターは -r/-removeSource が指定されている場合にのみ適用されます。いいえ -e/-explain このオプションを指定すると、コマンドは explain モードで実行されます。移動されるパーティションを一覧表示しますが、実際にはデータを移動しません。 いいえ -l/-logDir <log directory> ログファイルのディレクトリを指定します。 いいえ
ロックディレクトリの設定
MoveTo ツールはプロセスロックを使用します。このロックには、Hadoop Distributed File System (HDFS) パスが必要です。LOCK ファイルを保存するための Hadoop Distributed File System (HDFS) パスが必要です。デフォルトでは、パスは hdfs:///tmp/jindotable-lock/ です。
重要 LOCK ファイルのパスは HDFS パスである必要があります。デフォルトパスに必要な権限がない場合は、次の手順に従ってカスタムパスを設定します。
- HDFS サービスページに移動します。
- Alibaba Cloud EMR コンソールにログインします。
- 上部メニューで、クラスターのあるリージョンとリソースグループを選択します。
- Clusters タブをクリックします。
- Clusters ページで、目的のクラスターの行にある Details をクリックします。
- ナビゲーションペインで、 を選択します。
- Alibaba Cloud EMR コンソールにログインします。
- 設定を変更します。
- HDFS サービスページで、Configure タブをクリックします。次に、[hdfs-site] または [core-site] タブをクリックします。
- 右上隅にある Custom Configuration をクリックします。
- Add Configuration Item ダイアログボックスで、設定項目 jindotable.moveto.tablelock.base.dir を追加し、その値を既存の HDFS パスに設定します。
重要 カスタムロックディレクトリを設定する前に、クラスター内のどのノードでも MoveTo プロセスが実行されていないことを確認してください。そうしないと、MoveTo 操作が失敗したり、データの破損が発生したりする可能性があります。
- 設定を保存します。
- 右上隅にある Save をクリックします。
- 変更する ダイアログボックスで、変更理由を入力して OK をクリックします。