メタデータを Dataproc Metastore にインポートする

このページでは、Dataproc Metastore サービスにメタデータをインポートする方法について説明します。

メタデータをインポートする機能を使用すると、既存の Dataproc Metastore サービスに、ポータブル ストレージ形式で保存されたメタデータを入力できます。

このポータブル メタデータは通常、別の Dataproc Metastore サービスまたはセルフマネージド Hive メタストア(HMS)からエクスポートされます。

メタデータのインポートについて

次のファイル形式を Dataproc Metastore にインポートできます。

  • フォルダに保存された一連の Avro ファイル。
  • Cloud Storage フォルダに格納された単一の MySQL ダンプファイル。

インポートする MySQL ファイルまたは Avro ファイルは、リレーショナル データベースから生成する必要があります。

ファイルが PostgreSQL などの別の形式である場合は、Avro 形式または MySQL 形式に変換する必要があります。変換後、Dataproc Metastore にインポートできます。

Avro

Avro ベースのインポートは、Hive バージョン 2.3.6 と 3.1.2 のみでサポートされています。Avro ファイルをインポートする場合、Dataproc Metastore ではデータベース内のテーブルごとに一連の <table-name>.avro ファイルを想定しています。

Avro ファイルをインポートするには、Dataproc Metastore サービスで MySQL または Spanner データベース タイプを使用できます。

MySQL

MySQL ベースのインポートは、すべての Hive バージョンでサポートされています。MySQL ファイルをインポートする場合、Dataproc Metastore では、すべてのテーブル情報を含む 1 つの SQL ファイルを想定しています。ネイティブ SQL を使用して Dataproc クラスタから取得した MySQL ダンプもサポートされています。

MySQL ファイルをインポートするには、Dataproc Metastore サービスで MySQL データベース タイプを使用する必要があります。Spanner データベース タイプは MySQL のインポートをサポートしていません。

インポートに関する考慮事項

  • インポートすると、Dataproc Metastore サービスに保存されている既存のメタデータがすべて上書きされます。

  • メタデータ インポート機能は、メタデータのみをインポートします。内部テーブルにある Apache Hive によって作成されたデータは、インポートで複製されません。

  • インポートしても、データベース コンテンツは変換されず、ファイルの移行は処理されません。データを別のロケーションに移すには、Dataproc Metastore サービスでテーブルデータのロケーションとスキーマを手動で更新する必要があります。

  • インポートしても、きめ細かい IAM ポリシーの復元や置き換えは行われません。

  • VPC Service Controls を使用している場合、Dataproc Metastore サービスと同じサービス境界にある Cloud Storage バケットからのみデータをインポートできます。

始める前に

必要なロール

メタデータを Dataproc Metastore にインポートするために必要な権限を取得するには、管理者に次の IAM ロールを付与するよう依頼してください。

ロールの付与の詳細については、アクセスの管理をご覧ください。

これらの事前定義ロールには、Dataproc Metastore にメタデータをインポートするために必要な権限が含まれています。必要な権限を正確に確認するには、[必要な権限] セクションを開いてください。

必要な権限

Dataproc Metastore にメタデータをインポートするには、次の権限が必要です。

  • メタデータをインポートするには: メタストア サービスに対する metastore.imports.create
  • MySQL の場合、インポートに Cloud Storage オブジェクト(SQL ダンプファイル)を使用するには、インポート対象のメタデータ ダンプを含む Cloud Storage バケットに対するユーザー アカウントと Dataproc Metastore サービス エージェント storage.objects.get を付与します。
  • Avro でインポートに Cloud Storage バケットを使用するには、インポートされるメタデータ ダンプを含む Cloud Storage バケットに対するユーザー アカウントと Dataproc Metastore サービス エージェント storage.objects.get を付与します。

カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。

Dataproc Metastore の特定のロールと権限については、Dataproc Metastore IAM の概要をご覧ください。

メタデータをインポートする

インポート オペレーションは 2 段階のプロセスです。まず、インポート ファイルを準備してから、Dataproc Metastore にインポートします。

インポートを開始すると、Dataproc Metastore によって Hive メタデータ スキーマ検証が実行されます。この検証では、SQL ダンプファイル内のテーブルと Avro のファイル名を検証します。テーブルがない場合、不足しているテーブルを説明するエラー メッセージが表示され、インポートは失敗します。

インポート前に Hive メタデータの互換性を確認するには、 Dataproc Metastore Toolkit を使用できます。

インポートの前にインポート ファイルを準備する

ファイルを Dataproc Metastore にインポートする前に、メタデータ ダンプファイルをアーティファクトの Cloud Storage バケットなどの Cloud Storage にコピーする必要があります。

Cloud Storage へのファイルの移動

  1. Dataproc Metastore にインポートする外部データベースのデータベース ダンプを作成します。

    データベース ダンプの作成手順については、次のページをご覧ください。

  2. ファイルを Cloud Storage にアップロードします。

    ファイルをアップロードする Cloud Storage のパスを必ずメモしてください。後でインポートを実行するとき使用する必要があります。

    • MySQL ファイルをインポートする場合は、SQL ファイルを Cloud Storage バケットにアップロードします。

    • Avro ファイルをインポートする場合は、ファイルを Cloud Storage フォルダにアップロードします。

      • テーブルが空の場合でも、Avro インポートに Hive テーブルごとに Avro ファイルを含める必要があります。
      • Avro ファイル名は、<table-name>.avro 形式に従う必要があります。<table-name> はオール キャップスにする必要があります。例: AUX_TABLE.avro

Dataproc Metastore にファイルをインポートする

メタデータをインポートする前に、インポートの考慮事項を確認してください。

インポートの実行中に、Dataproc Metastore サービスを更新することはできません(構成設定の変更など)。ただし、接続された Dataproc やセルフマネージド クラスタからメタデータにアクセスするために使用するなど、通常のオペレーションに引き続き使用できます。

Console

  1. Google Cloud コンソールで、[Dataproc Metastore] ページを開きます。

    Dataproc Metastore を開く

  2. [Dataproc Metastore] ページで、メタデータをインポートするサービスの名前をクリックします。

    サービスの詳細ページが開きます。

    サービスの詳細ページ
    図 1. Dataproc Metastore サービスの詳細ページ。
  3. ナビゲーション バーで [インポート] をクリックします。

    [インポート] ダイアログが開きます。

  4. [Import name] を入力します。

  5. [送信先] セクションで、[MySQL] または [Avro] を選択します。

  6. [Destination URI] フィールドで [参照] をクリックし、ファイルをインポートする Cloud Storage URI を選択します。

    テキスト フィールドにバケットの場所を手動で入力することもできます。bucket/object または bucket/folder/object の形式を使用します。

  7. 省略可: インポートの [説明] を入力します。

    説明は [サービスの詳細] ページで編集できます。

  8. サービスを更新するには、[インポート] をクリックします。

    インポートが完了すると、[インポート / エクスポート] タブの [サービスの詳細] ページの表にエクスポートが表示されます。

gcloud CLI

  1. メタデータをインポートするには、次の gcloud metastore services import gcs コマンドを実行します。

    gcloud metastore services import gcs SERVICE_ID \
      --location=LOCATION \
      --import-id=IMPORT_ID \
      --description=DESCRIPTION \
      --dump-type=DUMP_TYPE \
      --database-dump=DATABASE_DUMP
    

    次のように置き換えます。

    • SERVICE_ID: Dataproc Metastore サービスの ID または完全修飾名。
    • LOCATION: Dataproc Metastore サービスが存在する Google Cloud リージョン。
    • IMPORT_ID: メタデータのインポートの ID または完全修飾名。例: import1
    • DESCRIPTION: 省略可: インポートの説明。これは gcloud metastore services imports update IMPORT を使用して後で編集できます。
    • DUMP_TYPE: インポートする外部データベースのタイプ。指定できる値は mysqlavro です。デフォルト値は mysql です。
    • DATABASE_DUMP: データベース ファイルを格納する Cloud Storage へのパス。このパスは gs:// で始まる必要があります。Avro の場合は、Avro ファイルが保存されているフォルダ(Cloud Storage フォルダ)のパスを指定します。MySQL の場合、MySQL ファイル(Cloud Storage オブジェクト)のパスを指定します。
  2. インポートが正常に終了したことを確認します。

REST

API Explorer を使用して API の手順に従い、サービスにメタデータをインポートします。

API を使用すると、インポートを作成、一覧の取得、詳細の取得、更新を行えますが、削除はできません。ただし、Dataproc Metastore サービスを削除すると、保存されたすべてのネストされたインポートが削除されます。

インポートが成功すると、Dataproc Metastore は自動的にアクティブ状態に戻ります。インポートが失敗した場合、Dataproc Metastore は以前の正常な状態にロールバックされます。

読み込みの履歴を表示する

Google Cloud コンソールで Dataproc Metastore サービスのインポート履歴を表示するには、次の手順を実行します。

  1. Google Cloud コンソールで、[Dataproc Metastore] ページを開きます。
  2. ナビゲーション バーで、[インポート / エクスポート] をクリックします。

    インポート履歴が [インポート履歴] テーブルに表示されます。

    履歴には、最大で最新の 25 件のインポートが表示されます。

Dataproc Metastore サービスを削除すると、関連付けられているすべてのインポート履歴も削除されます。

一般的な問題のトラブルシューティング

一般的な問題としては、次のようなものがあります。

一般的な問題の解決方法については、インポートとエクスポートのエラー シナリオをご覧ください。

次のステップ