Impala를 사용하면 표준 SQL 구문을 사용하여 Kudu에 데이터를 삽입 할 수 있습니다.
단일 값 삽입
이 예에서는 단일 행을 삽입합니다.
INSERT INTO my_first_table VALUES (99, "sarah");
이 예에서는 단일 문을 사용하여 3 개의 행을 삽입합니다.
INSERT INTO my_first_table VALUES (1, "john"), (2, "jane"), (3, "jim");
대량으로 삽입
대량으로 삽입 할 때 최소한 세 가지 일반적인 선택 사항이 있습니다. 데이터와 상황에 따라 각각 장단점이있을 수 있습니다.
여러 단일 INSERT문
이 접근 방식은 이해하고 구현하기 쉽다는 장점이 있습니다. Impala는 Kudu의 삽입 성능에 비해 쿼리 시작 비용이 높기 때문에이 접근 방식은 비효율적 일 수 있습니다. 이로 인해 상대적으로 높은 지연 시간과 낮은 처리량이 발생합니다.
INSERT여러 개의 단일 문VALUES
1024 개 이상의 VALUES문 을 포함하는 경우 Impala batch_size는 요청을 Kudu로 보내기 전에 1024 개 (또는 값)의 그룹으로 일괄 처리합니다 . 이 접근 방식은 INSERTImpala 측에서 쿼리 시작 패널티를 상각하여 여러 순차 문 보다 약간 더 나은 성능 을 발휘할 수 있습니다. 현재 Impala Shell 세션의 배치 크기를 설정하려면 다음 구문을 사용하십시오.set batch_size=10000;
일괄 삽입
Impala와 Kudu의 관점에서 일반적으로 가장 잘 수행되는 접근 방식은 일반적으로 Impala의 SELECT FROM명령문을 사용하여 데이터를 가져 오는 것 입니다.
- 데이터가 아직 Impala에없는 경우 한 가지 전략은 TSV 또는 CSV 파일과 같은 텍스트 파일에서 데이터를 가져 오는 것입니다 .
- Kudu 테이블을 생성합니다. 기본 키로 지정된 열은 null 값을 가질 수 없습니다.
- 다음 예와 같이 원본 데이터가 포함 된 테이블을 쿼리하여 Kudu 테이블에 값을 삽입합니다.
- INSERT INTO my_kudu_table SELECT * FROM legacy_data_import_table;
C ++ 또는 Java API를 사용하여 수집
대부분의 경우 적절한 수집 경로는 C ++ 또는 Java API를 사용하여 Kudu 테이블에 직접 삽입하는 것입니다. 다른 Impala 테이블과 달리 API를 통해 Kudu 테이블에 삽입 된 데이터 INVALIDATE METADATA는 다른 Impala 스토리지 유형에 필요한 명령문이나 다른 명령문 없이 Impala에서 쿼리에 사용할 수 있습니다.
INSERT 및 기본 키 고유성 위반
대부분의 관계형 데이터베이스에서 이미 삽입 된 행을 삽입하려고하면 기본 키가 중복되므로 삽입이 실패합니다. 참조 하는 동안 실패 INSERT, UPDATE및 DELETE운영을 . 그러나 Impala는 쿼리에 실패하지 않습니다. 대신 경고를 생성하지만 나머지 insert 문을 계속 실행합니다.
삽입 된 행이 기존 행을 대체하려는 경우 UPSERT대신을 사용할 수 있습니다 INSERT.
실패시 INSERT, UPDATE및 DELETE운영
INSERT, UPDATE및 DELETE문은 전체적으로 트랜잭션으로 간주 될 수 없습니다. 이러한 작업 중 하나가 도중에 실패하면 키가 이미 생성되었거나 (의 경우 INSERT) 레코드가 다른 프로세스 ( UPDATE또는 의 경우)에 의해 이미 수정 또는 제거되었을 수 있습니다 DELETE. 이를 염두에두고 애플리케이션을 설계해야합니다.
테이블 속성 변경
테이블의 속성을 변경하여 주어진 Kudu 테이블과 관련된 Impala의 메타 데이터를 변경할 수 있습니다. 이러한 속성에는 테이블 이름, Kudu 마스터 주소 목록 및 테이블이 Impala (내부)에서 관리되는지 외부에서 관리되는지 여부가 포함됩니다.
'기술_Kudu' 카테고리의 다른 글
Apache Must 관리 (0) | 2022.07.07 |
---|---|
테이블 삭제 (0) | 2022.07.06 |
SQL 술어 평가를위한 성능 최적화 (0) | 2022.07.06 |
기존 테이블 쿼리 (0) | 2022.07.06 |
Apache Impala와 함께 Apache 사용 (0) | 2022.07.06 |