CSV, TSV, 사용자 지정 구분 기호로 구분된 파일에 대한 LazySimpleSerDe - Amazon Athena

CSV, TSV, 사용자 지정 구분 기호로 구분된 파일에 대한 LazySimpleSerDe

이 SerDe 지정은 선택 사항입니다. 이는 Athena가 기본적으로 사용하는 CSV, TSV 및 사용자 지정 구분 기호로 구분된 형식의 데이터에 대한 SerDe입니다. 이 SerDe는 어떤 SerDe도 지정하지 않고 ROW FORMAT DELIMITED만 지정한 경우에 사용됩니다. 데이터에 인용 부호로 묶인 값이 없는 경우 이 SerDe를 사용합니다.

LazySimpleSerDe에 대한 참조 문서는 Apache Hive 개발자 안내서의 Hive SerDe 단원을 참조하세요.

라이브러리 이름

LazySimpleSerDe의 클래스 라이브러리 이름은 org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe입니다. LazySimpleSerDe 클래스에 대한 자세한 내용은 GitHub.com의 LazySimpleSerDe.java를 참조하세요.

헤더 무시

테이블을 정의할 때 데이터의 헤더를 무시하려면 다음 예제와 같이 skip.header.line.count 테이블 속성을 사용합니다.

TBLPROPERTIES ("skip.header.line.count"="1")

예제는 Amazon VPC 흐름 로그 쿼리Amazon CloudFront 로그 쿼리CREATE TABLE 문을 참조하세요.

예제

다음 예는 Athena에서 LazySimpleSerDe를 이용해 CSV 및 TSV에서 테이블을 만드는 방법을 보여줍니다. 이 SerDe를 사용하여 사용자 지정 구분 파일을 역직렬화하려면 다음 예제의 패턴을 따라합니다. 단, FIELDS TERMINATED BY 절을 사용하여 서로 다른 단일 문자 구분 기호를 지정합니다. LazySimpleSerDe는 다중 문자 구분 기호를 지원하지 않습니다.

참고

s3://athena-examples-myregion/path/to/data/myregion을, Athena를 실행하는 리전 식별자로 바꿉니다(예: s3://athena-examples-us-west-1/path/to/data/).

참고

비행 테이블 데이터의 출처는 미국 운수부 운송통계국에서 제공한 항공편입니다. 원본에서 채도를 낮췄습니다.

CSV 예

CREATE TABLE 문을 사용하여 Amazon S3에 저장된 CSV 형식의 기본 데이터로 Athena 테이블을 만듭니다.

CREATE EXTERNAL TABLE flight_delays_csv ( yr INT, quarter INT, month INT, dayofmonth INT, dayofweek INT, flightdate STRING, uniquecarrier STRING, airlineid INT, carrier STRING, tailnum STRING, flightnum STRING, originairportid INT, originairportseqid INT, origincitymarketid INT, origin STRING, origincityname STRING, originstate STRING, originstatefips STRING, originstatename STRING, originwac INT, destairportid INT, destairportseqid INT, destcitymarketid INT, dest STRING, destcityname STRING, deststate STRING, deststatefips STRING, deststatename STRING, destwac INT, crsdeptime STRING, deptime STRING, depdelay INT, depdelayminutes INT, depdel15 INT, departuredelaygroups INT, deptimeblk STRING, taxiout INT, wheelsoff STRING, wheelson STRING, taxiin INT, crsarrtime INT, arrtime STRING, arrdelay INT, arrdelayminutes INT, arrdel15 INT, arrivaldelaygroups INT, arrtimeblk STRING, cancelled INT, cancellationcode STRING, diverted INT, crselapsedtime INT, actualelapsedtime INT, airtime INT, flights INT, distance INT, distancegroup INT, carrierdelay INT, weatherdelay INT, nasdelay INT, securitydelay INT, lateaircraftdelay INT, firstdeptime STRING, totaladdgtime INT, longestaddgtime INT, divairportlandings INT, divreacheddest INT, divactualelapsedtime INT, divarrdelay INT, divdistance INT, div1airport STRING, div1airportid INT, div1airportseqid INT, div1wheelson STRING, div1totalgtime INT, div1longestgtime INT, div1wheelsoff STRING, div1tailnum STRING, div2airport STRING, div2airportid INT, div2airportseqid INT, div2wheelson STRING, div2totalgtime INT, div2longestgtime INT, div2wheelsoff STRING, div2tailnum STRING, div3airport STRING, div3airportid INT, div3airportseqid INT, div3wheelson STRING, div3totalgtime INT, div3longestgtime INT, div3wheelsoff STRING, div3tailnum STRING, div4airport STRING, div4airportid INT, div4airportseqid INT, div4wheelson STRING, div4totalgtime INT, div4longestgtime INT, div4wheelsoff STRING, div4tailnum STRING, div5airport STRING, div5airportid INT, div5airportseqid INT, div5wheelson STRING, div5totalgtime INT, div5longestgtime INT, div5wheelsoff STRING, div5tailnum STRING ) PARTITIONED BY (year STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' ESCAPED BY '\\' LINES TERMINATED BY '\n' LOCATION 's3://athena-examples-myregion/flight/csv/';

이 테이블에 새 파티션이 추가될 때마다 MSCK REPAIR TABLE을(를) 실행하여 파티션 메타데이터를 새로 고칩니다.

MSCK REPAIR TABLE flight_delays_csv;

1시간 이상 지연된 상위 10개 경로를 쿼리합니다.

SELECT origin, dest, count(*) as delays FROM flight_delays_csv WHERE depdelayminutes > 60 GROUP BY origin, dest ORDER BY 3 DESC LIMIT 10;

TSV 예

CREATE TABLE 문을 사용하여 Amazon S3에 저장된 TSV 데이터로 Athena 테이블을 만듭니다. ROW FORMAT DELIMITED를 사용하고, 다음과 같이 탭 필드 구분 기호, 줄 구분 기호, 이스케이프 문자를 지정합니다.

... ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' ESCAPED BY '\\' LINES TERMINATED BY '\n' ...

CREATE TABLE 문 예제는 다음과 같습니다.

CREATE EXTERNAL TABLE flight_delays_tsv ( yr INT, quarter INT, month INT, dayofmonth INT, dayofweek INT, flightdate STRING, uniquecarrier STRING, airlineid INT, carrier STRING, tailnum STRING, flightnum STRING, originairportid INT, originairportseqid INT, origincitymarketid INT, origin STRING, origincityname STRING, originstate STRING, originstatefips STRING, originstatename STRING, originwac INT, destairportid INT, destairportseqid INT, destcitymarketid INT, dest STRING, destcityname STRING, deststate STRING, deststatefips STRING, deststatename STRING, destwac INT, crsdeptime STRING, deptime STRING, depdelay INT, depdelayminutes INT, depdel15 INT, departuredelaygroups INT, deptimeblk STRING, taxiout INT, wheelsoff STRING, wheelson STRING, taxiin INT, crsarrtime INT, arrtime STRING, arrdelay INT, arrdelayminutes INT, arrdel15 INT, arrivaldelaygroups INT, arrtimeblk STRING, cancelled INT, cancellationcode STRING, diverted INT, crselapsedtime INT, actualelapsedtime INT, airtime INT, flights INT, distance INT, distancegroup INT, carrierdelay INT, weatherdelay INT, nasdelay INT, securitydelay INT, lateaircraftdelay INT, firstdeptime STRING, totaladdgtime INT, longestaddgtime INT, divairportlandings INT, divreacheddest INT, divactualelapsedtime INT, divarrdelay INT, divdistance INT, div1airport STRING, div1airportid INT, div1airportseqid INT, div1wheelson STRING, div1totalgtime INT, div1longestgtime INT, div1wheelsoff STRING, div1tailnum STRING, div2airport STRING, div2airportid INT, div2airportseqid INT, div2wheelson STRING, div2totalgtime INT, div2longestgtime INT, div2wheelsoff STRING, div2tailnum STRING, div3airport STRING, div3airportid INT, div3airportseqid INT, div3wheelson STRING, div3totalgtime INT, div3longestgtime INT, div3wheelsoff STRING, div3tailnum STRING, div4airport STRING, div4airportid INT, div4airportseqid INT, div4wheelson STRING, div4totalgtime INT, div4longestgtime INT, div4wheelsoff STRING, div4tailnum STRING, div5airport STRING, div5airportid INT, div5airportseqid INT, div5wheelson STRING, div5totalgtime INT, div5longestgtime INT, div5wheelsoff STRING, div5tailnum STRING ) PARTITIONED BY (year STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' ESCAPED BY '\\' LINES TERMINATED BY '\n' LOCATION 's3://athena-examples-myregion/flight/tsv/';

이 테이블에 새 파티션이 추가될 때마다 MSCK REPAIR TABLE을(를) 실행하여 파티션 메타데이터를 새로 고칩니다.

MSCK REPAIR TABLE flight_delays_tsv;

1시간 이상 지연된 상위 10개 경로를 쿼리합니다.

SELECT origin, dest, count(*) as delays FROM flight_delays_tsv WHERE depdelayminutes > 60 GROUP BY origin, dest ORDER BY 3 DESC LIMIT 10;
참고

비행 테이블 데이터의 출처는 미국 운수부 운송통계국에서 제공한 항공편입니다. 원본에서 채도를 낮췄습니다.