기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
S3 Select와 함께 Hive를 사용하여 성능 향상
Amazon EMR 릴리스 버전 5.18.0 이상에서는 Amazon 에서 S3 Select
S3 Select는 CSV Hive 세션 true
중에 및 JSON 파일을 기반으로 구성 s3select.filter
변수를 로 설정하여 Hive 테이블에서 지원됩니다. 자세한 정보와 지침은 코드에서 S3 Select 지정 섹션을 참조하세요.
S3 Select가 애플리케이션에 적합한가요?
S3 Select 사용 여부에 관계없이 애플리케이션을 벤치마킹하여 애플리케이션에 적합한지 여부를 확인하는 것이 좋습니다.
다음 지침을 사용하여 애플리케이션과 함께 S3 Select를 사용할 수 있는지 확인하십시오.
-
쿼리가 원본 데이터 세트 중 반 이상을 필터링합니다.
-
쿼리 필터 조건자가 Amazon S3 Select에서 지원하는 데이터 형식의 열을 사용합니다. 자세한 내용은 Amazon Simple Storage Service 사용 설명서에서 데이터 유형을 참조하세요.
-
Amazon S3와 Amazon EMR 클러스터 간의 네트워크 연결은 전송 속도와 사용 가능한 대역폭이 좋습니다. Amazon S3는 HTTP 응답을 압축하지 않으므로 압축된 입력 파일의 응답 크기가 증가할 수 있습니다.
고려 사항 및 제한
-
고객 제공 암호화 키(-SSEC) 및 클라이언트 측 암호화를 사용한 Amazon S3 서버 측 암호화는 지원되지 않습니다.
-
AllowQuotedRecordDelimiters
속성이 지원되지 않습니다. 이 속성이 지정되면 쿼리가 실패합니다. -
UTF-8 형식의 CSV 및 JSON 파일만 지원됩니다. 다중 라인 CSVs 및 JSON는 지원되지 않습니다.
-
압축되지 않거나 gzip 또는 bzip2 파일이 지원되지 않습니다.
-
마지막 줄의 설명 문자는 지원되지 않습니다.
-
파일 끝의 빈 줄은 처리되지 않습니다.
-
Amazon의 HiveEMR는 S3 Select가 지원하는 기본 데이터 유형을 지원합니다. 자세한 내용은 Amazon Simple Storage Service 사용 설명서에서 데이터 유형을 참조하세요.
코드에서 S3 Select 지정
Hive 테이블에 S3 Select를 사용하려면 com.amazonaws.emr.s3select.hive.S3SelectableTextInputFormat
을 INPUTFORMAT
클래스 이름으로 지정하여 테이블을 생성하고, TBLPROPERTIES
절을 사용하여 s3select.format
속성의 값을 지정합니다.
쿼리를 실행할 때 기본적으로 S3 Select가 비활성화됩니다. 아래와 같이 Hive에서 s3select.filter
를 true
로 설정하여 S3 Select를 활성화합니다. 아래 예제에서는 기본 CSV 및 JSON 파일에서 테이블을 생성한 다음 간단한 선택 문을 사용하여 테이블을 쿼리할 때 S3 Select를 지정하는 방법을 보여줍니다.
예 CREATE TABLE CSV기반 테이블에 대한 문
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" );
예 CREATE TABLE JSON기반 테이블에 대한 문
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;