Google BigQuery
이 커넥터는 Glue 데이터 카탈로그에 페더레이션 카탈로그로 등록할 수 있습니다. 카탈로그, 데이터베이스, 테이블, 열, 행 및 태그 수준에서 Lake Formation에 정의된 데이터 액세스 제어를 지원합니다. 이 커넥터는 Glue Connections를 사용하여 Glue의 구성 속성을 중앙 집중화합니다.
사전 조건
Athena 콘솔 또는 AWS Serverless Application Repository를 사용하여 AWS 계정에 커넥터를 배포합니다. 자세한 내용은 데이터 소스 연결 생성 또는 AWS Serverless Application Repository을 사용하여 데이터 소스 커넥터 배포을 참조하세요.
제한 사항
-
Lambda 함수의 최대 제한 시간 값은 15분입니다. 각 분할은 BigQuery에서 쿼리를 실행하며 Athena에서 읽을 결과를 저장할 수 있는 충분한 시간을 두고 완료해야 합니다. Lambda 함수가 시간 초과되면 쿼리가 실패합니다.
-
Google BigQuery는 대/소문자를 구분합니다. 커넥터는 데이터세트 이름, 테이블 이름 및 프로젝트 ID의 대/소문자를 수정하려고 시도합니다. 이는 Athena가 모든 메타데이터를 소문자로 만들기 때문에 필요합니다. 이러한 수정으로 인해 Google BigQuery에 대한 추가 호출이 많이 발생합니다.
-
바이너리 데이터 형식은 지원되지 않습니다.
-
Google BigQuery 동시성 및 할당량 제한으로 인해 커넥터에 Google 할당량 제한 문제가 발생할 수 있습니다. 이러한 문제를 방지하려면 Google BigQuery에 최대한 많은 제약 조건을 푸시합니다. BigQuery 할당량에 대한 자세한 내용을 알아보려면 Google BigQuery 설명서의 할당량 및 한도
를 참조하세요.
파라미터
이 섹션의 파라미터를 사용하여 Google BigQuery 커넥터를 구성합니다.
Glue 연결 객체를 사용하여 Google BigQuery 커넥터를 구성하는 것이 좋습니다. 이렇게 하려면 Google BigQuery 커넥터 Lambda의 glue_connection
환경 변수를 사용할 Glue 연결 이름으로 설정합니다.
Glue 연결 속성
다음 명령을 사용하여 Glue 연결 객체에 대한 스키마를 가져옵니다. 이 스키마에는 연결을 제어할 때 사용할 수 있는 모든 파라미터가 포함되어 있습니다.
aws glue describe-connection-type --connection-type BIGQUERY
Lambda 환경 속성
glue_connection - 페더레이션 커넥터와 연결된 Glue 연결의 이름을 지정합니다.
분할 및 뷰
BigQuery 커넥터는 BigQuery Storage Read API를 사용하여 테이블을 쿼리하고, BigQuery Storage API는 뷰를 지원하지 않기 때문에 커넥터는 뷰의 단일 분할에 BigQuery 클라이언트를 사용합니다.
성능
테이블 쿼리를 위해 BigQuery 커넥터는 BigQuery 관리 스토리지에 빠르게 액세스할 수 있는 RPC 기반 프로토콜을 사용하는 BigQuery Storage Read API를 사용합니다. BigQuery 스토리지 읽기 API에 대한 자세한 내용은 Google Cloud 문서에서 Use the BigQuery Storage Read API to read table data
열의 하위 집합을 선택하면 쿼리 런타임 속도를 높이고 스캔되는 데이터를 줄일 수 있습니다. 동시성이 증가함에 따라 커넥터에서 쿼리 오류가 발생할 수 있으며 일반적으로 커넥터가 느립니다.
Athena Google BigQuery 커넥터는 조건부 푸시다운을 수행하여 쿼리에서 스캔하는 데이터를 줄입니다. LIMIT
절, ORDER BY
절, 간단한 조건자 및 복잡한 표현식을 커넥터로 푸시다운하여 스캔하는 데이터와 쿼리 실행 시간을 줄입니다.
LIMIT 절
LIMIT N
문은 쿼리로 스캔하는 데이터를 줄입니다. LIMIT N
푸시다운을 통해 커넥터는 Athena에 N
개 행만 반환합니다.
상위 N개 쿼리
상위 N
개 쿼리는 결과 세트의 순서와 반환되는 행 수에 대한 한도를 지정합니다. 이 유형의 쿼리를 사용하여 데이터 세트에 대해 상위 N
개의 최댓값 또는 상위 N
개의 최솟값을 결정할 수 있습니다. 상위 N
개의 푸시다운을 통해 커넥터는 Athena에 N
개의 정렬된 행만 반환합니다.
Predicates
조건자는 부울 값으로 평가되고 여러 조건에 따라 행을 필터링하는 SQL 쿼리의 WHERE
절에 사용되는 표현식입니다. Athena Google BigQuery 커넥터는 이러한 표현식을 결합하고 Google BigQuery로 직접 푸시하여 기능을 개선하고 스캔하는 데이터를 줄일 수 있습니다.
다음 Athena Google BigQuery 커넥터 연산자는 조건자 푸시다운을 지원합니다.
-
부울: AND, OR, NOT
-
관계: EQUAL, NOT_EQUAL, LESS_THAN, LESS_THAN_OR_EQUAL, GREATER_THAN, GREATER_THAN_OR_EQUAL, IS_DISTINCT_FROM, NULL_IF, IS_NULL
-
산술: ADD, SUBTRACT, MULTIPLY, DIVIDE, MODULUS, NEGATE
-
기타: LIKE_PATTERN, IN
결합된 푸시다운 예제
쿼리 기능을 개선하기 위해 다음 예제와 같이 푸시다운 유형을 결합합니다.
SELECT *
FROM my_table
WHERE col_a > 10
AND ((col_a + col_b) > (col_c % col_d))
AND (col_e IN ('val1', 'val2', 'val3') OR col_f LIKE '%pattern%')
ORDER BY col_a DESC
LIMIT 10;
패스스루 쿼리
Google BigQuery 커넥터는 패스스루 쿼리를 지원합니다. 패스스루 쿼리는 테이블 함수를 사용하여 실행을 위해 전체 쿼리를 데이터 소스로 푸시다운합니다.
Google BigQuery에서 패스스루 쿼리를 사용하려면 다음 구문을 사용합니다.
SELECT * FROM TABLE(
system.query(
query => 'query string
'
))
다음 예제 쿼리는 Google BigQuery의 데이터 소스로 쿼리를 푸시다운합니다. 쿼리는 customer
테이블의 모든 열을 선택하여 결과를 10개로 제한합니다.
SELECT * FROM TABLE(
system.query(
query => 'SELECT * FROM customer LIMIT 10'
))
라이선스 정보
Amazon Athena Google BigQuery 커넥터 프로젝트는 Apache-2.0 라이선스
이 커넥터를 사용하면 이 커넥터에 대한 pom.xml
추가 리소스
이 커넥터에 대한 추가 정보를 알아보려면 GitHub.com의 해당 사이트