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

:BigQueryからMaxComputeへのデータ移行

最終更新日:Jan 17, 2025

このトピックでは、インターネット経由でGoogle Cloud Platform (GCP) のBigQueryからAlibaba Cloud MaxComputeにデータを移行する方法について説明します。

前提条件

カテゴリ

プラットフォーム

要件

参照

環境とデータ

Google Cloudプラットフォーム

  • Google BigQueryサービスが有効化され、移行用の環境とデータセットが準備されます。

  • Google Cloud Storageサービスが有効化され、バケットが作成されます。

関連する環境とデータセットがない場合は、次の準備参照を参照してください。

Alibaba Cloud

  • MaxComputeおよびDataWorksサービスが有効化され、プロジェクトが作成されます。

    この例では、インドネシア (ジャカルタ) リージョンのMaxComputeプロジェクトが移行先として作成されます。

  • Object Storage Service (OSS) が有効化され、バケットが作成されます。

  • OSSのデータオンライン移行サービスが有効化されています。

関連する環境がない場合は、準備のために次のリファレンスを参照してください。

アカウント

Google Cloudプラットフォーム

Identity and Access Management (IAM) ユーザーが作成され、Google Cloud Storageにアクセスする権限が付与されます。

JSONメソッドのIAM権限

Alibaba Cloud

RAM (Resource Access Management) ユーザーとRAMロールが作成されます。 RAMユーザーには、OSSバケットの読み取りおよび書き込み権限とオンライン移行権限が付与されています。

RAMユーザーの作成STS権限付与

リージョン

Google Cloudプラットフォーム

非該当

非該当

Alibaba Cloud

OSSバケットとMaxComputeプロジェクトは同じリージョンにあります。

非該当

背景情報

次の図は、BigQueryからAlibaba Cloud MaxComputeにデータセットを移行するプロセスを示しています。Migration process

いいえ

説明

1

BigQueryからGoogle Cloud Storageにデータセットをエクスポートします。

2

OSSのデータオンライン移行サービスを使用して、Google Cloud StorageからOSSバケットにデータを移行します。

3

OSSバケットから同じリージョンのMaxComputeプロジェクトにデータを移行し、移行されたデータの整合性と正確性を検証します。

ステップ1: BigQueryからGoogle Cloud Storageへのデータセットのエクスポート

bqコマンドラインツールを使用してbq extractコマンドを実行し、BigQueryからGoogle Cloud Storageにデータセットをエクスポートします。

  1. Google Cloud Platformにログインし、移行するデータのバケットを作成します。 詳細については、「ストレージバケットの作成」をご参照ください。

    Storage bucket

  2. bqコマンドラインツールを使用して、TPC-DSデータセット内のテーブルのデータ定義言語 (DDL) スクリプトを照会し、そのスクリプトをオンプレミスのデバイスにダウンロードします。 詳細については、「information_SCHEMAを使用したテーブルメタデータの取得」をご参照ください。

    BigQueryは、テーブルのDDLスクリプトを照会するshow create tableなどのコマンドをサポートしていません。 BigQueryでは、組み込みのユーザー定義関数 (UDF) を使用して、データセット内のテーブルのDDLスクリプトをクエリできます。 次のコードは、DDLスクリプトの例を示しています。 DDL

  3. bqコマンドラインツールを使用して、bq extractコマンドを実行し、BigQueryデータセットのテーブルをGoogle Cloud Storageのターゲットバケットにエクスポートします。 操作、エクスポートされたデータの形式、および圧縮タイプの詳細については、「テーブルデータのエクスポート」をご参照ください。

    次のコードは、exportコマンドのサンプルを示しています。

    bq extract
    --destination_format AVRO 
    --compression SNAPPY
    tpcds_100gb.web_site
    gs://bucket_name/web_site/web_site-*.avro.snappy;
  4. バケットを表示し、データのエクスポート結果を確認します。

ステップ2: エクスポートされたデータをGoogle Cloud StorageからOSSに移行する

データオンライン移行サービスを使用して、Google Cloud StorageからOSSにデータを移行できます。 詳細については、「Google Cloud PlatformからOSSへのデータ移行」をご参照ください。 Data Online Migrationサービスはパブリックプレビュー中です。 サービスを使用する前に、カスタマーサービスに連絡してサービスを有効化する必要があります。

  1. 移行するファイルのサイズと数を見積もります。 gsutilツールを使用するか、ストレージログを確認して、Google Cloud Storageのバケット内のデータサイズを照会できます。 詳細については、「バケット情報の取得」をご参照ください。

  2. オプション: OSSにバケットがない場合は、OSSコンソールにログインし、移行したデータを保存するバケットを作成します。 詳細については、「バケットの作成」をご参照ください。

    OSS bucket

  3. オプション: RAMユーザーがいない場合は、RAMユーザーを作成し、そのRAMユーザーに関連する権限を付与します。

    1. RAMコンソールにログインし、RAMユーザーを作成します。 詳細については、「RAMユーザーの作成」をご参照ください。

    2. 新しく作成したRAMユーザーを検索し、[操作] 列の [権限の追加] をクリックします。 表示されるページで、AliyunOSSFullAccessおよびAliyunMGWFullAccessを選択し、[権限の付与] をクリックします。 権限付与プロセスが完了したら、[閉じる] をクリックします。 AliyunOSSFullAccess権限は、RAMユーザーがOSSバケットの読み取りと書き込みを許可します。 AliyunMGWFullAccess権限は、RAMユーザーにオンライン移行ジョブの実行を許可します。

    3. 左側のナビゲーションウィンドウで、[概要] をクリックします。 [概要] ページの [基本情報] セクションで、[ログインURL] リンクをクリックし、RAMユーザーの資格情報を使用してAlibaba Cloud管理コンソールにログインします。

  4. Google Cloud Platformで、プログラムによるアクセス方法を使用してGoogle Cloud Storageにアクセスするユーザーを作成します。 詳細については、「JSONメソッドのIAM権限」をご参照ください。

    1. IAM&管理コンソールにログインし、BigQueryにアクセスする権限を持つユーザーを見つけます。 [操作] 列で、Actions > [キーの作成] をクリックします。

    2. 表示されるダイアログボックスで、[JSON] を選択し、[作成] をクリックします。 JSONファイルをオンプレミスのデバイスに保存し、[閉じる] をクリックします。

    3. [サービスアカウントの作成] ウィザードで、[ロールの選択] をクリックし、[Cloud Storage] > [Storage Admin] を選択して、IAMユーザーにGoogle Cloud Storageへのアクセスを許可します。

  5. オンライン移行用のソースデータアドレスと宛先データアドレスを作成します。

    1. Alibaba Cloud Data Transportコンソールにログインします。 左側のナビゲーションウィンドウで、[データオンライン移行] > [データアドレス] をクリックします。

    2. [データアドレス] ページで、[データアドレスの作成] をクリックします。 [データアドレスの作成] パネルで、必要なパラメーターを設定し、[OK] をクリックします。 必要なパラメーターの詳細については、「データの移行」をご参照ください。

      • データソース Data source

        説明

        [キーファイル] フィールドに、手順4でダウンロードしたJSONファイルをアップロードします。

      • 宛先データアドレス Destination data address

        説明

        [Access Key Id] および [Access Key Secret] フィールドに、RAMユーザーのAccessKey IDとAccessKey secretを入力します。

  6. オンライン移行ジョブを作成します。

    1. 左側のナビゲーションウィンドウで、[移行ジョブ] をクリックします。

    2. [ファイル同期管理] ページで、[ジョブの作成] をクリックします。 ジョブの作成ウィザードで、必要なパラメーターを設定し、[作成] をクリックします。 必要なパラメーターの詳細については、「データの移行」をご参照ください。

      • ジョブ設定 Job configurations

      • パフォーマンスのチューニング Performance tuning

        説明

        [データサイズ] および [ファイル数] フィールドに、Google Cloud Platformから移行されたファイルのサイズと数を入力します。

    3. 作成した移行ジョブは自動的に実行されます。 [ジョブステータス] 列に [完了] が表示されている場合、移行ジョブは完了しています。

    4. 移行ジョブの [操作] 列で、[管理] をクリックして移行レポートを表示し、すべてのデータが移行されたことを確認します。

    5. にログインします。OSSコンソール.

    6. 左側のナビゲーションウィンドウで、[バケット] をクリックします。 [バケット] ページで、作成したバケットをクリックします。 バケットの詳細ページの左側のナビゲーションウィンドウで、[ファイル]> [ファイル] を選択して移行結果を表示します。

ステップ3: OSSバケットから同じリージョンのMaxComputeプロジェクトにデータを移行する

MaxComputeのLOADステートメントを実行して、OSSバケットから同じリージョンのMaxComputeプロジェクトにデータを移行できます。

LOADステートメントは、認証用のSecurity Token Service (STS) とAccessKeyをサポートしています。 認証にAccessKeyを使用する場合は、アカウントのAccessKey IDとAccessKey secretを平文で指定する必要があります。 STS認証は、AccessKey情報を公開しないため、非常に安全です。 このセクションでは、STS認証を例として使用して、データを移行する方法を示します。

  1. DataWorksまたはMaxComputeクライアントodpscmdの [アドホッククエリ] タブで、BigQueryデータセットのテーブルのDDLスクリプトを変更し、MaxComputeデータ型を指定して、移行されたデータをMaxComputeに格納する宛先テーブルを作成します。

    アドホッククエリの詳細については、「アドホッククエリ機能を使用したSQL文の実行 (オプション) 」をご参照ください。 次のコードは、設定例を示しています。

    CREATE OR REPLACE TABLE
    `****.tpcds_100gb.web_site`
    (
     web_site_sk INT64,
     web_site_id STRING,
     web_rec_start_date STRING,
     web_rec_end_date STRING,
     web_name STRING,
     web_open_date_sk INT64,
     web_close_date_sk INT64,
     web_class STRING,
     web_manager STRING,
     web_mkt_id INT64,
     web_mkt_class STRING,
     web_mkt_desc STRING,
     web_market_manager STRING,
     web_company_id INT64,
     web_company_name STRING,
     web_street_number STRING,
     web_street_name STRING,
     web_street_type STRING,
     web_suite_number STRING,
     web_city STRING,
     web_county STRING,
     web_state STRING,
     web_zip STRING,
     web_country STRING,
     web_gmt_offset FLOAT64,
     web_tax_percentage FLOAT64
    )
    
    Modify the INT64 and
    FLOAT64 fields to obtain the following DDL script:
    CREATE
    TABLE IF NOT EXISTS <your_maxcompute_project>.web_site_load
    (
    web_site_sk BIGINT,
    web_site_id STRING,
    web_rec_start_date STRING,
    web_rec_end_date STRING,
    web_name STRING,
    web_open_date_sk BIGINT,
    web_close_date_sk BIGINT,
    web_class STRING,
    web_manager STRING,
    web_mkt_id BIGINT,
    web_mkt_class STRING,
    web_mkt_desc STRING,
    web_market_manager STRING,
    web_company_id BIGINT,
    web_company_name STRING,
    web_street_number STRING,
    web_street_name STRING,`
    web_street_type STRING,
    web_suite_number STRING,
    web_city STRING,
    web_county STRING,
    web_state STRING,
    web_zip STRING,
    web_country STRING,
    web_gmt_offset DOUBLE,
    web_tax_percentage DOUBLE
    );

    次の表に、BigQueryデータ型とMaxComputeデータ型の間のマッピングを示します。

    BigQueryデータ型

    MaxComputeデータ型

    INT64

    BIGINT

    FLOAT64

    DOUBLE

    NUMERIC

    デシマルとダブル

    BOOL

    BOOLEAN

    STRING

    STRING

    BYTES

    VARCHAR

    日付

    日付

    日付時刻

    日付時刻

    時間

    日付時刻

    TIMESTAMP

    TIMESTAMP

    STRUCT

    STRUCT

    地理

    STRING

  2. オプション: RAMロールがない場合は、OSSアクセス権限を持つRAMロールを作成し、そのロールをRAMユーザーに割り当てます。 詳細については、「STS権限付与」をご参照ください。

  3. LOADステートメントを実行してOSSバケットからMaxComputeテーブルにすべてのデータをロードし、SELECTステートメントを実行してインポートされたデータを照会および検証します。 一度にロードできるテーブルは1つだけです。 複数のテーブルを読み込むには、loadステートメントを複数回実行する必要があります。 LOADステートメントの詳細については、「LOAD」をご参照ください。

    LOAD OVERWRITE TABLE web_site
    FROM LOCATION 'oss://oss-<your_region_id>-internal.aliyuncs.com/bucket_name/tpc_ds_100gb/web_site/' --The endpoint of the OSS bucket 
    ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe'
    WITH SERDEPROPERTIES ('odps.properties.rolearn'='<Your_RoleARN>','mcfed.parquet.compression'='SNAPPY')
    STORED AS AVRO;

    次のステートメントを実行して、インポートされたデータを照会および検証します。

    SELECT * FROM web_site;

    次の結果が返されます。Output

  4. MaxComputeに移行されたデータがBigQueryのデータと同じであることを確認します。 この検証は、テーブルの数、行の数、および一般的なジョブのクエリ結果に基づいて行われます。