Memindahkan data yang di-transcoding secara lokal di mainframe ke Google Cloud

Halaman ini membahas cara melakukan transcoding data mainframe secara lokal di mainframe ke format Optimized Row Columnar (ORC), dan kemudian memindahkan konten ke BigQuery.

{i>Transcoding<i} adalah proses konversi informasi dari satu bentuk kode ke representasi lain, dalam hal ini ke ORC. ORC adalah open source format data berorientasi kolom yang banyak digunakan dalam ekosistem Apache Hadoop, dan didukung oleh BigQuery.

Sebelum memulai

Menginstal Mainframe Connector ke set data berpartisi mainframe apa pun yang ingin Anda gunakan sebagai pustaka prosedur (PROCLIB).

Memindahkan data yang di-transcoding secara lokal di mainframe ke Google Cloud

Untuk melakukan transcoding data secara lokal di mainframe, lalu memindahkannya ke BigQuery, Anda harus melakukan tugas berikut:

  1. Membaca dan melakukan transcoding set data pada mainframe, lalu menguploadnya ke Cloud Storage dalam format ORC. Transcoding dilakukan selama operasi cp. tempat {i>mainframe extended coded decimal interchange code<i} (EBCDIC) dikonversi ke format ORC di UTF-8 selama proses penyalinan bucket Cloud Storage.
  2. Muat set data ke tabel BigQuery.
  3. (Opsional) Jalankan kueri SQL di tabel BigQuery.
  4. (Opsional) Mengekspor data dari BigQuery kembali ke mainframe.

Untuk melakukan tugas ini, gunakan langkah-langkah berikut:

  1. Membuat tugas untuk membaca set data di mainframe Anda dan melakukan transcoding ke ORC format, sebagai berikut. Baca data dari set data INFILE, dan tata letak kumpulan data dari DDBOOK COPYBOOK. Set data input harus berupa antrian secara berurutan (QSAM) dengan panjang kumpulan data tetap atau variabel.

    //STEP01 EXEC BQSH
    //INFILE DD DSN=<HLQ>.DATA.FILENAME,DISP=SHR
    //COPYBOOK DD DISP=SHR,DSN=<HLQ>.COPYBOOK.FILENAME
    //STDIN DD *
    BUCKET=BUCKET_NAME
    gsutil cp --replace gs://$BUCKET/tablename.orc
    /*
    

    Ganti kode berikut:

    • BUCKET_NAME: nama bucket Cloud Storage tempat Anda ingin menyalin data mainframe.

    Agar tidak menentukan variabel seperti project ID dan nama bucket di setiap tugas prosedur {i>control language<i} (JCL), Anda dapat menambahkannya di PROCLIB BQSH dan merujuk mereka ke beberapa prosedur JCL sebagai variabel lingkungan. Pendekatan ini juga membantu memberikan transisi yang lancar antara lingkungan produksi dan non-produksi, karena variabel khusus lingkungan ditetapkan di PROCLIB BQSH lingkungan. Untuk mengetahui daftar lengkap variabel lingkungan didukung oleh Mainframe Connector, lihat Variabel lingkungan.

    Dalam contoh ini, input standar (STDIN) disediakan sebagai data dalam streaming ke STDIN DD. Atau, Anda dapat memberikan input ini menggunakan nama sumber data (DSN), yang memudahkan pengelolaan penggantian simbol.

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

  2. Membuat dan mengirim tugas pemuatan BigQuery yang memuat partisi file ORC dari my_table.orc ke MY_DATASET.MY_TABLE, sebagai mengikuti.

    Example JCL
    //STEP02 EXEC BQSH
    //STDIN DD *
    PROJECT=PROJECT_NAME
    bq load --project_id=$PROJECT \
      myproject:DATASET.TABLE \
      gs://bucket/tablename.orc/*
    /*
    

    Ganti kode berikut:

    • PROJECT_NAME: nama project tempat Anda akan mengeksekusi kueri.
  3. (Opsional) Buat dan kirim tugas kueri BigQuery yang menjalankan pembacaan SQL dari file DD QUERY. Biasanya, kueri akan berupa pernyataan MERGE atau SELECT INTO DML yang menghasilkan transformasi tabel BigQuery. Catatan {i>Mainframe Connector<i} membuat log dalam metrik tugas tetapi tidak menulis kueri hasil ke sebuah file.

    Anda dapat melakukan kueri BigQuery dengan berbagai cara - inline, dengan menggunakan DD, atau dengan {i>dataset<i} terpisah menggunakan DSN.

    Example JCL
    //STEP03 EXEC BQSH
    //QUERY DD DSN=<HLQ>.QUERY.FILENAME,DISP=SHR
    //STDIN DD *
    PROJECT=PROJECT_NAME
    LOCATION=LOCATION
    bq query --project_id=$PROJECT \
    --location=$LOCATION/*
    /*
    

    Ganti kode berikut:

    • PROJECT_NAME: nama project tempat Anda ingin menjalankan kueri.
    • LOCATION: Lokasi tempat kueri berada telah dijalankan. Sebaiknya jalankan kueri di lokasi yang dekat dengan layanan otomatis dan data skalabel.
  4. (Opsional) Buat dan kirim tugas ekspor yang menjalankan pembacaan SQL dari File DD QUERY, dan ekspor {i>dataset<i} yang dihasilkan ke {i> mainframe<i} sebagai file biner.

    Example JCL
    //STEP04 EXEC BQSH
    //OUTFILE DD DSN=<HLQ>.DATA.FILENAME,DISP=SHR
    //COPYBOOK DD DISP=SHR,DSN=<HLQ>.COPYBOOK.FILENAME
    //QUERY DD DSN=<HLQ>.QUERY.FILENAME,DISP=SHR
    //STDIN DD *
    PROJECT=PROJECT_NAME
    DATASET_ID=DATASET_ID
    DESTINATION_TABLE=DESTINATION_TABLE
    bq export --project_id=$PROJECT \
      --dataset_id=$DATASET_ID \
      --destination_table=$DESTINATION_TABLE \
      --location="US" \
      --remoteHost <mainframe-connector-url>.a.run.app \
      --remotePort 443
    /*
    

    Ganti kode berikut:

    • PROJECT_NAME: Nama project tempat Anda akan mengeksekusi kueri.
    • DATASET_ID: ID set data BigQuery yang berisi tabel yang ingin Anda ekspor.
    • DESTINATION_TABLE: Tabel BigQuery yang ingin diekspor.

    Data tersebut diekspor ke set data OUTFILE DD. Tata letak rekaman adalah dijelaskan dalam DD SALIN.