このページでは、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 を有効にします。
- プロジェクトに特有のネットワーキング要件を理解します。
- Dataproc Metastore サービスを作成します。
必要なロール
メタデータを Dataproc Metastore にインポートするために必要な権限を取得するには、管理者に次の IAM ロールを付与するよう依頼してください。
-
メタデータをインポートする場合:
-
メタデータ サービスに対する Dataproc Metastore 編集者(
roles/metastore.editor
)。 -
プロジェクトに対する Dataproc Metastore 管理者(
roles/metastore.admin
)。
-
メタデータ サービスに対する Dataproc Metastore 編集者(
- MySQL で Cloud Storage オブジェクト(SQL ダンプファイル)をインポートに使用する場合:
インポートするメタデータ ダンプを含む Cloud Storage バケットに対するストレージ オブジェクト閲覧者のロールをユーザー アカウントと Dataproc Metastore サービス エージェントに付与します(
roles/storage.objectViewer
)。 - Avro で Cloud Storage バケットをインポートに使用する場合:
インポートするメタデータ ダンプを含む Cloud Storage バケットに対するストレージ オブジェクト閲覧者のロールをユーザー アカウントと Dataproc Metastore サービス エージェントに付与します(
roles/storage.objectViewer
)。
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
これらの事前定義ロールには、メタデータを 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 へのファイルの移動
Dataproc Metastore にインポートする外部データベースのデータベース ダンプを作成します。
データベース ダンプを作成する手順については、次のページをご覧ください。
ファイルを 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
Google Cloud コンソールで、[Dataproc Metastore] ページを開きます。
[Dataproc Metastore] ページで、メタデータをインポートするサービスの名前をクリックします。
サービスの詳細ページが開きます。
ナビゲーション バーで [インポート] をクリックします。
[インポート] ダイアログが開きます。
[Import name] を入力します。
[送信先] セクションで、[MySQL] または [Avro] を選択します。
[宛先 URI] フィールドで、[参照] をクリックして、ファイルをインポートする Cloud Storage URI を選択します。
バケットのロケーションは、指定されたテキスト フィールドに手動で入力することもできます。次の
bucket/object
またはbucket/folder/object
の形式を使用します。省略可: インポートの [説明] を入力します。
説明は [サービスの詳細] ページで編集できます。
サービスを更新するには、[インポート] をクリックします。
インポートが完了すると、[インポート / エクスポート] タブの [サービスの詳細] ページの表にエクスポートが表示されます。
gcloud CLI
メタデータをインポートするには、次の
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
: インポートする外部データベースのタイプ。指定できる値はmysql
とavro
です。 デフォルト値はmysql
です。DATABASE_DUMP
: データベース ファイルを含む Cloud Storage へのパス。このパスはgs://
で始まる必要があります。Avro の場合は、Avro ファイルが保存されているフォルダ(Cloud Storage フォルダ)のパスを指定します。MySQL の場合は、MySQL ファイル(Cloud Storage オブジェクト)へのパスを指定します。
インポートが正常に終了したことを確認します。
REST
API Explorer を使用して API の手順に従い、サービスにメタデータをインポートします。
API を使用すると、インポートを作成、一覧の取得、詳細の取得、更新を行えますが、削除はできません。ただし、Dataproc Metastore サービスを削除すると、保存されたすべてのネストされたインポートが削除されます。
インポートが成功すると、Dataproc Metastore は自動的にアクティブ状態に戻ります。インポートが失敗すると、Dataproc Metastore は以前の正常な状態にロールバックされます。
読み込みの履歴を表示する
Google Cloud コンソールで Dataproc Metastore サービスのインポート履歴を表示するには、次の手順を実行します。
- Google Cloud コンソールで、[Dataproc Metastore] ページを開きます。
ナビゲーション バーで、[インポート / エクスポート] をクリックします。
インポート履歴が [インポート履歴] テーブルに表示されます。
履歴には、最大で最新の 25 件のインポートが表示されます。
Dataproc Metastore サービスを削除すると、関連するインポート履歴もすべて削除されます。
一般的な問題のトラブルシューティング
一般的な問題としては、次のようなものがあります。
一般的なトラブルシューティングの問題の解決については、インポートとエクスポートのエラーのシナリオをご覧ください。