경우 WHERE쿼리의 절은 운영자와의 비교를 포함 =, <='\ <', '\>' >=, BETWEEN또는 IN, 쿠두 직접 상태를 평가하고 만 관련 결과를 반환합니다. Kudu는 관련 결과 만 Impala에 반환하기 때문에 최적의 성능을 제공합니다. 술어 !=, LIKE또는 Impala에서 지원하는 다른 술어 유형의 경우 Kudu는 술어를 직접 평가하지 않지만 모든 결과를 Impala에 반환하고 Impala를 사용하여 나머지 술어를 평가하고 그에 따라 결과를 필터링합니다. 이로 인해 WHERE절 평가 전후의 결과 집합의 델타에 따라 성능 차이가 발생할 수 있습니다 .
테이블 분할
테이블은 기본 키 열의 파티션 스키마에 따라 태블릿으로 분할됩니다. 각 태블릿은 하나 이상의 태블릿 서버에서 제공됩니다. 이상적으로는 테이블을 여러 태블릿 서버에 분산 된 태블릿으로 분할하여 병렬 작업을 최대화해야합니다. 사용하는 분할 스키마의 세부 정보는 저장하는 데이터 유형과 액세스 방법에 따라 전적으로 달라집니다. Kudu의 스키마 디자인에 대한 자세한 내용은 Schema Design을 참조하십시오 .
Kudu에는 현재 테이블이 생성 된 후 태블릿을 분할하거나 병합하는 메커니즘이 없습니다. 테이블을 만들 때 테이블에 대한 파티션 스키마를 제공해야합니다. 테이블을 디자인 할 때 비슷한 속도로 성장하는 태블릿으로 테이블을 분할 할 수있는 기본 키를 사용하는 것이 좋습니다.
또는로 PARTITION BY배포를 지원 하는 Impala 키워드를 사용하여 테이블을 분할 할 수 있습니다 . 파티션 구성표에는 0 개 이상의 정의와 선택적 정의 가 포함될 수 있습니다 . 정의는 하나 이상의 기본 키 열을 참조 할 수 있습니다. 기본 및 고급 파티셔닝의 예 는 다음과 같습니다.RANGEHASHHASHRANGERANGE
기본 파티셔닝
PARTITION BY RANGE
하나 이상의 기본 키 열에 범위 파티션을 지정할 수 있습니다. Kudu의 범위 분할을 사용하면 선택한 파티션 키의 특정 값 또는 값 범위를 기반으로 테이블을 분할 할 수 있습니다. 이를 통해 쓰기 병렬 처리와 스캔 효율성의 균형을 맞출 수 있습니다.
당신이 열이있는 테이블이 있다고 가정 state, name및 purchase_count. 다음 예에서는 미국 주당 하나씩 50 개의 태블릿을 만듭니다.
PARTITION BY HASH
명시 적 범위로 배포하거나 범위 배포와 함께 배포하는 대신 해시별로 특정 수의 '버킷'으로 배포 할 수 있습니다. 파티션을 나눌 기본 키 열과 사용할 버킷 수를 지정합니다. 행은 지정된 키 열을 해싱하여 분산됩니다. 해시되는 값 자체가 심각한 왜곡을 나타내지 않는다고 가정하면 버킷에 데이터를 균등하게 분산하는 데 도움이됩니다.
여러 정의를 지정할 수 있으며 복합 기본 키를 사용하는 정의를 지정할 수 있습니다. 그러나 여러 해시 정의에서 하나의 열을 언급 할 수 없습니다. 두 개의 열을 고려
해시 파티셔닝은 기본 키 값이 도메인에 균등하게 분산되어 있고 타임 스탬프 또는 일련 ID와 같은 데이터 왜곡이 분명하지 않은 경우 합리적인 접근 방식입니다.
다음 예에서는 id및 sku열 을 해싱하여 16 개의 태블릿을 만듭니다 . 이렇게하면 16 개의 모든 태블릿에 쓰기가 분산됩니다. 이 예에서 sku값 범위에 대한 쿼리 는 16 개의 태블릿을 모두 읽어야하므로이 테이블에 대한 최적의 스키마가 아닐 수 있습니다. 확장 된 예는 고급 파티셔닝 을 참조하십시오 .
'기술_Kudu' 카테고리의 다른 글
테이블 삭제 (0) | 2022.07.06 |
---|---|
테이블에 데이터 삽입 (0) | 2022.07.06 |
기존 테이블 쿼리 (0) | 2022.07.06 |
Apache Impala와 함께 Apache 사용 (0) | 2022.07.06 |
기존 테이블 업그레이드 (0) | 2022.07.06 |