이 페이지에서는 Cloud Data Fusion을 사용하여 Amazon Redshift 인스턴스에서 Google Cloud로 데이터를 로드하는 방법을 설명합니다. Redshift 소스 커넥터를 사용하면 Redshift 데이터 세트의 테이블을 BigQuery와 같은 대상에 동기화할 수 있습니다. 커넥터를 사용하면 구성 가능한 SQL 쿼리를 만들 수도 있습니다.
시작하기 전에
- Cloud Data Fusion 버전 6.9.0 이상에서는 Redshift 소스를 지원합니다.
Redshift 소스 커넥터를 구성할 때 재사용 가능한 기존의 연결을 선택하거나 새로운 일회성 연결을 만들 수 있습니다. 자세한 내용은 연결 관리를 참조하세요. 연결을 다시 사용할 때는 다음 사항에 유의하세요.
- 사용자 인증 정보를 제공할 필요가 없습니다.
- 기존 연결은 가져오기 쿼리를 생성하는 데 사용되는 스키마 및 테이블 이름 정보를 제공합니다.
플러그인 구성
Cloud Data Fusion 웹 인터페이스로 이동하고 Studio를 클릭하세요.
데이터 파이프라인 - 배치가 선택되었는지 확인합니다(실시간 아님).
소스 메뉴에서 Redshift를 클릭합니다. Redshift 노드가 파이프라인에 표시됩니다. 스튜디오 페이지에 Redshift 소스가 표시되지 않으면 Cloud Data Fusion 허브에서 Redshift 소스 커넥터를 배포합니다.
소스를 구성하려면 Redshift 노드로 이동하고 속성을 클릭합니다.
다음 속성을 입력합니다. 전체 목록은 속성을 참조하세요.
- Redshift 노드의 라벨(예:
Redshift tables
)을 입력합니다. 다음 연결 세부정보를 입력합니다. 새로운 일회성 연결 또는 재사용 가능한 기존의 연결을 설정할 수 있습니다.
새로운 연결
Redshift에 일회성 연결을 추가하려면 다음 단계를 따르세요.
- 연결 사용을 사용 중지된 상태로 유지합니다.
- JDBC 드라이버 이름 필드에 드라이버 이름을 입력합니다. Redshift는 CData 및 Amazon의 두 가지 JDBC 드라이버 유형을 지원합니다. 자세한 내용은 JDBC 드라이버 업로드를 참조하세요.
- 호스트 필드에 Redshift 클러스터의 엔드포인트를 입력합니다(예:
cdf-redshift-new.example-endpoint.eu-west-1.redshift.amazonaws.com
). - 선택사항: 포트 필드에 데이터베이스 포트 번호를 입력합니다(예:
5439
). Redshift 데이터베이스에 인증이 필요한 경우 다음을 수행합니다.
- 사용자 이름 필드에 데이터베이스의 이름을 입력합니다.
- 비밀번호 필드에 데이터베이스의 비밀번호를 입력합니다.
- 선택사항: 인수 필드에 키 값 인수를 입력합니다. CData 드라이버를 사용하려면 RTK 또는 OEMKey와 같은 연결 인수를 제공합니다(해당하는 경우).
- 이름 필드에 이름(예:
SN-PC-Source-01-01-2024
)을 입력합니다. - 데이터베이스 필드에 대상 데이터베이스 이름(예:
datafusiondb
)을 입력합니다.
재사용 가능한 연결
기존 연결을 재사용하려면 다음 단계를 따르세요.
- 연결 사용을 사용 설정합니다.
- 연결 찾아보기를 클릭합니다.
연결 이름을 클릭합니다.
선택사항: 연결이 존재하지 않고 재사용 가능한 새 연결을 만들려면 연결 추가를 클릭하고 이 페이지의 새 연결 탭의 단계를 참조하세요.
쿼리 가져오기 필드에 Redshift 소스의 스키마 및 테이블 이름을 사용하여 쿼리를 입력합니다(예:
Select * from "public"."users"
).선택사항: 경계 쿼리 또는 분할 수와 같은 고급 속성을 입력합니다. 모든 속성 설명은 속성을 참조하세요.
- Redshift 노드의 라벨(예:
선택사항: 검증을 클릭하고 발견된 오류를 해결합니다.
닫기를 클릭합니다. 속성은 저장되고 Cloud Data Fusion 웹 인터페이스에서 데이터 파이프라인을 계속 빌드할 수 있습니다.
속성
속성 | 자동화를 위한 매크로 지원 | 필수 속성 | 설명 |
---|---|---|---|
라벨 | No | 예 | 데이터 파이프라인의 노드 이름 |
연결 사용 | No | No | 소스 연결을 찾습니다. 연결 사용이 사용 설정되어 있으면 사용자 인증 정보를 제공할 필요가 없습니다. |
연결 | 예 | 예 | 사용할 연결의 이름입니다. 연결 사용을 선택하면 이 필드가 표시됩니다. 데이터베이스 및 테이블 정보는 연결을 통해 제공됩니다. |
JDBC 드라이버 이름 | 예 | 예 | 사용할 JDBC 드라이버의 이름입니다. 연결 사용이 선택되지 않은 경우 이 필드가 표시됩니다. |
호스트 | 예 | 예 | Amazon Redshift 클러스터의 엔드포인트입니다. 연결 사용이 선택되지 않은 경우 이 필드가 표시됩니다. |
포트 | 예 | No | Redshift가 실행 중인 포트입니다. 연결 사용이 선택되지 않은 경우 이 필드가 표시됩니다. |
사용자 이름 | 예 | No | 지정된 데이터베이스에 연결하기 위한 사용자 ID입니다. 연결 사용이 선택되지 않은 경우 이 필드가 표시됩니다. |
비밀번호 | 예 | No | 지정된 데이터베이스에 연결하는 데 사용할 비밀번호입니다. 연결 사용이 선택되지 않은 경우 이 필드가 표시됩니다. |
연결 인수 | 예 | No | 연결 인수로 사용되는 임의의 문자열 키-값 쌍 목록입니다. 이러한 인수는 JDBC 드라이버에 추가 구성이 필요할 수 있는 JDBC 드라이버의 연결 인수로 전달됩니다. 연결 사용이 선택되지 않은 경우 이 필드가 표시됩니다. |
참조 이름 | No | 예 | 계보, 주석 추가 메타데이터, 기타 서비스에 대해 이 소스를 고유하게 식별합니다. |
데이터베이스 | 예 | 예 | Redshift 데이터베이스 이름입니다. 데이터를 선택하려면 데이터베이스 찾아보기를 클릭합니다. |
쿼리 가져오기 | 예 | 예 | 지정된 테이블에서 데이터를 가져오는 데 사용할 SELECT 쿼리입니다. |
경계 쿼리 | 예 | No | splitBy 필드에서 최솟값과 최댓값을 반환하는 SQL 쿼리입니다. 예를 들면 SELECT MIN(id),MAX(id) FROM table 입니다. numSplits 가 1로 설정된 경우에는 필요하지 않습니다. |
Split column(열 분할) | 예 | No | 분할을 생성하는 데 사용되는 필드 이름입니다. numSplits 가 1로 설정된 경우에는 필요하지 않습니다. |
분할 수 | 예 | No | 생성할 분할 수 |
크기 | 예 | No | 분할당 한 번에 가져올 행 수입니다. 가져오기 크기가 클수록 가져오기 속도가 빨라지지만 메모리 사용량이 증가합니다. 지정하지 않는 경우 기본값은 1000 입니다. |
데이터 유형 매핑
다음 표에서는 해당 CDAP 유형의 Redshift 데이터 유형 목록입니다.
Redshift 데이터 유형 | CDAP 스키마 데이터 유형 |
---|---|
bigint |
long |
boolean |
boolean |
character |
string |
character varying |
string |
date |
date |
double precision |
double |
geometry |
bytes |
hllsketch |
string |
integer |
int |
json |
string |
numeric (정밀도, 소수 자릿수)/decimal (정밀도, 소수 자릿수) |
decimal |
정밀도가 0인 numeric |
string |
real |
float |
smallint |
int |
super |
string |
text |
string |
time [ (p) ](시간대 제외) |
time |
time [ (p) ](시간대 포함) |
string |
timestamp [ (p) ](시간대 제외) |
timestamp |
timestamp [ (p) ](시간대 포함) |
timestamp |
varbyte |
byte |
xml |
string |
권장사항
Google Cloud에서 Redshift 클러스터에 연결할 때는 다음 권장사항이 적용됩니다.
IP 주소 허용 목록 사용
승인되지 않은 소스의 액세스를 방지하고 특정 IP 주소에 대한 액세스를 제한하려면 Redshift 클러스터에서 액세스 제어를 사용 설정합니다.
Redshift 액세스 제어를 사용하는 경우 Cloud Data Fusion에서 클러스터에 액세스하려면 다음 단계를 따르세요.
- Google Cloud에서 프록시 서버 IP와 같이 Redshift 클러스터에 연결해야 하는 서비스 또는 머신의 외부 IP 주소를 가져옵니다(IP 주소 보기 참조). Dataproc 클러스터의 경우 모든 마스터 및 하위 노드의 IP 주소를 가져옵니다.
Google Cloud 머신 IP 주소의 인바운드 규칙을 만들어 보안 그룹의 허용 목록에 IP 주소를 추가합니다.
Wrangler에서 연결 속성을 추가하고 테스트합니다.
- 웹 인터페이스에서 Cloud Data Fusion 인스턴스를 엽니다.
- Wrangler > 연결 추가를 클릭하고 Redshift에 대한 새 연결을 만듭니다.
- 모든 연결 속성을 입력합니다.
- 연결 테스트를 클릭하고 문제를 해결합니다.
여러 분할을 만들려면 경계 쿼리를 사용합니다.
분할이 여러 개인 경우 경계 쿼리를 사용하여 멀티 노드 클러스터를 관리합니다. Redshift에서 데이터를 추출하고 각 노드에 로드를 균일하게 분산하는 시나리오에서는 Redshift 소스 커넥터 속성에 경계 쿼리를 구성합니다.
- 스튜디오 페이지의 Cloud Data Fusion 파이프라인에서 Redshift 노드로 이동하고 속성을 클릭합니다.
고급 속성에서 다음을 지정합니다.
- 생성할 분할 수를 입력합니다.
- 각 분할의 가져오기 크기를 입력합니다.
- 멀티 노드 Redshift 클러스터에 적용할 경계 쿼리를 입력합니다.
- 열 분할 필드 이름을 입력합니다.
예를 들어 다음과 같은 사용 사례가 있다고 가정합니다.
- 1,000만 개의 레코드가 포함된 테이블이 있습니다.
id
라는 고유 ID 열이 있습니다.- Redshift 클러스터에는 4개의 노드가 있습니다.
목표: 클러스터의 잠재력을 활용하기 위해 여러 개의 분할을 생성하려고 합니다. 이렇게 하려면 다음 속성 구성을 사용합니다.
경계 쿼리 필드에 다음 쿼리를 입력합니다.
SELECT MIN(id), MAX(id) FROM tableName
이 쿼리에서
id
는 분할이 적용되는 열의 이름입니다.열 분할 필드에 열 이름
id
를 입력합니다.분할 수와 가져오기 크기를 입력합니다. 이러한 속성은 상호 연결되어 있으므로 가져오기 크기를 기준으로 분할을 계산할 수도 있고 그 반대도 가능합니다. 이 예시에서는 다음을 입력합니다.
분할 수 필드에
40
을 입력합니다. 테이블에 1,000만 개의 레코드가 있는 이 예시에서 40개의 분할을 만들면 각 분할에 250,000개의 레코드가 포함됩니다.가져오기 크기 필드에
250,000
을 입력합니다.
다음 단계
- Cloud Data Fusion 플러그인을 살펴봅니다.