在独立模式下运行大型主机连接器

这一页介绍如何将大型主机连接器安装在 Cloud Run,对数据进行转码、将数据保存到 BigQuery 并导出 。

Mainframe Connector 5.13.0 及更高版本支持在 Google Cloud 上将 Mainframe Connector 作为独立作业运行。此功能 可让您将大型主机连接器作为容器化批量作业运行, 例如作为 Cloud Run 作业、Google Kubernetes Engine 作业或在 Docker 容器此选项可帮助您避免 大型主机连接器位于您的大型主机本地,可让您更轻松地 集成大型机队列顺序访问方法 (QSAM) 文件 解析到现有的提取、转换和加载 (ETL) 工作流。

当您使用独立版大型主机连接器时, 必须设置将 QSAM 文件加载到 Google Cloud 的 ETL 工作流,方法是 。

准备工作

  • 在 Cloud Run 上部署 Mainframe Connector
  • 创建服务账号或指定要与大型机连接器搭配使用的现有服务账号。此服务账号必须具有访问 Cloud Storage 存储桶、BigQuery 数据集以及您要使用的任何其他 Google Cloud 资源的权限。
  • 请务必为您创建的服务账号分配 Cloud Run Invoker 角色
  • 确保大型主机数据已作为 QSAM 在 Google Cloud 上提供 文件。

在 Cloud Run 上使用独立模式下使用大型主机连接器对数据进行转码

要在独立模式下使用大型主机连接器对您的数据进行转码,请执行以下操作: 请按以下步骤操作:

  1. 创建一个 YAML 文件,在其中添加读取数据集的命令,将其转码为 ORC 格式,并将其上传到 Cloud Storage。输入数据集必须是固定或可变记录长度的 QSAM 文件。您可以使用以下 示例 YAML 文件来读取您的数据集,将其转码为 ORC 格式, 将其上传到 Cloud Storage。

    在以下示例中,从 INFILE 数据集读取数据,并从 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
    

    替换以下内容:

    • INFILE:输入文件的名称。
    • INFILE_DSN:输入数据源名称 (DSN) 文件的名称。
    • INFILE_DSN_FILEPATH:输入 DSN 文件的路径。
    • COPYBOOK_FILEPATH:文案簿 DD 的路径。
    • LOG_PROJECT:日志项目的名称。

    以下是 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
    

    如需查看 Mainframe 连接器支持的环境变量的完整列表,请参阅环境变量

    如果您想记录在此过程中执行的命令,可以启用加载统计信息

  2. 使用以下命令创建 job.yaml 文件。

    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
    

    替换以下内容:

    • JOB 替换为 Cloud Run 作业的名称。 作业名称不得超过 49 个字符,并且在每个区域和项目中必须是唯一的。
    • IMAGE 替换为作业容器映像的网址,例如 us-docker.pkg.dev/cloudrun/container/job:latest
    • LOCATION_OF_THE_COMMAND_YAML_FILE 替换为您在上一步中创建的 YAML 文件的位置。
  3. 使用以下命令部署新作业:

    gcloud run jobs replace job.yaml
    
  4. 使用以下命令执行作业:

    gcloud run jobs execute JOB_NAME

    JOB_NAME 替换为作业的名称。

如需详细了解如何创建和执行 Cloud Run 作业,请参阅创建新作业执行作业

将 BigQuery 表导出到大型主机数据集

您可以通过创建 YAML 格式的 BigQuery 表,将 BigQuery 表导出到大型主机数据集。 文件执行从 QUERY DD 文件读取的 SQL, 并将生成的数据集以二进制文件的形式导出到 Cloud Storage,如下所示: 。

创建和执行 Cloud Run 作业的步骤与 在 Cloud Run 上使用独立模式的大型主机连接器转码数据部分中提及。唯一的区别在于 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>"

替换以下内容:

  • COPYBOOK_FILEPATH:文案簿 DD 的路径。
  • LOG_PROJECT:日志项目的名称。
  • PROJECT_NAME:您要执行查询的项目的名称。
  • LOCATION:查询的位置 。我们建议您在靠近数据的位置执行查询。
  • BUCKET:该 Cloud Storage 存储桶 包含输出二进制文件。

以下是 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>"