Cette page explique comment installer Mainframe Connector sur Cloud Run, transcoder des données, les enregistrer dans BigQuery et les exporter depuis BigQuery.
Mainframe Connector 5.13.0 et versions ultérieures permettent d'exécuter Mainframe Connector en tant que tâche autonome sur Google Cloud Cette fonctionnalité permet d'exécuter Mainframe Connector en tant que job par lot conteneurisé (par exemple, en tant que job Cloud Run, job Google Kubernetes Engine ou dans un conteneur Docker. Cette option vous évite d'installer le connecteur mainframe localement sur votre mainframe et vous permet d'intégrer plus facilement l'analyse de fichiers QSAM (queued sequential access method) de votre mainframe aux workflows d'extraction, de transformation et de chargement (ETL) existants.
Lorsque vous utilisez la version autonome du connecteur de mainframe, devez configurer le workflow ETL qui charge le fichier QSAM dans Google Cloud vous-même.
Avant de commencer
- Déployez Mainframe Connector sur Cloud Run.
- Créez un compte de service ou identifiez un compte de service existant à utiliser avec Mainframe Connector. Ce compte de service doit disposer d'autorisations pour accéder aux buckets Cloud Storage, aux ensembles de données BigQuery et à toute autre ressource Google Cloud que vous souhaitez utiliser.
- Assurez-vous que le rôle Demandeur Cloud Run est attribué au compte de service que vous avez créé.
- Assurez-vous que les données du mainframe sont déjà disponibles sur Google Cloud en tant que fichier QSAM.
Transcoder des données à l'aide de Mainframe Connector en mode autonome sur Cloud Run
Pour transcoder vos données à l'aide du connecteur Mainframe en mode autonome, procédez comme suit:
Créez un fichier YAML contenant des commandes permettant de lire votre ensemble de données, puis convertissez-le en au format ORC, puis importez-le dans Cloud Storage. L'ensemble de données d'entrée doit être Fichier QSAM avec une longueur d'enregistrement fixe ou variable. Vous pouvez utiliser l'exemple de fichier YAML suivant pour lire votre ensemble de données, le transcoder au format ORC et l'importer dans Cloud Storage.
Dans l'exemple suivant, lisez les données de l'ensemble de données INFILE et la mise en page des enregistrements du DD COPYBOOK.
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
Remplacez les éléments suivants :
INFILE
: nom du fichier d'entrée.INFILE_DSN
: nom du fichier de nom de source de données (DSN) d'entrée.INFILE_DSN_FILEPATH
: chemin d'accès au fichier DSN d'entrée.COPYBOOK_FILEPATH
: chemin d'accès au DD du copier.LOG_PROJECT
: nom du projet de journal.
Voici un exemple de fichier 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
Pour obtenir la liste complète des variables d'environnement compatibles avec le connecteur Mainframe, consultez la section Variables d'environnement.
Si vous souhaitez consigner les commandes exécutées au cours de ce processus, vous pouvez activer les statistiques de charge.
Créez un fichier
job.yaml
à l'aide de la commande suivante.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
Remplacez les éléments suivants :
- JOB par le nom de votre tâche Cloud Run Les noms de tâche doivent comporter un maximum de 49 caractères et être uniques par région et par projet.
- IMAGE par l'URL de l'image de conteneur du job (par exemple,
us-docker.pkg.dev/cloudrun/container/job:latest
). - LOCATION_OF_THE_COMMAND_YAML_FILE par l'emplacement YAML que vous avez créé à l'étape précédente.
Déployez la nouvelle tâche à l'aide de la commande suivante :
gcloud run jobs replace job.yaml
Exécutez la tâche à l'aide de la commande suivante:
gcloud run jobs execute JOB_NAME
Remplacez JOB_NAME par le nom de la tâche.
Pour en savoir plus sur la création et l'exécution d'un job Cloud Run, consultez les pages Créer un job et Exécuter un job.
Exporter une table BigQuery vers un ensemble de données Mainframe
Vous pouvez exporter une table BigQuery dans un ensemble de données Mainframe en créant un fichier qui exécute une lecture SQL à partir du fichier QUERY DD, puis exporte l'ensemble de données obtenu vers Cloud Storage sous forme de fichier binaire, suit.
Les étapes de création et d'exécution du job Cloud Run sont les mêmes que mentionnée dans la section Transcoder des données à l'aide du connecteur Mainframe en mode autonome sur Cloud Run. La seule différence réside dans les instructions mentionnées dans le fichier 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>"
Remplacez les éléments suivants :
COPYBOOK_FILEPATH
: chemin d'accès au DD du copier.LOG_PROJECT
: nom du projet de journal.PROJECT_NAME
: nom du projet dans lequel vous souhaitez exécuter la requête.LOCATION
: emplacement correspondant à la requête exécuté. Nous vous recommandons d'exécuter la requête dans un endroit proche du données.BUCKET
: bucket Cloud Storage qui contiendra le fichier binaire de sortie.
Voici un exemple de fichier 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>"