Regex SerDe
Regex SerDe는 정규 표현식(정규식)을 사용하여 정규식 그룹을 테이블 열로 추출하여 데이터를 역직렬화합니다.
데이터의 행이 정규식과 일치하지 않으면 행의 모든 열이 NULL
로 반환됩니다. 행이 정규식과 일치하지만 예상보다 적은 그룹이 있는 경우 누락된 그룹은 NULL
입니다. 데이터의 행이 정규식과 일치하지만 정규식의 그룹보다 많은 열이 있는 경우 추가 열은 무시됩니다.
자세한 내용은 Apache Hive 설명서의 Class RegexSerDe
직렬화 라이브러리 이름
Regex SerDe의 직렬화 라이브러리 이름은 org.apache.hadoop.hive.serde2.RegexSerDe
입니다. 소스 코드 정보는 Apache Hive 설명서의 Class RegexSerDe
예
다음 예제에서는 RegExSerDe를 사용하여 CloudFront 로그에서 테이블을 생성합니다. s3://athena-examples-
의 myregion
/cloudfront/plaintext/myregion
을, Athena를 실행하는 리전 식별자로 바꿉니다(예: s3://athena-examples-us-west-1/cloudfront/plaintext/
).
CREATE EXTERNAL TABLE IF NOT EXISTS 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/';