기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Hive와 함께 S3 셀렉트를 사용하여 성능 개선
Amazon EMR 릴리스 버전 5.18.0 이상에서는 Amazon EMR의 Hive와 함께 S3 Select를
S3 Select에는 CSV 및 JSON 파일을 기반으로, 그리고 Hive 세션 중에 s3select.filter
구성 변수를 true
로 설정하여 Hive 테이블이 지원됩니다. 자세한 정보와 지침은 코드에 S3 셀렉트 지정하기 섹션을 참조하세요.
S3 Select가 내 애플리케이션에 적합한가요?
S3 Select 사용 여부에 관계없이 애플리케이션을 벤치마킹하여 애플리케이션에 적합한지 여부를 확인하는 것이 좋습니다.
다음 지침을 사용하여 애플리케이션과 함께 S3 Select를 사용할 수 있는지 확인하십시오.
-
쿼리가 원본 데이터 세트 중 반 이상을 필터링합니다.
-
쿼리 필터는 Amazon S3 S3 S3 S3 ST 에서 지원하는 데이터 유형을 사용합니다. 자세한 내용은 Amazon 심플 스토리지 서비스 사용 설명서의 데이터 유형을 참조하십시오.
-
Amazon S3와 Amazon EMR 클러스터 간의 네트워크 연결은 전송 속도와 사용 가능한 대역폭이 좋습니다. Amazon S3는 HTTP 응답을 압축하지 않으므로 압축된 입력 파일의 경우 응답 크기가 커질 수 있습니다.
고려 사항 및 제한
-
고객 제공 암호화 키 (SSE-C) 로 Amazon S3 서버 측 암호화를 지원합니다.
-
AllowQuotedRecordDelimiters
속성이 지원되지 않습니다. 이 속성이 지정되면 쿼리가 실패합니다. -
UTF-8 형식의 CSV 및 JSON 파일만 지원됩니다. 여러 줄의 CSV 및 JSON은 지원되지 않습니다.
-
압축되지 않거나 gzip 또는 bzip2 파일이 지원되지 않습니다.
-
마지막 줄의 설명 문자는 지원되지 않습니다.
-
파일 끝의 빈 줄은 처리되지 않습니다.
-
Amazon EMR의 Hive는 S3 Select가 지원하는 기본 데이터 유형을 지원합니다. 자세한 내용은 Amazon 심플 스토리지 서비스 사용 설명서의 데이터 유형을 참조하십시오.
코드에 S3 셀렉트 지정하기
Hive 테이블에서 S3 Select를 사용하려면 를INPUTFORMAT
클래스 이름으로 지정하여com.amazonaws.emr.s3select.hive.S3SelectableTextInputFormat
테이블을 생성하고TBLPROPERTIES
절을 사용하여s3select.format
속성 값을 지정하십시오.
쿼리를 실행할 때 기본적으로 S3 Select가 비활성화됩니다. 아래와 같이 Hive에서 s3select.filter
를 true
로 설정하여 S3 Select를 활성화합니다. 아래의 예제는 기본 CSV 및 JSON 파일로 테이블을 생성한 후 간단한 select 문을 사용하여 테이블을 쿼리할 때 S3 Select를 지정하는 방법을 보여 줍니다.
예 CSV 기반 테이블에 대한 CREATE TABLE 문
CREATE TABLE mys3selecttable ( col1 string, col2 int, col3 boolean ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS INPUTFORMAT 'com.amazonaws.emr.s3select.hive.S3SelectableTextInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' LOCATION 's3://path/to/mycsvfile/' TBLPROPERTIES ( "s3select.format" = "csv", "s3select.headerInfo" = "ignore" );
예 JSON 기반 테이블에 대한 CREATE TABLE 문
CREATE TABLE mys3selecttable ( col1 string, col2 int, col3 boolean ) ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe' STORED AS INPUTFORMAT 'com.amazonaws.emr.s3select.hive.S3SelectableTextInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' LOCATION 's3://path/to/json/' TBLPROPERTIES ( "s3select.format" = "json" );
예 SELECT TABLE
SET s3select.filter=true; SELECT * FROM mys3selecttable WHERE col2 > 10;