Spostare i dati transcodificati localmente sul mainframe in Google Cloud

Questa pagina spiega come transcodificare i dati del mainframe localmente sul mainframe nel formato ORC (Optimized Row Columnar) e poi spostare i contenuti in BigQuery.

La transcodifica è il processo di conversione delle informazioni da una forma di rappresentazione codificata a un'altra, in questo caso in ORC. ORC è un framework open source un formato di dati orientato a colonne ampiamente usato nell'ecosistema Apache Hadoop, ed è supportato da BigQuery.

Prima di iniziare

Installa il connettore mainframe a qualsiasi set di dati partizionato da mainframe che vuoi utilizzare come libreria di procedure (PROCLIB).

Spostare in Google Cloud i dati transcodificati localmente sul mainframe

Per transcodificare i dati localmente su un mainframe e quindi spostarli in BigQuery, devi eseguire le seguenti attività:

  1. Leggi e transcodifica un set di dati su un mainframe e caricalo in Cloud Storage in formato ORC. La transcodifica viene eseguita durante l'operazione cp. in cui un EBCDIC (Mainframe Extended Bin coded Interchange Code) è un codice di interscambio decimale del set di dati viene convertito nel formato ORC in UTF-8 durante la copia nel bucket Cloud Storage.
  2. Carica il set di dati in una tabella BigQuery.
  3. (Facoltativo) Esegui una query SQL sulla tabella BigQuery.
  4. (Facoltativo) Esporta i dati da BigQuery nel mainframe.

Per eseguire queste attività, segui questi passaggi:

  1. Crea un job per leggere il set di dati sul mainframe e transcodificarlo nel formato ORC, come segue. Leggi i dati dal set di dati INFILE e il layout del record dal COPYBOOK DD. Il set di dati di input deve essere un file QSAM (metodo di accesso sequenziale in coda) con lunghezza del record fissa o variabile.

    //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
    /*
    

    Sostituisci quanto segue:

    • BUCKET_NAME: il nome del bucket Cloud Storage in cui vuoi copiare i dati del mainframe.

    Per evitare di specificare variabili come ID progetto e nomi di bucket in ogni job. di controllo del linguaggio di controllo (JCL), le puoi aggiungere in BQSH PROCLIB e farvi riferimento in varie procedure JCL come variabili di ambiente. Questo aiuta anche a garantire una transizione fluida tra la produzione e ambienti non di produzione, in quanto le variabili specifiche dell'ambiente sono impostate BQSH PROCLIB dell'ambiente. Per l'elenco completo delle variabili di ambiente supportato da Mainframe Connector, consulta Variabili di ambiente.

    In questo esempio, l'input standard (STDIN) viene fornito come dato in-stream al DD STDIN. In alternativa, puoi fornire questo input utilizzando un nome dell'origine dati (DSN), che consente di gestire più facilmente la sostituzione dei simboli.

    Se vuoi registrare i comandi eseguiti durante questa procedura, puoi abilitare le statistiche di caricamento.

  2. Crea e invia un job di caricamento BigQuery che carichi le partizioni dei file ORC da my_table.orc in MY_DATASET.MY_TABLE, come segue.

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

    Sostituisci quanto segue:

    • PROJECT_NAME: il nome del progetto in cui vuoi eseguire la query.
  3. (Facoltativo) Crea e invia un job di query BigQuery che esegue una lettura SQL dal file DD QUERY. In genere, la query sarà un'istruzione MERGE o SELECT INTO DML che comporta la trasformazione di una tabella BigQuery. Tieni presente che il connettore Mainframe registra le metriche dei job, ma non scrive i risultati delle query in un file.

    Puoi eseguire query su BigQuery in vari modi: in linea, con un set di dati distinto utilizzando DD o con un set di dati distinto utilizzando 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/*
    /*
    

    Sostituisci quanto segue:

    • PROJECT_NAME: il nome del progetto in cui vuoi eseguire la query.
    • LOCATION: la posizione in cui verrà eseguita la query eseguito. Ti consigliamo di eseguire la query in una posizione vicina ai dati.
  4. (Facoltativo) Crea e invia un job di esportazione che esegue una lettura SQL dal File QUERY DD ed esportazioni il set di dati risultante in un mainframe come file binario.

    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
    /*
    

    Sostituisci quanto segue:

    • PROJECT_NAME: il nome del progetto in cui vuoi eseguire la query.
    • DATASET_ID: l'ID del set di dati BigQuery che contiene la tabella da esportare.
    • DESTINATION_TABLE: la tabella BigQuery che vuoi esportare.

    I dati vengono esportati nel set di dati OUTFILE DD. Il layout dei record è descritto dal COPYBOOK DD.