Cloud Storage Text to BigQuery 파이프라인은 Cloud Storage에 저장된 텍스트 파일을 읽고, 제공된 자바스크립트 UDF(사용자 정의 함수)를 사용하여 변환하고, 결과를 BigQuery 테이블에 추가할 수 있게 해주는 일괄 파이프라인입니다.
파이프라인 요구사항
- BigQuery 스키마를 설명하는 JSON 파일을 만듭니다.
최상위 JSON 배열의 이름이
BigQuery Schema
이고 해당 콘텐츠는{"name": "COLUMN_NAME", "type": "DATA_TYPE"}
패턴을 따라야 합니다.Cloud Storage Text to BigQuery 일괄 템플릿은 대상 BigQuery 테이블에서
STRUCT
(레코드) 필드로 데이터 가져오기를 지원하지 않습니다.다음 JSON은 예시 BigQuery 스키마를 설명합니다.
{ "BigQuery Schema": [ { "name": "location", "type": "STRING" }, { "name": "name", "type": "STRING" }, { "name": "age", "type": "STRING" }, { "name": "color", "type": "STRING" }, { "name": "coffee", "type": "STRING" } ] }
- 텍스트 줄을 변환하는 논리를 제공하는 UDF 함수를 사용하여 자바스크립트(
.js
) 파일을 만듭니다. 함수는 JSON 문자열을 반환해야 합니다.예를 들어 이 함수는 CSV 파일의 각 줄을 분할하고, 값을 변환한 후에 JSON 문자열을 반환합니다.
function transform(line) { var values = line.split(','); var obj = new Object(); obj.location = values[0]; obj.name = values[1]; obj.age = values[2]; obj.color = values[3]; obj.coffee = values[4]; var jsonString = JSON.stringify(obj); return jsonString; }
템플릿 매개변수
매개변수 | 설명 |
---|---|
javascriptTextTransformFunctionName |
사용할 자바스크립트 사용자 정의 함수(UDF)의 이름입니다.
예를 들어 자바스크립트 함수가 myTransform(inJson) { /*...do stuff...*/ } 이면 함수 이름은 myTransform 입니다. 샘플 자바스크립트 UDF는 UDF 예시를 참조하세요.
|
JSONPath |
Cloud Storage에 저장된 BigQuery 스키마를 정의하는 JSON 파일의 gs:// 경로입니다. 예를 들면 gs://path/to/my/schema.json 입니다. |
javascriptTextTransformGcsPath |
사용할 자바스크립트 사용자 정의 함수(UDF)를 정의하는 .js 파일의 Cloud Storage URI입니다. 예를 들면 gs://my-bucket/my-udfs/my_file.js 입니다.
|
inputFilePattern |
Cloud Storage에서 처리하려는 텍스트의 gs:// 경로입니다. 예를 들면 gs://path/to/my/text/data.txt 입니다. |
outputTable |
처리된 데이터를 저장하기 위해 만들 BigQuery 테이블 이름입니다.
기존 BigQuery 테이블을 다시 사용하면 데이터가 대상 테이블에 추가됩니다.
예를 들면 my-project-name:my-dataset.my-table 입니다. |
bigQueryLoadingTemporaryDirectory |
BigQuery 로드 프로세스를 위한 임시 디렉터리입니다.
예를 들면 gs://my-bucket/my-files/temp_dir 입니다. |
템플릿 실행
콘솔
- Dataflow 템플릿에서 작업 만들기 페이지로 이동합니다. 템플릿에서 작업 만들기로 이동
- 작업 이름 필드에 고유한 작업 이름을 입력합니다.
- 선택사항: 리전 엔드포인트의 드롭다운 메뉴에서 값을 선택합니다. 기본 리전 엔드포인트는
us-central1
입니다.Dataflow 작업을 실행할 수 있는 리전 목록은 Dataflow 위치를 참조하세요.
- Dataflow 템플릿 드롭다운 메뉴에서 the Text Files on Cloud Storage to BigQuery (Batch) template을 선택합니다.
- 제공된 매개변수 필드에 매개변수 값을 입력합니다.
- 작업 실행을 클릭합니다.
gcloud
셸 또는 터미널에서 템플릿을 실행합니다.
gcloud dataflow jobs run JOB_NAME \ --gcs-location gs://dataflow-templates/VERSION/GCS_Text_to_BigQuery \ --region REGION_NAME \ --parameters \ javascriptTextTransformFunctionName=JAVASCRIPT_FUNCTION,\ JSONPath=PATH_TO_BIGQUERY_SCHEMA_JSON,\ javascriptTextTransformGcsPath=PATH_TO_JAVASCRIPT_UDF_FILE,\ inputFilePattern=PATH_TO_TEXT_DATA,\ outputTable=BIGQUERY_TABLE,\ bigQueryLoadingTemporaryDirectory=PATH_TO_TEMP_DIR_ON_GCS
다음을 바꿉니다.
PROJECT_ID
: Dataflow 작업을 실행할 Cloud 프로젝트 IDJOB_NAME
: 선택한 고유한 작업 이름VERSION
: 사용할 템플릿 버전다음 값을 사용할 수 있습니다.
latest
: 버킷의 날짜가 지정되지 않은 상위 폴더(gs://dataflow-templates/latest/)에서 사용할 수 있는 최신 버전의 템플릿을 사용합니다.- 버전 이름(예:
2021-09-20-00_RC00
): 버킷의 날짜가 지정된 해당 상위 폴더(gs://dataflow-templates/)에 중첩되어 있는 특정 버전의 템플릿을 사용합니다.
REGION_NAME
: Dataflow 작업을 배포할 리전 엔드포인트(예:us-central1
)JAVASCRIPT_FUNCTION
: 사용할 자바스크립트 사용자 정의 함수(UDF)의 이름입니다.예를 들어 자바스크립트 함수가
myTransform(inJson) { /*...do stuff...*/ }
이면 함수 이름은myTransform
입니다. 샘플 자바스크립트 UDF는 UDF 예시를 참조하세요.PATH_TO_BIGQUERY_SCHEMA_JSON
: 스키마 정의가 포함된 JSON 파일의 Cloud Storage 경로PATH_TO_JAVASCRIPT_UDF_FILE
: 사용할 자바스크립트 사용자 정의 함수(UDF)를 정의하는.js
파일의 Cloud Storage URI입니다. 예를 들면gs://my-bucket/my-udfs/my_file.js
입니다.PATH_TO_TEXT_DATA
: 텍스트 데이터 세트의 Cloud Storage 경로BIGQUERY_TABLE
: BigQuery 테이블 이름PATH_TO_TEMP_DIR_ON_GCS
: 임시 디렉터리의 Cloud Storage 경로
API
REST API를 사용하여 템플릿을 실행하려면 HTTP POST 요청을 전송합니다. API 및 승인 범위에 대한 자세한 내용은 projects.templates.launch
를 참조하세요.
POST https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/LOCATION/templates:launch?gcsPath=gs://dataflow-templates/VERSION/GCS_Text_to_BigQuery { "jobName": "JOB_NAME", "parameters": { "javascriptTextTransformFunctionName": "JAVASCRIPT_FUNCTION", "JSONPath": "PATH_TO_BIGQUERY_SCHEMA_JSON", "javascriptTextTransformGcsPath": "PATH_TO_JAVASCRIPT_UDF_FILE", "inputFilePattern":"PATH_TO_TEXT_DATA", "outputTable":"BIGQUERY_TABLE", "bigQueryLoadingTemporaryDirectory": "PATH_TO_TEMP_DIR_ON_GCS" }, "environment": { "zone": "us-central1-f" } }
다음을 바꿉니다.
PROJECT_ID
: Dataflow 작업을 실행할 Cloud 프로젝트 IDJOB_NAME
: 선택한 고유한 작업 이름VERSION
: 사용할 템플릿 버전다음 값을 사용할 수 있습니다.
latest
: 버킷의 날짜가 지정되지 않은 상위 폴더(gs://dataflow-templates/latest/)에서 사용할 수 있는 최신 버전의 템플릿을 사용합니다.- 버전 이름(예:
2021-09-20-00_RC00
): 버킷의 날짜가 지정된 해당 상위 폴더(gs://dataflow-templates/)에 중첩되어 있는 특정 버전의 템플릿을 사용합니다.
LOCATION
: Dataflow 작업을 배포할 리전 엔드포인트(예:us-central1
)JAVASCRIPT_FUNCTION
: 사용할 자바스크립트 사용자 정의 함수(UDF)의 이름입니다.예를 들어 자바스크립트 함수가
myTransform(inJson) { /*...do stuff...*/ }
이면 함수 이름은myTransform
입니다. 샘플 자바스크립트 UDF는 UDF 예시를 참조하세요.PATH_TO_BIGQUERY_SCHEMA_JSON
: 스키마 정의가 포함된 JSON 파일의 Cloud Storage 경로PATH_TO_JAVASCRIPT_UDF_FILE
: 사용할 자바스크립트 사용자 정의 함수(UDF)를 정의하는.js
파일의 Cloud Storage URI입니다. 예를 들면gs://my-bucket/my-udfs/my_file.js
입니다.PATH_TO_TEXT_DATA
: 텍스트 데이터 세트의 Cloud Storage 경로BIGQUERY_TABLE
: BigQuery 테이블 이름PATH_TO_TEMP_DIR_ON_GCS
: 임시 디렉터리의 Cloud Storage 경로