Menjalankan Mainframe Connector dalam mode mandiri

Halaman ini membahas cara menginstal Mainframe Connector di Cloud Run, mentranskode data, menyimpannya ke BigQuery, dan mengekspornya dari BigQuery.

Mainframe Connector versi 5.13.0 dan yang lebih baru mendukung menjalankan Mainframe Connector sebagai tugas mandiri di Google Cloud. Fitur ini memungkinkan Anda menjalankan Mainframe Connector sebagai tugas batch dalam container, misalnya, sebagai tugas Cloud Run, tugas Google Kubernetes Engine, atau dalam container Docker. Opsi ini membantu Anda menghindari penginstalan Mainframe Connector secara lokal di mainframe, dan memudahkan Anda mengintegrasikan penguraian file metode akses berurutan (QSAM) antrean mainframe ke alur kerja ekstrak, transformasi, dan pemuatan (ETL) yang ada.

Saat menggunakan Mainframe Connector versi mandiri, Anda harus menyiapkan alur kerja ETL yang memuat file QSAM ke Google Cloud sendiri.

Sebelum memulai

  • Men-deploy Mainframe Connector di Cloud Run.
  • Buat akun layanan atau identifikasi akun layanan yang ada untuk digunakan dengan Mainframe Connector. Akun layanan ini harus memiliki izin untuk mengakses bucket Cloud Storage, set data BigQuery, dan resource Google Cloud lainnya yang ingin Anda gunakan.
  • Pastikan akun layanan yang Anda buat diberi peran Cloud Run Invoker.
  • Pastikan data mainframe sudah tersedia di Google Cloud sebagai file QSAM.

Mentranskode data menggunakan Mainframe Connector dalam mode mandiri di Cloud Run

Untuk mentranskode data menggunakan Mainframe Connector dalam mode mandiri, gunakan langkah-langkah berikut:

  1. Buat file YAML dengan perintah untuk membaca set data Anda, transkode ke format ORC, lalu upload ke Cloud Storage. Set data input harus berupa file QSAM dengan panjang data tetap atau variabel. Anda dapat menggunakan contoh file YAML berikut untuk membaca set data, mentranskodenya ke format ORC, dan menguploadnya ke Cloud Storage.

    Dalam contoh berikut, baca data dari set data INFILE, dan tata letak data dari COPYBOOK DD.

    environmentVariables:
    - name: "INFILE"
      value: <var>"INFILE"</var>
    - name: "INFILE_DSN"
      value: <var>"INFILE_DSN"</var>
    - name: "GCSDSNURI"
      value: <var>"INFILE_DSN_FILEPATH"</var>
    - name: "COPYBOOK"
      value: <var>"COPYBOOK_FILEPATH"</var>
    - name: "LOG_PROJECT"
      value: <var>"LOG_PROJECT"</var>
    - name: "IBM_JAVA_OPTIONS"
      value: "-XX:+UseContainerSupport"
    command:
      gsutil cp gs://outputbucket/output
      --parallelism 8
      --maxChunkSize "512Mib"
      --parser_type=copybook
    

    Ganti kode berikut:

    • INFILE: Nama file input.
    • INFILE_DSN: Nama file Nama Sumber Data (DSN) input.
    • INFILE_DSN_FILEPATH: Jalur ke file DSN input.
    • COPYBOOK_FILEPATH: Jalur ke DD copybook.
    • LOG_PROJECT: Nama project log.

    Berikut adalah contoh file YAML:

      environmentVariables:
      - name: "INFILE"
        value: "input.dat"
      - name: "INFILE_DSN"
        value: "input.dat"
      - name: "GCSDSNURI"
        value: "gs://inputbucket/inputfolder"
      - name: "COPYBOOK"
        value: "gs://inputbucket/copybook.cpy"
      - name: "LOG_PROJECT"
        value: "the log project"
      - name: "IBM_JAVA_OPTIONS"
        value: "-XX:+UseContainerSupport"
      command:
        gsutil cp gs://outputbucket/output
        --parallelism 8
        --maxChunkSize "512Mib"
        --parser_type=copybook
    

    Untuk mengetahui daftar lengkap variabel lingkungan yang didukung oleh Mainframe Connector, lihat Variabel lingkungan.

    Jika ingin mencatat perintah yang dieksekusi selama proses ini, Anda dapat mengaktifkan statistik pemuatan.

  2. Buat file job.yaml dengan perintah berikut.

    kind: Job
    metadata:
      name: JOB
    spec:
      template:
        spec:
          template:
            spec:
              containers:
              - image: IMAGE
                command:
                - bash
                - /opt/mainframe-connector/standalone.sh
                - --argsFrom
                - LOCATION_OF_THE_COMMAND_YAML_FILE
    

    Ganti kode berikut:

    • JOB dengan nama tugas Cloud Run Anda. Nama tugas harus terdiri dari 49 karakter atau kurang dan harus unik per region dan project.
    • IMAGE dengan URL image container tugas, misalnya, us-docker.pkg.dev/cloudrun/container/job:latest.
    • LOCATION_OF_THE_COMMAND_YAML_FILE dengan lokasi file YAML yang Anda buat di langkah sebelumnya.
  3. Deploy tugas baru menggunakan perintah berikut:

    gcloud run jobs replace job.yaml
    
  4. Jalankan tugas menggunakan perintah berikut:

    gcloud run jobs execute JOB_NAME

    Ganti JOB_NAME dengan nama tugas.

Untuk mengetahui informasi selengkapnya tentang cara membuat dan menjalankan tugas Cloud Run, lihat Membuat tugas baru dan Menjalankan tugas.

Mengekspor tabel BigQuery ke set data Mainframe

Anda dapat mengekspor tabel BigQuery ke set data Mainframe dengan membuat file YAML yang menjalankan pembacaan SQL dari file DD QUERY, dan mengekspor set data yang dihasilkan ke Cloud Storage sebagai file biner, seperti berikut.

Langkah-langkah untuk membuat dan menjalankan tugas Cloud Run sama seperti yang disebutkan di bagian Mentranskode data menggunakan Mainframe Connector dalam mode mandiri di Cloud Run. Satu-satunya perbedaan adalah petunjuk yang disebutkan dalam file YAML.

environmentVariables:
- name: "COPYBOOK"
  value: "<var>COPYBOOK_FILEPATH</var>"
- name: "LOG_PROJECT"
  value: "<var>LOG_PROJECT</var>"
- name: "IBM_JAVA_OPTIONS"
  value: "-XX:+UseContainerSupport"
command:
  bq export --project_id="<var>PROJECT_NAME</var>" --location=<var>LOCATION</var> --sql="select * from project.dataset.table" --bucket="<var>BUCKET</var>"

Ganti kode berikut:

  • COPYBOOK_FILEPATH: Jalur ke DD copybook.
  • LOG_PROJECT: Nama project log.
  • PROJECT_NAME: Nama project tempat Anda ingin menjalankan kueri.
  • LOCATION: Lokasi tempat kueri akan dijalankan. Sebaiknya jalankan kueri di lokasi yang dekat dengan data.
  • BUCKET: Bucket Cloud Storage yang akan berisi file biner output.

Berikut adalah contoh file YAML:

environmentVariables:
- name: "COPYBOOK"
  value: "gs://inputbucket/copybook.cpy"
- name: "LOG_PROJECT"
  value: "the log project"
- name: "IBM_JAVA_OPTIONS"
  value: "-XX:+UseContainerSupport"
command:
  bq export --project_id="<var>PROJECT_NAME</var>" --location=US --sql="select * from project.dataset.table" --bucket="<var>BUCKET</var>"