본문으로 건너뛰기
최종 수정: 에

Google Cloud Storage(GCS)에서 데이터 가져오기

Apache Doris는 S3 호환 프로토콜로 GCS 버킷에 액세스하여 Google Cloud Storage(GCS)에서 파일을 가져올 수 있습니다. 이 문서에서는 두 가지 가져오기 방식과 각 방식의 전체 작업 절차를 설명합니다.

가져오기 방식 선택​

Doris는 Google Cloud Storage에서 파일을 가져오는 두 가지 방식을 제공합니다. 데이터 양과 처리 시점에 대한 요구 사항에 따라 선택하세요.

가져오기 방식실행 모드적합한 사용 사례참고 자료
S3 Load비동기대량의 배치 데이터 가져오기, 장시간 실행되는 작업Broker Load 매뉴얼
S3 TVF(테이블 함수)동기소량의 배치 데이터 가져오기, 임시 쿼리, 빠른 검증이 문서

권장 사항:

  • 데이터 양이 많거나 작업을 백그라운드에서 실행해야 한다면 S3 Load를 사용하세요.
  • 결과가 즉시 필요하거나 INSERT INTO ... SELECT와 함께 사용하려면 S3 TVF를 사용하세요.

사전 준비 사항​

데이터를 가져오기 전에 다음 정보를 준비하세요.

  • Google Cloud Storage 버킷 이름(your_bucket_name).
  • 액세스 자격 증명: Access Key 및 Secret Key.
  • GCS Endpoint 및 Region(예: storage.us-west2.rep.googleapis.com 및 US-WEST2).
  • 배포가 완료되어 액세스할 수 있는 Apache Doris 클러스터.

방법 1: S3 Load로 데이터 가져오기(비동기)​

S3 Load는 대량의 데이터를 비동기 방식으로 가져오는 데 적합합니다. 자세한 매개변수와 고급 사용법은 Broker Load 매뉴얼을 참고하세요.

단계 1: 데이터 준비​

CSV 파일 s3load_example.csv를 생성하고 Google Cloud Storage에 업로드합니다. 파일 내용은 다음과 같습니다.

1,Emily,25
2,Benjamin,35
3,Olivia,28
4,Alexander,60
5,Ava,17
6,William,69
7,Sophia,32
8,James,64
9,Emma,37
10,Liam,64

단계 2: Doris에서 테이블 생성​

CREATE TABLE test_s3load(
user_id BIGINT NOT NULL COMMENT "user id",
name VARCHAR(20) COMMENT "name",
age INT COMMENT "age"
)
DUPLICATE KEY(user_id)
DISTRIBUTED BY HASH(user_id) BUCKETS 10;

단계 3: S3 Load로 데이터 가져오기​

LOAD LABEL s3_load_2022_04_01
(
DATA INFILE("s3://your_bucket_name/s3load_example.csv")
INTO TABLE test_s3load
COLUMNS TERMINATED BY ","
FORMAT AS "CSV"
(user_id, name, age)
)
WITH S3
(
"provider" = "GCP",
"s3.endpoint" = "storage.us-west2.rep.googleapis.com",
"s3.region" = "US-WEST2",
"s3.access_key" = "<your-ak>",
"s3.secret_key" = "<your-sk>"
)
PROPERTIES
(
"timeout" = "3600"
);

주요 매개변수:

매개변수설명
provider객체 스토리지 공급자. GCS에서는 GCP로 고정
s3.endpointGCS의 S3 호환 액세스 엔드포인트
s3.regionGCS 버킷이 위치한 리전
s3.access_keyGCS 액세스 키 ID
s3.secret_keyGCS 보안 액세스 키
timeout데이터 가져오기 제한 시간(초)

단계 4: 가져온 데이터 확인​

SELECT * FROM test_s3load;

예상 결과:

mysql> select * from test_s3load;
+---------+-----------+------+
| user_id | name | age |
+---------+-----------+------+
| 5 | Ava | 17 |
| 10 | Liam | 64 |
| 7 | Sophia | 32 |
| 9 | Emma | 37 |
| 1 | Emily | 25 |
| 4 | Alexander | 60 |
| 2 | Benjamin | 35 |
| 3 | Olivia | 28 |
| 6 | William | 69 |
| 8 | James | 64 |
+---------+-----------+------+
10 rows in set (0.04 sec)

방법 2: TVF로 데이터 가져오기(동기)​

S3 테이블 함수(TVF)는 동기 방식의 데이터 가져오기와 임시 쿼리에 적합하며, INSERT INTO ... SELECT와 직접 함께 사용할 수 있습니다.

단계 1: 데이터 준비​

CSV 파일 s3load_example.csv를 생성하고 Google Cloud Storage에 업로드합니다. 파일 내용은 다음과 같습니다.

1,Emily,25
2,Benjamin,35
3,Olivia,28
4,Alexander,60
5,Ava,17
6,William,69
7,Sophia,32
8,James,64
9,Emma,37
10,Liam,64

단계 2: Doris에서 테이블 생성​

CREATE TABLE test_s3load(
user_id BIGINT NOT NULL COMMENT "user id",
name VARCHAR(20) COMMENT "name",
age INT COMMENT "age"
)
DUPLICATE KEY(user_id)
DISTRIBUTED BY HASH(user_id) BUCKETS 10;

단계 3: TVF로 데이터 가져오기​

INSERT INTO test_s3load
SELECT * FROM S3
(
"uri" = "s3://your_bucket_name/s3load_example.csv",
"format" = "csv",
"provider" = "GCP",
"s3.endpoint" = "storage.us-west2.rep.googleapis.com",
"s3.region" = "US-WEST2",
"s3.access_key" = "<your-ak>",
"s3.secret_key" = "<your-sk>",
"column_separator" = ",",
"csv_schema" = "user_id:int;name:string;age:int"
);

주요 매개변수:

매개변수설명
uri객체 스토리지에 있는 파일의 S3 URI
format파일 형식. 예: csv, parquet, orc
provider객체 스토리지 공급자. GCS에서는 GCP로 고정
s3.endpointGCS의 S3 호환 액세스 엔드포인트
s3.regionGCS 버킷이 위치한 리전
s3.access_keyGCS 액세스 키 ID
s3.secret_keyGCS 보안 액세스 키
column_separator열 구분자
csv_schemaCSV 열 정의. 형식: column_name:type;column_name:type

단계 4: 가져온 데이터 확인​

SELECT * FROM test_s3load;

예상 결과:

mysql> select * from test_s3load;
+---------+-----------+------+
| user_id | name | age |
+---------+-----------+------+
| 5 | Ava | 17 |
| 10 | Liam | 64 |
| 7 | Sophia | 32 |
| 9 | Emma | 37 |
| 1 | Emily | 25 |
| 4 | Alexander | 60 |
| 2 | Benjamin | 35 |
| 3 | Olivia | 28 |
| 6 | William | 69 |
| 8 | James | 64 |
+---------+-----------+------+
10 rows in set (0.04 sec)

자주 묻는 질문​

Q1: provider 매개변수는 어떤 값으로 설정해야 하나요?

Google Cloud Storage에서 데이터를 가져올 때는 provider를 GCP로 설정해야 Doris가 S3 호환 프로토콜을 통해 GCS에 액세스합니다.

Q2: S3 Load와 S3 TVF 중 어떤 것을 선택해야 하나요?

  • 대량의 데이터를 백그라운드에서 비동기 방식으로 처리해야 한다면 S3 Load를 선택하세요.
  • 소량의 데이터를 처리하면서 즉시 결과를 확인해야 하거나 SQL 쿼리와 함께 사용해야 한다면 S3 TVF를 선택하세요.

Q3: GCS의 Access Key와 Secret Key는 어떻게 발급받나요?

Google Cloud Console의 Cloud Storage > 설정 > 상호 운용성 페이지에서 S3 호환 액세스에 사용할 HMAC 키(Access Key / Secret Key)를 생성하고 관리할 수 있습니다.

Q4: Endpoint와 Region은 어떻게 확인하나요?

Endpoint와 Region은 버킷이 위치한 리전에 따라 달라집니다. 예를 들어 US-WEST2 리전에 해당하는 엔드포인트는 storage.us-west2.rep.googleapis.com입니다. 버킷의 실제 위치에 맞게 이 값을 바꾸세요.

Q5: 시간 초과로 데이터 가져오기에 실패하면 어떻게 해야 하나요?

timeout 매개변수를 PROPERTIES에서 늘리세요(단위: 초). 기본값은 3600입니다. 파일이 매우 크거나 네트워크가 느리면 필요에 따라 제한 시간을 늘리세요.