Cette page explique comment transcoder les données de mainframe localement sur le au format ORC (Optimized Row Columnar), avant de transférer le contenu vers BigQuery.
Le transcodage est le processus qui consiste à convertir des informations à partir d’une forme de codage à un autre, dans ce cas à ORC. ORC est une solution Open Source de données orienté colonnes largement utilisé dans l’écosystème Apache Hadoop, et est compatible avec BigQuery.
Avant de commencer
Installer le connecteur mainframe à tout ensemble de données partitionné par un mainframe que vous souhaitez utiliser comme bibliothèque de procédures (PROCLIB).
Transférer des données transcodées localement sur le mainframe vers Google Cloud
Pour transcoder des données localement sur un mainframe puis les déplacer vers BigQuery, vous devez effectuer les tâches suivantes:
- Lire et transcoder un ensemble de données sur un mainframe, puis l'importer dans Cloud Storage au format ORC Le transcodage est effectué lors de l'opération
cp
. où un code d'échange décimal codé en binaire étendu (EBCDIC) du mainframe étendu l'ensemble de données est converti au format ORC en UTF-8 lors de la copie dans un bucket Cloud Storage. - Charger l'ensemble de données dans une table BigQuery
- (Facultatif) Exécutez une requête SQL sur la table BigQuery.
- (Facultatif) Exporter les données de BigQuery vers le mainframe.
Pour effectuer ces tâches, procédez comme suit:
Créer un job pour lire l'ensemble de données sur votre mainframe et le transcoder en ORC , comme indiqué ci-dessous. Lisez les données de l'ensemble de données INFILE et la mise en page des enregistrements du DD COPYBOOK. L'ensemble de données d'entrée doit être un ensemble de données séquentiel en file d'attente (QSAM) avec une longueur d'enregistrement fixe ou variable.
//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 /*
Remplacez les éléments suivants :
BUCKET_NAME
: nom du bucket Cloud Storage dans lequel vous souhaitez copier les données du mainframe.
Pour éviter de spécifier des variables telles que des ID de projet et des noms de buckets dans chaque job de langage de contrôle (JCL), vous pouvez les ajouter dans BQSH PROCLIB et et les référencer dans plusieurs procédures JCL en tant que variables d'environnement. Cette approche permet également de passer facilement d'un environnement de production à un environnement hors production, car les variables spécifiques à l'environnement sont définies dans la PROCLIB BQSH de l'environnement. Pour obtenir la liste complète des variables d'environnement, compatibles avec le connecteur Mainframe, consultez la section Variables d'environnement.
Dans cet exemple, l'entrée standard (STDIN) est fournie en tant que données dans le flux à la DD STDIN. Vous pouvez également fournir cette entrée à l'aide d'un nom de source de données (DSN), qui facilite la gestion de la substitution de symboles.
Si vous souhaitez consigner les commandes exécutées au cours de ce processus, vous pouvez activer les statistiques de charge.
Créez et envoyez une tâche de chargement BigQuery qui charge les partitions de fichiers ORC de
my_table.orc
dansMY_DATASET.MY_TABLE
, comme suit.Example JCL //STEP02 EXEC BQSH //STDIN DD * PROJECT=PROJECT_NAME bq load --project_id=$PROJECT \ myproject:DATASET.TABLE \ gs://bucket/tablename.orc/* /*
Remplacez les éléments suivants :
PROJECT_NAME
: nom du projet dans lequel vous voulez exécuter la requête.
(Facultatif) Créez et envoyez une tâche de requête BigQuery qui exécute une lecture SQL à partir du fichier DD QUERY. Généralement, la requête est de type
MERGE
ouSELECT INTO DML
. entraînant la transformation d'une table BigQuery. Remarque que Mainframe Connector consigne les métriques de job, mais n'écrit pas de requête dans un fichier.Vous pouvez interroger BigQuery de différentes manières : en ligne, avec un ensemble de données distinct à l'aide de DD ou avec un ensemble de données distinct à l'aide de 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/* /*
Remplacez les éléments suivants :
PROJECT_NAME
: nom du projet dans lequel vous voulez exécuter la requête.LOCATION
: emplacement correspondant à la requête exécuté. Nous vous recommandons d'exécuter la requête dans un emplacement proche des données.
(Facultatif) Créez et envoyez une tâche d'exportation qui exécute une lecture SQL à partir du fichier DD QUERY et exporte le jeu de données obtenu vers un mainframe en tant que fichier binaire.
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 /*
Remplacez les éléments suivants :
PROJECT_NAME
: nom du projet dans lequel vous souhaitez exécuter la requête.DATASET_ID
: ID de l'ensemble de données BigQuery contenant la table que vous souhaitez exporter.DESTINATION_TABLE
: table BigQuery que vous souhaitez exporter.
Les données sont exportées vers l'ensemble de données OUTFILE DD. La disposition des enregistrements est décrits par le COPYBOOK DD.