在大型主機上本機轉碼資料是 CPU 密集型程序,會導致每秒百萬指令數 (MIPS) 消耗量偏高。為避免這種情況,您可以使用 Cloud Run 從遠端將大型主機資料移轉並轉碼為Google Cloud 到最佳化資料列欄式 (ORC) 格式,然後將資料移至 Cloud Storage。這樣一來,大型主機就能騰出空間,用於執行關鍵業務工作,同時也能減少 MIPS 用量。
下圖說明如何將大型主機資料移至Google Cloud ,並使用 Cloud Run 從遠端將資料轉碼為 ORC 格式,然後將內容移至 BigQuery。

事前準備
- 在 Cloud Run 部署 Mainframe Connector。
- 建立服務帳戶或識別要與 Mainframe Connector 搭配使用的現有服務帳戶。這個服務帳戶必須具備存取 Cloud Storage 值區、BigQuery 資料集和您要使用的任何其他 Google Cloud 資源的權限。
- 確認您建立的服務帳戶已獲派 Cloud Run 叫用者角色。
將大型主機資料移至 Google Cloud ,並使用 Cloud Run 進行遠端轉碼
如要將大型主機資料移至 Google Cloud ,並使用 Cloud Run 進行遠端轉碼,您必須執行下列工作:
- 在大型主機上讀取及轉碼資料集,並以 ORC 格式上傳至 Cloud Storage。轉碼作業會在
gsutil cp
作業期間執行,在將大型主機擴充二進位編碼十進位交換碼 (EBCDIC) 資料集複製至 Cloud Storage 值區時,會將其轉換為 UTF-8 的 ORC 格式。 - 將資料集載入 BigQuery 資料表。
- (選用) 對 BigQuery 資料表執行 SQL 查詢。
- (選用) 將資料從 BigQuery 匯出至 Cloud Storage 中的二進位檔案。
如要執行這些工作,請按照下列步驟操作:
在大型主機上建立工作,以便讀取大型主機上的資料集,並將其轉碼為 ORC 格式,如下所示。讀取 INFILE 資料集的資料,以及 COPYBOOK DD 的記錄版面配置。輸入資料集必須是排隊順序存取方法 (QSAM) 檔案,且記錄長度必須為固定或變數。
如需 Mainframe Connector 支援的完整環境變數清單,請參閱「環境變數」。
//STEP01 EXEC BQSH //INFILE DD DSN=<HLQ>.DATA.FILENAME,DISP=SHR //COPYBOOK DD DISP=SHR,DSN=<HLQ>.COPYBOOK.FILENAME //STDIN DD * gsutil cp --replace gs://mybucket/tablename.orc --remote \ --remoteHost <mainframe-connector-url>.a.run.app \ --remotePort 443 /*
如要記錄在這項程序中執行的指令,可以啟用載入統計資料。
(選用) 建立並提交 BigQuery 查詢作業,執行從 QUERY DD 檔案讀取的 SQL。通常,查詢會是
MERGE
或SELECT INTO DML
陳述式,可轉換 BigQuery 資料表。請注意,Mainframe Connector 會記錄工作指標,但不會將查詢結果寫入檔案。您可以透過各種方式查詢 BigQuery,包括內嵌式查詢、使用 DD 的獨立資料集,或使用 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 \ --remoteHost <mainframe-connector-url>.a.run.app \ --remotePort 443/* /*
此外,您必須設定環境變數
BQ_QUERY_REMOTE_EXECUTION=true
。更改下列內容:
PROJECT_NAME
:要執行查詢的專案名稱。LOCATION
:查詢執行的位置。建議您在靠近資料的位置執行查詢。
(選用) 建立並提交匯出工作,執行從 QUERY DD 檔案讀取的 SQL,並將產生的資料集以二進位檔的形式匯出至 Cloud Storage。
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 BUCKET=BUCKET bq export --project_id=$PROJECT \ --dataset_id=$DATASET_ID \ --destination_table=$DESTINATION_TABLE \ --location="US" \ --bucket=$BUCKET \ --remoteHost <mainframe-connector-url>.a.run.app \ --remotePort 443 /*
更改下列內容:
PROJECT_NAME
:要執行查詢的專案名稱。DATASET_ID
:包含要匯出的資料表的 BigQuery 資料集 ID。DESTINATION_TABLE
:您要匯出的 BigQuery 資料表。BUCKET
:包含輸出二進位檔的 Cloud Storage 值區。