CREATE TABLE - Amazon Athena

문서의 영문과 번역 사이에 충돌이 있는 경우에는 영문 버전을 따릅니다. 번역 버전은 기계 번역을 사용하여 제공합니다.

CREATE TABLE

지정한 파라미터와 이름으로 테이블을 생성합니다.

Synopsis

CREATE [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name [(col_name data_type [COMMENT col_comment] [, ...] )] [COMMENT table_comment] [PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)] [ROW FORMAT row_format] [STORED AS file_format] [WITH SERDEPROPERTIES (...)] ] [LOCATION 's3://bucket_name/[folder]/'] [TBLPROPERTIES ( ['has_encrypted_data'='true | false',] ['classification'='aws_glue_classification',] property_name=property_value [, ...] ) ]

Parameters

[EXTERNAL]

테이블이 사용자가 지정한 LOCATION의 Amazon S3에 있는 기본 데이터 파일을 기반으로 하도록 지정합니다. 외부 테이블을 만들 때 참조되는 데이터는 기본 형식 또는 ROW FORMAT, STORED AS, WITH SERDEPROPERTIES 절로 지정한 형식을 준수해야 합니다.

IF NOT EXISTS

table_name이라는 테이블이 이미 있으면 오류 메시지가 억제되도록 합니다.

[db_name.]table_name

테이블의 이름이 생성되도록 지정합니다. 옵션 db_name 파라미터는 테이블이 있는 데이터베이스를 지정합니다. 생략하면 현재 데이터베이스로 가정됩니다. 테이블 이름에 숫자가 포함된 경우 table_name 따옴표, 예를 들어 "table123". IF table_name 밑줄로 시작합니다. 예를 들어, `_mytable`. 특수 문자(밑줄 제외)는 지원되지 않습니다.

Athena 테이블 이름은 대소문자를 구분하지 않으나 Apache Spark로 작업하는 경우 Spark에는 소문자 테이블 이름이 필요합니다.

[ ( col_name data_type [COMMENT col_comment] [, ...] ) ]

열의 데이터 형식과 함께, 작성될 각 열의 이름을 지정합니다. 열 이름은 밑줄 이외의 특수 문자를 허용하지 않습니다. (_). IF col_name 밑줄로 시작하며, 예를 들어 백틱에 컬럼 이름을 동봉합니다. `_mycolumn`.

data_type 값은 다음 중 하나일 수 있습니다.

  • BOOLEAN. 값은 true and false.

  • TINYINT. 8비트 서명 INTEGER 2개의 보체 포맷으로, 최소 값이 -2^7 및 2^7-1 입니다.

  • SMALLINT. 16비트 서명 INTEGER 2개의 보체 포맷으로, 최소값 -2^15 및 2^15-1 의 최대값을 갖습니다.

  • INT. Athena는 INTEGER 데이터 형식에 대해 서로 다른 2가지 구현을 사용합니다. 데이터 정의 언어(DDL) 쿼리에서 Athena은(는) INT 데이터 형식을 사용합니다. 다른 모든 쿼리에서 Athena는 INTEGER 데이터 형식을 사용합니다. 여기에서 INTEGER는 2의 보수 형식의 부호 있는 32비트 값으로 표현되며, 최솟값은 -2^31, 최댓값은 2^31-1입니다. JDBC 드라이버의 경우 비즈니스 분석 애플리케이션과 호환될 수 있도록 INTEGER이(가) 반환됩니다.

  • BIGINT. 2의 보수 형식의 부호 있는 64비트 INTEGER, 최솟값은 -2^63, 최댓값은 2^63-1.

  • DOUBLE

  • FLOAT

  • DECIMAL [ (precision, scale) ], 여기에서 precision은 총 자릿수이고, scale(선택 사항)은 소수부의 자릿수이며, 기본값은 0입니다. 예를 들어 , 형식 정의를 사용합니다. DECIMAL(11,5), DECIMAL(15).

    쿼리의 DDL 표현식에 특정 소수점 값을 가진 행을 선택할 때와 같이 문자로 소수점 값을 지정하려면 DECIMAL 이 예제에서와 같이 쿼리에 대한 문자(단일 따옴표로 표시)로 정의된 값을 입력합니다. decimal_value = DECIMAL '0.12'.

  • CHAR. 고정 길이 문자 데이터는 다음과 같이 지정된 길이가 1 ~ 255 사이입니다. char(10). 자세한 내용은 CHAR Hive 데이터 유형.

  • VARCHAR. 가변 길이 문자 데이터는 1과 65535 사이의 지정된 길이를 가진 varchar(10). 자세한 내용은 VARCHAR Hive 데이터 유형.

  • STRING. 싱글 또는 큰따옴표로 묶인 문자열 리터럴.

    참고

    비 문자열 데이터 유형은 Athena에서 STRING으로 캐스팅할 수 없습니다. 대신 VARCHAR로 캐스팅하십시오.

  • BINARY(Parquet의 데이터용)

  • 날짜 및 시간 형식

  • DATE 다음과 같은 ISO 형식의 날짜 YYYY-MM-DD. 예를 들어, DATE '2008-09-15'.

  • TIMESTAMP 날짜 및 시간 java.sql.Timestamp 다음과 같은 호환성 포맷 yyyy-MM-dd HH:mm:ss[.f...]. 예를 들어, TIMESTAMP '2008-09-15 03:04:05.324'. 이 형식은 세션 시간대를 사용합니다.

  • ARRAY < data_type >

  • MAP < primitive_type, data_type >

  • STRUCT < col_name : data_type [COMMENT col_comment] [, ...] >

[COMMENT table_comment]

comment 테이블 속성을 만들고, 지정한 table_comment로 채웁니다.

[PARTITIONED BY (col_name data_type [ COMMENT col_comment ], ... ) ]

col_name, data_typecol_comment가 지정되어 있으며 하나 이상의 파티션 열로 분할된 테이블을 생성합니다. 테이블에는 고유한 열 이름과 값 조합으로 구성된 하나 이상의 파티션이 있을 수 있습니다. 지정된 각각의 조합에 별개의 데이터 디렉터리가 생성되어 상황에 따라 쿼리 성능을 개선할 수 있습니다. 분할된 열은 테이블 데이터 자체 내에는 존재하지 않습니다. 테이블 열과 동일한 col_name에 대한 값을 사용하는 경우 오류가 발생합니다. 자세한 내용은 데이터 파티셔닝을 참조하십시오.

참고

파티션이 포함된 테이블을 만든 후 다음으로 구성된 후속 쿼리를 실행합니다. MSCK 수리 표 &t={\f52 ;예&t=};&t={\f52 ;, &t=};&t={\f MSCK REPAIR TABLE cloudfront_logs;. Hive와 호환되지 않는 파티션의 경우 ALTER TABLE ADD PARTITION 데이터를 쿼리할 수 있도록 파티션을 로드합니다.

[ROW FORMAT row_format]

해당되는 경우 테이블의 행 형식과 기본 소스 데이터를 지정합니다. row_format의 경우 DELIMITED 절을 이용해 하나 이상의 구분 기호를 지정하거나 아래 설명된 대로 SERDE 절을 사용합니다. ROW FORMAT을 생략하거나 ROW FORMAT DELIMITED를 지정하면 기본 SerDe가 사용됩니다.

  • [DELIMITED FIELDS TERMINATED BY char [ESCAPED BY char]]

  • [DELIMITED COLLECTION ITEMS TERMINATED BY char]

  • [MAP KEYS TERMINATED BY char]

  • [LINES TERMINATED BY char]

  • [NULL DEFINED AS char]

    SATES AS 파일 형식이 TEXTFILE인 경우 Hive 0.13에서만 사용할 수 있습니다.

--또는--

  • SERDE 'serde_name' [WITH SERDEPROPERTIES ("property_name" = "property_value", "property_name" = "property_value" [, ...] )]

    serde_name은 사용할 SerDe를 나타냅니다. WITH SERDEPROPERTIES 절을 사용하면 SerDe에서 허용하는 하나 이상의 사용자 지정 속성을 제공할 수 있습니다.

[STORED AS file_format]

테이블 데이터의 파일 형식을 지정합니다. 지정하지 않을 경우, TEXTFILE이 기본값입니다. file_format 옵션은 다음과 같습니다.

  • SEQUENCEFILE

  • TEXTFILE

  • RCFILE

  • ORC

  • PARQUET

  • AVRO

  • INPUTFORMAT 'input_format_classname' OUTPUTFORMAT 'output_format_classname'

[LOCATION 's3://bucket_name/[folder]/']

테이블을 생성할 Amazon S3의 기본 데이터 위치를 지정합니다. 위치 경로는 버킷 이름 또는 버킷 이름과 하나 이상의 폴더여야 합니다. 파티션을 사용하는 경우 분할된 데이터의 루트를 지정합니다. 테이블 위치에 대한 자세한 내용은 Amazon S3에서의 테이블 위치 단원을 참조하십시오. 데이터 형식 및 권한에 대한 자세한 내용은 Athena의 테이블 및 Amazon S3의 데이터 요구 사항을 참조하십시오.

폴더 또는 버킷에 후행 슬래시를 사용합니다. 파일 이름이나 glob 문자를 사용하지 마십시오.

다음 사용:

s3://mybucket/

s3://mybucket/folder/

s3://mybucket/folder/anotherfolder/

사용 금지:

s3://path_to_bucket

s3://path_to_bucket/*

s3://path_to-bucket/mydatafile.dat

[TBLPROPERTIES ( ['has_encrypted_data'='true | false',] ['classification'='aws_glue_classification',] property_name=property_value [, ...] ) ]

사전 정의된 테이블 속성 외에 테이블 정의에 사용할 사용자 지정 메타데이터 키-값 페어를 지정합니다(예: "comment").

Athena 빌트인 속성이 있습니다 has_encrypted_data. 이 속성을 다음으로 설정 true 아래에 지정된 기본 데이터세트가 LOCATION 암호화된 상태입니다. 생략할 경우 작업 그룹의 설정이 클라이언트 측 설정을 재정의하지 않으면, false로 간주됩니다. 기본 데이터가 암호화되는데 false로 설정하거나 생략되면, 쿼리 결과가 오류가 됩니다. 자세한 정보는 암호화 옵션 구성을 참조하십시오.

ETL 작업을 실행하려면 AWS Glue(AWS 접착제)가 classification AWS Glue 데이터 유형을 csv, parquet, orc, avro, 또는 json. 예를 들어, 'classification'='csv'. 이 속성을 지정하지 않으면 ETL 작업이 실패합니다. 이어서 AWS Glue 콘솔, API 또는 CLI를 사용해 이를 지정할 수 있습니다. 자세한 내용은 Athena와 함께 ETL에 AWS Glue 작업 사용 and Glue에서 작업 작성 in the AWS 글루 개발자 가이드.

Examples

CREATE EXTERNAL TABLE IF NOT EXISTS mydatabase.cloudfront_logs ( Date DATE, Time STRING, Location STRING, Bytes INT, RequestIP STRING, Method STRING, Host STRING, Uri STRING, Status INT, Referrer STRING, os STRING, Browser STRING, BrowserVersion STRING ) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe' WITH SERDEPROPERTIES ( "input.regex" = "^(?!#)([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+[^\(]+[\(]([^\;]+).*\%20([^\/]+)[\/](.*)$" ) LOCATION 's3://athena-examples-myregion/cloudfront/plaintext/';