Memigrasikan tabel terkelola Hive ke Google Cloud

Dokumen ini menunjukkan cara memigrasikan tabel terkelola Hive ke Google Cloud.

Anda dapat menggunakan konektor migrasi tabel terkelola Hive di BigQuery Data Transfer Service untuk memigrasikan tabel yang dikelola oleh metastore Hive dengan lancar, yang mendukung format Hive dan Iceberg dari lingkungan lokal dan cloud ke Google Cloud. Kami mendukung penyimpanan file di HDFS atau Amazon S3.

Dengan konektor migrasi tabel terkelola Hive, Anda dapat mendaftarkan tabel terkelola Hive dengan Dataproc Metastore, metastore BigLake, atau BigLake metastore Iceberg REST Catalog saat menggunakan Cloud Storage sebagai penyimpanan file.

Diagram berikut memberikan ringkasan proses migrasi tabel dari cluster Hadoop.

Ringkasan migrasi tabel dari data lake Hive ke BigQuery.

Batasan

Transfer tabel terkelola Hive tunduk pada batasan berikut:

  • Untuk memigrasikan tabel Apache Iceberg, Anda harus mendaftarkan tabel dengan metastore BigLake untuk mengizinkan akses tulis bagi mesin open source (seperti Apache Spark atau Flink), dan untuk mengizinkan akses baca bagi BigQuery.
  • Untuk memigrasikan tabel terkelola Hive, Anda harus mendaftarkan tabel dengan Dataproc Metastore untuk mengizinkan akses tulis bagi mesin open source, dan mengizinkan akses baca bagi BigQuery.
  • Anda harus menggunakan alat command line bq untuk memigrasikan tabel yang dikelola Hive ke BigQuery.

Sebelum memulai

Sebelum menjadwalkan transfer tabel terkelola Hive, Anda harus melakukan hal berikut:

Membuat file metadata untuk Apache Hive

Jalankan alat dwh-migration-dumper untuk mengekstraksi metadata untuk Apache Hive. Alat ini menghasilkan file bernama hive-dumper-output.zip ke bucket Cloud Storage, yang disebut dalam dokumen ini sebagai DUMPER_BUCKET.

Mengaktifkan API

Aktifkan API berikut di Google Cloud project Anda:

  • Data Transfer API
  • Storage Transfer API

Agen layanan dibuat saat Anda mengaktifkan Data Transfer API.

Konfigurasikan izin

  1. Buat akun layanan dan berikan peran Admin BigQuery (roles/bigquery.admin) ke akun tersebut. Akun layanan ini digunakan untuk membuat konfigurasi transfer.
  2. Agen layanan (P4SA) dibuat saat mengaktifkan Data Transfer API. Berikan peran berikut:

    • roles/metastore.metadataOwner
    • roles/storagetransfer.admin
    • roles/serviceusage.serviceUsageConsumer
    • roles/storage.objectAdmin
      • Jika Anda memigrasikan metadata untuk tabel BigLake Iceberg, Anda juga harus memberikan peran roles/bigquery.admin.
      • Jika Anda memigrasikan metadata ke Katalog REST Iceberg BigLake Metastore, Anda juga harus memberikan peran roles/biglake.admin.
  3. Berikan peran roles/iam.serviceAccountTokenCreator kepada agen layanan dengan perintah berikut:

    gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-bigquerydatatransfer.iam.gserviceaccount.com --role roles/iam.serviceAccountTokenCreator

Mengonfigurasi Storage Transfer Agent untuk data lake HDFS

Wajib jika file disimpan di HDFS. Untuk menyiapkan agen transfer penyimpanan yang diperlukan untuk transfer data lake HDFS, lakukan hal berikut:

  1. Konfigurasi izin untuk menjalankan agen transfer penyimpanan di cluster Hadoop Anda.
  2. Instal Docker di mesin agen lokal.
  3. Buat pool agen Storage Transfer Service di project Google Cloud Anda.
  4. Instal agen di komputer agen lokal Anda.

Mengonfigurasi izin Storage Transfer Service untuk Amazon S3

Wajib diisi jika file disimpan di Amazon S3. Transfer dari Amazon S3 adalah transfer tanpa agen, yang memerlukan izin tertentu. Untuk mengonfigurasi Storage Transfer Service untuk transfer Amazon S3, lakukan hal berikut:

  1. Konfigurasi izin transfer tanpa agen.
  2. Siapkan kredensial akses untuk AWS Amazon S3.
    • Catat ID kunci akses dan kunci akses rahasia setelah menyiapkan kredensial akses Anda.
  3. Tambahkan rentang IP yang digunakan oleh pekerja Storage Transfer Service ke daftar IP yang diizinkan jika project AWS Anda menggunakan pembatasan IP.

Menjadwalkan transfer tabel terkelola Hive

Pilih salah satu opsi berikut:

Konsol

  1. Buka halaman Transfer data di konsol Google Cloud .

    Buka Data transfers

  2. Klik Create transfer.

  3. Di bagian Jenis sumber, pilih Hive Managed Tables dari daftar Sumber.

  4. Untuk Location, pilih jenis lokasi, lalu pilih region.

  5. Di bagian Transfer config name, untuk Display name, masukkan nama untuk transfer data.

  6. Di bagian Opsi jadwal, lakukan tindakan berikut:

    • Dalam daftar Frekuensi berulang, pilih opsi untuk menentukan seberapa sering transfer data ini dijalankan. Untuk menentukan frekuensi pengulangan kustom, pilih Custom. Jika Anda memilih Sesuai permintaan, transfer ini akan berjalan saat Anda memicu transfer secara manual.
    • Jika berlaku, pilih Start now atau Start at set time, dan masukkan tanggal mulai dan waktu proses.
  7. Di bagian Detail sumber data, lakukan hal berikut:

    1. Untuk Pola nama tabel, tentukan tabel data lake HDFS yang akan ditransfer dengan memberikan nama tabel atau pola yang cocok dengan tabel di database HDFS. Anda harus menggunakan sintaksis ekspresi reguler Java untuk menentukan pola tabel. Misalnya:
      • db1..* cocok dengan semua tabel di db1.
      • db1.table1;db2.table2 cocok dengan table1 di db1 dan table2 di db2.
    2. Untuk BQMS discovery dump gcs path, masukkan jalur ke bucket yang berisi file hive-dumper-output.zip yang Anda buat saat membuat file metadata untuk Apache Hive.
    3. Pilih jenis Metastore dari menu drop-down:
      • DATAPROC_METASTORE: Pilih opsi ini untuk menyimpan metadata Anda di Dataproc Metastore. Anda harus memberikan URL untuk Dataproc Metastore di Dataproc metastore url.
      • BIGLAKE_METASTORE: Pilih opsi ini untuk menyimpan metadata Anda di metastore BigLake. Anda harus memberikan set data BigQuery di Set data BigQuery.
      • BIGLAKE_REST_CATALOG: Pilih opsi ini untuk menyimpan metadata Anda di katalog REST Iceberg metastore BigLake.
    4. Untuk Destination gcs path, masukkan jalur ke bucket Cloud Storage untuk menyimpan data yang dimigrasikan.

    5. Opsional: Untuk Akun layanan, masukkan akun layanan yang akan digunakan dengan transfer data ini. Akun layanan harus termasuk dalam projectGoogle Cloud yang sama dengan tempat konfigurasi transfer dan set data tujuan dibuat.

    6. Opsional: Anda dapat mengaktifkan Gunakan output terjemahan untuk menyiapkan jalur dan database Cloud Storage yang unik untuk setiap tabel yang dimigrasikan. Untuk melakukannya, berikan jalur ke folder Cloud Storage yang berisi hasil terjemahan di kolom BQMS translation output gcs path. Untuk mengetahui informasi selengkapnya, lihat Mengonfigurasi output Terjemahan.

      • Jika Anda menentukan jalur Cloud Storage output Terjemahan, jalur Cloud Storage tujuan dan set data BigQuery akan diambil dari file di jalur tersebut.
    7. Untuk Jenis penyimpanan, pilih salah satu opsi berikut:

      • HDFS: Pilih opsi ini jika penyimpanan file Anda adalah HDFS. Di kolom STS agent pool name, Anda harus memberikan nama agent pool yang Anda buat saat mengonfigurasi Agen Transfer Storage.
      • S3: Pilih opsi ini jika penyimpanan file Anda adalah Amazon S3. Di kolom Access key ID dan Secret access key, Anda harus memberikan ID kunci akses dan kunci akses rahasia yang Anda buat saat menyiapkan kredensial akses.

bq

Untuk menjadwalkan transfer tabel yang dikelola Hive, masukkan perintah bq mk dan berikan flag pembuatan transfer --transfer_config:

  bq mk --transfer_config
  --data_source=hadoop
  --display_name='TRANSFER_NAME'
  --service_account_name='SERVICE_ACCOUNT'
  --project_id='PROJECT_ID'
  --location='REGION'
  --params='{"table_name_patterns":"LIST_OF_TABLES",
    "table_metadata_path":"gs://DUMPER_BUCKET/hive-dumper-output.zip",
    "target_gcs_file_path":"gs://MIGRATION_BUCKET",
    "metastore":"METASTORE",
    "destination_dataproc_metastore":"DATAPROC_METASTORE_URL",
    "destination_bigquery_dataset":"BIGLAKE_METASTORE_DATASET",
    "translation_output_gcs_path":"gs://TRANSLATION_OUTPUT_BUCKET/metadata/config/default_database/",
    "storage_type":"STORAGE_TYPE",
    "agent_pool_name":"AGENT_POOL_NAME",
    "aws_access_key_id":"AWS_ACCESS_KEY_ID",
    "aws_secret_access_key":"AWS_SECRET_ACCESS_KEY"
    }'

Ganti kode berikut:

  • TRANSFER_NAME: nama tampilan untuk konfigurasi transfer. Nama transfer dapat berupa nilai apa pun yang memungkinkan Anda mengidentifikasi transfer jika perlu mengubahnya nanti.
  • SERVICE_ACCOUNT: nama akun layanan yang digunakan untuk mengautentikasi transfer Anda. Akun layanan harus dimiliki oleh project_id yang sama yang digunakan untuk membuat transfer dan harus memiliki semua izin yang diperlukan.
  • PROJECT_ID: Google Cloud Project ID Anda. Jika --project_id tidak diberikan untuk menentukan project tertentu, project default akan digunakan.
  • REGION: lokasi konfigurasi transfer ini.
  • LIST_OF_TABLES: daftar entity yang akan ditransfer. Gunakan spesifikasi penamaan hierarkis - database.table. Kolom ini mendukung ekspresi reguler RE2 untuk menentukan tabel. Contoh:
    • db1..*: menentukan semua tabel dalam database
    • db1.table1;db2.table2: daftar tabel
  • DUMPER_BUCKET: bucket Cloud Storage yang berisi file hive-dumper-output.zip.
  • MIGRATION_BUCKET: Jalur GCS tujuan tempat semua file pokok akan dimuat.
  • METASTORE: Jenis metastore yang akan dimigrasikan. Tetapkan ini ke salah satu nilai berikut:
    • DATAPROC_METASTORE: Untuk mentransfer metadata ke Dataproc Metastore.
    • BIGLAKE_METASTORE: Untuk mentransfer metadata ke metastore BigLake.
    • BIGLAKE_REST_CATALOG: Untuk mentransfer metadata ke Katalog REST Iceberg BigLake Metastore.
  • DATAPROC_METASTORE_URL: URL Dataproc Metastore Anda. Wajib jika metastore adalah DATAPROC_METASTORE.
  • BIGLAKE_METASTORE_DATASET: Set data BigQuery untuk metastore BigLake Anda. Wajib jika metastore adalah BIGLAKE_METASTORE.
  • TRANSLATION_OUTPUT_BUCKET: (Opsional) Tentukan bucket Cloud Storage untuk output terjemahan. Untuk mengetahui informasi selengkapnya, lihat Menggunakan output Terjemahan.
  • STORAGE_TYPE: Tentukan penyimpanan file pokok untuk tabel Anda. Jenis yang didukung adalah HDFS dan S3.
  • AGENT_POOL_NAME: nama kumpulan agen yang digunakan untuk membuat agen. Wajib jika storage_type adalah HDFS.
  • AWS_ACCESS_KEY_ID: ID kunci akses dari kredensial akses. Wajib jika storage_type adalah S3.
  • AWS_SECRET_ACCESS_KEY: kunci akses rahasia dari kredensial akses. Wajib jika storage_type adalah S3.

Jalankan perintah ini untuk membuat konfigurasi transfer dan memulai transfer tabel terkelola Hive. Transfer dijadwalkan untuk berjalan setiap 24 jam secara default, tetapi dapat dikonfigurasi dengan opsi penjadwalan transfer.

Setelah transfer selesai, tabel Anda di cluster Hadoop akan dimigrasikan ke MIGRATION_BUCKET.

Opsi penyerapan data

Bagian berikut memberikan informasi selengkapnya tentang cara mengonfigurasi transfer tabel yang dikelola Hive.

Transfer inkremental

Jika konfigurasi transfer disiapkan dengan jadwal berulang, setiap transfer berikutnya akan memperbarui tabel di Google Cloud dengan pembaruan terbaru yang dilakukan pada tabel sumber. Misalnya, semua operasi penyisipan, penghapusan, atau pembaruan dengan perubahan skema tercermin dalam Google Cloud dengan setiap transfer.

Opsi penjadwalan transfer

Secara default, transfer dijadwalkan untuk berjalan setiap 24 jam. Untuk mengonfigurasi seberapa sering transfer dijalankan, tambahkan flag --schedule ke konfigurasi transfer, dan tentukan jadwal transfer menggunakan sintaksis schedule. Transfer tabel terkelola Hive harus memiliki jeda minimal 24 jam antar-transfer.

Untuk transfer satu kali, Anda dapat menambahkan flag end_time ke konfigurasi transfer agar hanya menjalankan transfer satu kali.

Mengonfigurasi output Terjemahan

Anda dapat mengonfigurasi jalur dan database Cloud Storage yang unik untuk setiap tabel yang dimigrasikan. Untuk melakukannya, lakukan langkah-langkah berikut untuk membuat file YAML pemetaan tabel yang dapat Anda gunakan dalam konfigurasi transfer.

  1. Buat file YAML konfigurasi (dengan akhiran config.yaml) di DUMPER_BUCKET yang berisi hal berikut:

        type: object_rewriter
        relation:
        - match:
            relationRegex: ".*"
          external:
            location_expression: "'gs://MIGRATION_BUCKET/' + table.schema + '/' + table.name"
    • Ganti MIGRATION_BUCKET dengan nama bucket Cloud Storage yang menjadi tujuan file tabel yang dimigrasikan. Kolom location_expression adalah ekspresi common expression language (CEL).
  2. Buat file YAML konfigurasi lain (dengan akhiran config.yaml) di DUMPER_BUCKET yang berisi hal berikut:

        type: experimental_object_rewriter
        relation:
          - match:
              schema: SOURCE_DATABASE
            outputName:
              database: null
              schema: TARGET_DATABASE
    • Ganti SOURCE_DATABASE dan TARGET_DATABASE dengan nama database sumber dan database Dataproc Metastore atau set data BigQuery, bergantung pada metastore yang dipilih. Pastikan set data BigQuery ada jika Anda mengonfigurasi database untuk metastore BigLake.

    Untuk mengetahui informasi selengkapnya tentang YAML konfigurasi ini, lihat Panduan untuk membuat file YAML konfigurasi.

  3. Buat file YAML pemetaan tabel menggunakan perintah berikut:

    curl -d '{
      "tasks": {
          "string": {
            "type": "HiveQL2BigQuery_Translation",
            "translation_details": {
                "target_base_uri": "TRANSLATION_OUTPUT_BUCKET",
                "source_target_mapping": {
                  "source_spec": {
                      "base_uri": "DUMPER_BUCKET"
                  }
                },
                "target_types": ["metadata"]
            }
          }
      }
      }' \
      -H "Content-Type:application/json" \
      -H "Authorization: Bearer TOKEN" -X POST https://bigquerymigration.googleapis.com/v2alpha/projects/PROJECT_ID/locations/LOCATION/workflows

    Ganti kode berikut:

    • TRANSLATION_OUTPUT_BUCKET: (Opsional) Tentukan bucket Cloud Storage untuk output terjemahan. Untuk mengetahui informasi selengkapnya, lihat Menggunakan output Terjemahan.
    • DUMPER_BUCKET: URI dasar untuk bucket Cloud Storage yang berisi file YAML hive-dumper-output.zip dan konfigurasi.
    • TOKEN: token OAuth. Anda dapat membuatnya di command line dengan perintah gcloud auth print-access-token.
    • PROJECT_ID: project untuk memproses terjemahan.
    • LOCATION: lokasi tempat tugas diproses. Misalnya eu atau us.
  4. Pantau status tugas ini. Setelah selesai, file pemetaan akan dibuat untuk setiap tabel dalam database di jalur yang telah ditentukan sebelumnya di TRANSLATION_OUTPUT_BUCKET.

Mengatur eksekusi dumper menggunakan perintah cron

Anda dapat mengotomatiskan transfer inkremental menggunakan tugas cron untuk menjalankan alat dwh-migration-dumper. Dengan mengotomatiskan ekstraksi metadata, Anda memastikan bahwa dump terbaru dari Hadoop tersedia untuk menjalankan transfer inkremental berikutnya.

Sebelum memulai

Sebelum menggunakan skrip otomatisasi ini, selesaikan prasyarat penginstalan dumper. Untuk menjalankan skrip, Anda harus menginstal alat dwh-migration-dumper dan mengonfigurasi izin IAM yang diperlukan.

Menjadwalkan otomatisasi

  1. Simpan skrip berikut ke file lokal. Skrip ini dirancang untuk dikonfigurasi dan dieksekusi oleh daemon cron guna mengotomatiskan proses ekstraksi dan upload output dumper:

    #!/bin/bash
    
    # Exit immediately if a command exits with a non-zero status.
    set -e
    # Treat unset variables as an error when substituting.
    set -u
    # Pipelines return the exit status of the last command to exit with a non-zero status.
    set -o pipefail
    
    # These values are used if not overridden by command-line options.
    DUMPER_EXECUTABLE="DUMPER_PATH/dwh-migration-dumper"
    GCS_BASE_PATH="gs://PATH_TO_DUMPER_OUTPUT"
    LOCAL_BASE_DIR="LOCAL_BASE_DIRECTORY_PATH"
    
    # Function to display usage information
    usage() {
      echo "Usage: $0 [options]"
      echo ""
      echo "Runs the dwh-migration-dumper tool and uploads its output to provided GCS path."
      echo ""
      echo "Options:"
      echo "  --dumper-executable   The full path to the dumper executable. (Required)"
      echo "  --gcs-base-path       The base GCS path for output files. (Required)"
      echo "  --local-base-dir      The local base directory for logs and temp files. (Required)"
      echo "  -h, --help                  Display this help message and exit."
      exit 1
    }
    
    # This loop processes command-line options and overrides the default configuration.
    while [[ "$#" -gt 0 ]]; do
      case $1 in
          --dumper-executable)
              DUMPER_EXECUTABLE="$2"
              shift # past argument
              shift # past value
              ;;
          --gcs-base-path)
              GCS_BASE_PATH="$2"
              shift
              shift
              ;;
          --local-base-dir)
              LOCAL_BASE_DIR="$2"
              shift
              shift
              ;;
          -h|--help)
              usage
              ;;
          *)
              echo "Unknown option: $1"
              usage
              ;;
      esac
    done
    
    # This runs AFTER parsing arguments to ensure no placeholder values are left.
    if [[ "$DUMPER_EXECUTABLE" == "DUMPER_PATH"* || "$GCS_BASE_PATH" == "gs://PATH_TO_DUMPER_OUTPUT" || "$LOCAL_BASE_DIR" == "LOCAL_BASE_DIRECTORY_PATH" ]]; then
      echo "ERROR: One or more configuration variables have not been set. Please provide them as command-line arguments or edit the script." >&2
      echo "Run with --help for more information." >&2
      exit 1
    fi
    
    # Create unique timestamp and directories for this run
    EPOCH=$(date +%s)
    LOCAL_LOG_DIR="${LOCAL_BASE_DIR}/logs"
    mkdir -p "${LOCAL_LOG_DIR}" # Ensures the base and logs directories exist
    
    # Define the unique log and zip file path for this run
    LOG_FILE="${LOCAL_LOG_DIR}/dumper_execution_${EPOCH}.log"
    ZIP_FILE_NAME="hive-dumper-output_${EPOCH}.zip"
    LOCAL_ZIP_PATH="${LOCAL_BASE_DIR}/${ZIP_FILE_NAME}"
    
    echo "Script execution started. All subsequent output will be logged to: ${LOG_FILE}"
    
    # --- Helper Functions ---
    
    log() { echo "$(date '+%Y-%m-%d %H:%M:%S') - $@" >> "${LOG_FILE}"}
    
    cleanup() {
      local path_to_remove="$1"
      log "Cleaning up local file/directory: ${path_to_remove}..."
      rm -rf "${path_to_remove}"
    }
    
    # This function is called when the script exits to ensure cleanup and logging happen reliably.
    handle_exit() {
      local exit_code=$?
      # Only run the failure logic if the script is exiting with an error
      if [[ ${exit_code} -ne 0 ]]; then
          log "ERROR: Script is exiting with a failure code (${exit_code})."
          local gcs_log_path_on_failure="${GCS_BASE_PATH}/logs/$(basename "${LOG_FILE}")"
          log "Uploading log file to ${gcs_log_path_on_failure} for debugging..."
          # Attempt to upload the log file on failure, but don't let this command cause the script to exit.
          gsutil cp "${LOG_FILE}" "${gcs_log_path_on_failure}" > /dev/null 2>&1 || log "WARNING: Failed to upload log file to GCS."
    
      else
          # SUCCESS PATH
          log "Script finished successfully. Now cleaning up local zip file...."
          # Clean up the local zip file ONLY on success
          cleanup "${LOCAL_ZIP_PATH}"
      fi
    
      log "*****Script End*****"
      exit ${exit_code}
    }
    
    # Trap the EXIT signal to run the handle_exit function, ensuring cleanup always happens.
    trap handle_exit EXIT
    
    # Validates the dumper log file based on a strict set of rules.
    validate_dumper_output() {
      local log_file_to_check="$1"
    
      # Check for the specific success message from the dumper tool.
      if grep -q "Dumper execution: SUCCEEDED" "${log_file_to_check}"; then
          log "Validation Successful: Found 'Dumper execution: SUCCEEDED' message."
          return 0 # Success
      else
          log "ERROR: Validation failed. The 'Dumper execution: SUCCEEDED' message was not found."
          return 1 # Failure
      fi
    }
    
    # --- Main Script Logic ---
    
    log "*****Script Start*****"
    log "Dumper Executable: ${DUMPER_EXECUTABLE}"
    log "GCS Base Path: ${GCS_BASE_PATH}"
    log "Local Base Directory: ${LOCAL_BASE_DIR}"
    
    # Use an array to build the command safely
    dumper_command_args=(
      "--connector" "hiveql"
      "--output" "${LOCAL_ZIP_PATH}"
    )
    
    log "Starting dumper tool execution..."
    log "COMMAND: ${DUMPER_EXECUTABLE} ${dumper_command_args[*]}"
    
    "${DUMPER_EXECUTABLE}" "${dumper_command_args[@]}" >> "${LOG_FILE}" 2>&1
    
    log "Dumper process finished."
    
    # Validate the output from the dumper execution for success or failure.
    validate_dumper_output "${LOG_FILE}"
    
    # Upload the ZIP file to GCS
    gcs_zip_path="${GCS_BASE_PATH}/${ZIP_FILE_NAME}"
    log "Uploading ${LOCAL_ZIP_PATH} to ${gcs_zip_path}..."
    
    if [ ! -f "${LOCAL_ZIP_PATH}" ]; then
      log "ERROR: Expected ZIP file ${LOCAL_ZIP_PATH} not found after dumper execution."
      # The script will exit here with an error code, and the trap will run.
      exit 1
    fi
    
    gsutil cp "${LOCAL_ZIP_PATH}" "${gcs_zip_path}" >> "${LOG_FILE}" 2>&1
    log "Upload to GCS successful."
    
    # The script will now exit with code 0. The trap will call cleanup and log the script end.
  2. Jalankan perintah berikut agar skrip dapat dieksekusi:

    chmod +x PATH_TO_SCRIPT
  3. Jadwalkan skrip menggunakan crontab, dengan mengganti variabel dengan nilai yang sesuai untuk tugas Anda. Tambahkan entri untuk menjadwalkan tugas. Contoh berikut menjalankan skrip setiap hari pada pukul 02.30:

    # Run the Hive dumper daily at 2:30 AM for incremental BigQuery transfer.
    30 2 * * * PATH_TO_SCRIPT \
      --dumper-executable PATH_TO_DUMPER_EXECUTABLE \
      --gcs-base-path GCS_PATH_TO_UPLOAD_DUMPER_OUTPUT \
      --local-base-dir LOCAL_PATH_TO_SAVE_INTERMEDIARY_FILES
  4. Saat membuat transfer, pastikan kolom table_metadata_path disetel ke jalur Cloud Storage yang sama dengan yang Anda konfigurasi untuk GCS_PATH_TO_UPLOAD_DUMPER_OUTPUT. Ini adalah jalur yang berisi file ZIP output dumper.

Pertimbangan Penjadwalan

Untuk menghindari data yang tidak valid, dump metadata harus siap sebelum transfer terjadwal Anda dimulai. Konfigurasi frekuensi tugas cron yang sesuai.

Sebaiknya lakukan beberapa uji coba skrip secara manual untuk menentukan rata-rata waktu yang dibutuhkan alat dumper untuk menghasilkan outputnya. Gunakan pengaturan waktu ini untuk menetapkan jadwal cron yang mendahului transfer DTS Anda dengan aman dan memastikan keaktualan.

Memantau transfer tabel terkelola Hive

Setelah menjadwalkan transfer tabel yang dikelola Hive, Anda dapat memantau tugas transfer dengan perintah alat command line bq. Untuk mengetahui informasi tentang pemantauan tugas transfer, lihat Melihat transfer Anda.

Melacak status migrasi tabel

Anda juga dapat menjalankan alat dwh-dts-status untuk memantau status semua tabel yang ditransfer dalam konfigurasi transfer atau database tertentu. Anda juga dapat menggunakan alat dwh-dts-status untuk mencantumkan semua konfigurasi transfer dalam sebuah project.

Sebelum memulai

Sebelum Anda dapat menggunakan alat dwh-dts-status, lakukan hal berikut:

  1. Dapatkan alat dwh-dts-status dengan mendownload paket dwh-migration-tool dari repositori GitHub dwh-migration-tools.

  2. Lakukan autentikasi akun Anda ke Google Cloud dengan perintah berikut:

    gcloud auth application-default login
    

    Untuk mengetahui informasi selengkapnya, lihat Cara kerja Kredensial Default Aplikasi.

  3. Verifikasi bahwa pengguna memiliki peran bigquery.admin dan logging.viewer. Untuk mengetahui informasi selengkapnya tentang peran IAM, lihat Referensi kontrol akses.

Mencantumkan semua konfigurasi transfer dalam project

Untuk mencantumkan semua konfigurasi transfer dalam sebuah project, gunakan perintah berikut:

  ./dwh-dts-status --list-transfer-configs --project-id=[PROJECT_ID] --location=[LOCATION]

Ganti kode berikut:

  • PROJECT_ID : ID Google Cloud project yang menjalankan transfer.
  • LOCATION : lokasi tempat konfigurasi transfer dibuat.

Perintah ini menampilkan tabel dengan daftar nama dan ID konfigurasi transfer.

Melihat status semua tabel dalam konfigurasi

Untuk melihat status semua tabel yang disertakan dalam konfigurasi transfer, gunakan perintah berikut:

  ./dwh-dts-status --list-status-for-config --project-id=[PROJECT_ID] --config-id=[CONFIG_ID] --location=[LOCATION]

Ganti kode berikut:

  • PROJECT_ID: ID Google Cloud project yang menjalankan transfer.
  • LOCATION: lokasi tempat konfigurasi transfer dibuat.
  • CONFIG_ID: ID konfigurasi transfer yang ditentukan.

Perintah ini menghasilkan tabel dengan daftar tabel, dan status transfernya, dalam konfigurasi transfer yang ditentukan. Status transfer dapat berupa salah satu nilai berikut: PENDING, RUNNING, SUCCEEDED, FAILED, CANCELLED.

Melihat status semua tabel dalam database

Untuk melihat status semua tabel yang ditransfer dari database tertentu, gunakan perintah berikut:

  ./dwh-dts-status --list-status-for-database --project-id=[PROJECT_ID] --database=[DATABASE]

Ganti kode berikut:

  • PROJECT_ID: ID Google Cloud project yang menjalankan transfer.
  • DATABASE:nama database yang ditentukan.

Perintah ini menampilkan tabel dengan daftar tabel, dan status transfernya, dalam database yang ditentukan. Status transfer dapat berupa salah satu nilai berikut: PENDING, RUNNING, SUCCEEDED, FAILED, CANCELLED.