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

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

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

このポータブル メタデータは通常、別の Dataproc Metastore サービスからエクスポートされるか、セルフマネージド Hive Metastore(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 は、すべてのテーブル情報が含まれる単一の 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. [宛先 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 サービスを削除すると、関連するインポート履歴もすべて削除されます。

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

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

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

次のステップ