이 페이지에서는 메인프레임에서 로컬로 메인프레임 데이터를 최적화된 행 열 형식(ORC) 형식으로 트랜스코딩한 후 콘텐츠를 BigQuery로 이동하는 방법을 설명합니다.
트랜스코딩은 한 가지 형식의 코딩된 표현에서 다른 형식(이 경우 ORC)으로 정보를 변환하는 프로세스입니다. ORC는 Apache Hadoop 생태계에서 널리 사용하는 오픈소스 열 기반 데이터 형식이며 BigQuery에서 지원됩니다.
시작하기 전에
프로시져 라이브러리(PROCLIB)로 사용할 메인프레임으로 파티션을 나눈 데이터 세트에 Mainframe Connector를 설치합니다.
메인프레임에서 로컬로 트랜스코딩된 데이터를 Google Cloud로 이동
데이터를 메인프레임에서 로컬로 트랜스코딩한 후 BigQuery로 이동하려면 다음 작업을 수행해야 합니다.
- 메인프레임에서 데이터 세트를 읽고 트랜스코딩한 후 ORC 형식으로 Cloud Storage에 업로드합니다. 트랜스코딩은
cp
작업 중에 수행됩니다. 여기서 메인프레임 확장 바이너리 코딩 십진수 교환 코드(EBCDIC) 데이터 세트는 Cloud Storage 버킷에 복사하는 동안 UTF-8의 ORC 형식으로 변환됩니다. - 데이터 세트를 BigQuery 테이블에 로드합니다.
- (선택사항) BigQuery 테이블에서 SQL 쿼리를 실행합니다.
- (선택사항) BigQuery에서 메인프레임으로 데이터를 다시 내보냅니다.
이 태스크를 수행하려면 다음 단계를 사용합니다.
메인프레임에서 데이터 세트를 읽고 다음과 같이 ORC 형식으로 트랜스코딩하는 작업을 만듭니다. INFILE 데이터 세트에서 데이터를 읽고 COPYBOOK DD의 레코드 레이아웃을 읽습니다. 입력 데이터 세트는 레코드 길이가 고정되었거나 가변적인 큐에 추가된 순차 액세스 메서드(QSAM) 파일이어야 합니다.
//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 /*
다음을 바꿉니다.
BUCKET_NAME
: 메인프레임 데이터를 복사할 Cloud Storage 버킷의 이름입니다.
각 작업 제어 언어(JCL) 프로시져에서 프로젝트 ID 및 버킷 이름과 같은 변수를 지정하지 않으려면 BQSH PROCLIB에서 추가하고 여러 JCL 프로시져에서 환경 변수로 참조할 수 있습니다. 또한 이 접근 방식은 환경별 변수가 환경의 BQSH PROCLIB에 설정되므로 프로덕션 환경과 비프로덕션 환경 간에 원활하게 전환할 수 있습니다. Mainframe Connector에서 지원하는 환경 변수의 전체 목록은 환경 변수를 참조하세요.
이 예시에서는 표준 입력(STDIN)이 STDIN DD에 인스트림 데이터로 제공됩니다. 또는 데이터 소스 이름(DSN)을 사용하여 이 입력을 제공하면 기호 대체를 보다 쉽게 관리할 수 있습니다.
이 프로세스 중에 실행된 명령어를 로깅하려면 로드 통계를 사용 설정하면 됩니다.
다음과 같이
my_table.orc
에서MY_DATASET.MY_TABLE
로 ORC 파일 파티션을 로드하는 BigQuery 로드 작업을 만들고 제출합니다.Example JCL //STEP02 EXEC BQSH //STDIN DD * PROJECT=PROJECT_NAME bq load --project_id=$PROJECT \ myproject:DATASET.TABLE \ gs://bucket/tablename.orc/* /*
다음을 바꿉니다.
PROJECT_NAME
: 쿼리를 실행할 프로젝트의 이름입니다.
(선택사항) QUERY DD 파일에서 SQL 읽기를 실행하는 BigQuery 쿼리 작업을 만들고 제출합니다. 일반적으로 쿼리는 BigQuery 테이블을 변환하는
MERGE
또는SELECT INTO DML
문이 됩니다. Mainframe Connector는 작업 측정항목에 로깅되지만 쿼리 결과를 파일에 쓰지 않습니다.인라인, DD를 사용하여 별도 데이터 세트 사용, DSN을 사용하는 개별 데이터 세트 등 다양한 방법으로 BigQuery를 쿼리할 수 있습니다.
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/* /*
다음을 바꿉니다.
PROJECT_NAME
: 쿼리를 실행할 프로젝트의 이름입니다.LOCATION
: 쿼리가 실행되는 위치입니다. 데이터와 가까운 위치에서 쿼리를 실행하는 것이 좋습니다.
(선택사항) QUERY DD 파일에서 SQL 읽기를 실행하고, 결과 데이터 세트를 메인프레임에 바이너리 파일로 내보내는 내보내기 작업을 만들고 제출합니다.
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 /*
다음을 바꿉니다.
PROJECT_NAME
: 쿼리를 실행할 프로젝트의 이름입니다.DATASET_ID
: 내보내려는 테이블이 포함된 BigQuery 데이터 세트 ID입니다.DESTINATION_TABLE
: 내보내려는 BigQuery 테이블입니다.
데이터를 OUTFILE DD 데이터 세트로 내보냅니다. 레코드 레이아웃은 COPY book DD에 설명되어 있습니다.