

# Regex SerDe
<a name="regex-serde"></a>

Regex SerDe는 정규 표현식(정규식)을 사용하여 정규식 그룹을 테이블 열로 추출하여 데이터를 역직렬화합니다.

데이터의 행이 정규식과 일치하지 않으면 행의 모든 열이 `NULL`로 반환됩니다. 행이 정규식과 일치하지만 예상보다 적은 그룹이 있는 경우 누락된 그룹은 `NULL`입니다. 데이터의 행이 정규식과 일치하지만 정규식의 그룹보다 많은 열이 있는 경우 추가 열은 무시됩니다.

자세한 내용은 Apache Hive 설명서의 [Class RegexSerDe](https://svn.apache.org/repos/infra/websites/production/hive/content/javadocs/r1.2.2/api/org/apache/hadoop/hive/serde2/RegexSerDe.html)를 참조하세요.

## 직렬화 라이브러리 이름
<a name="regex-serde-library-name"></a>

Regex SerDe의 직렬화 라이브러리 이름은 `org.apache.hadoop.hive.serde2.RegexSerDe`입니다. 소스 코드 정보는 Apache Hive 설명서의 [Class RegexSerDe](https://svn.apache.org/repos/infra/websites/production/hive/content/javadocs/r1.2.2/api/org/apache/hadoop/hive/serde2/RegexSerDe.html)를 참조하세요.

## 예
<a name="regex-serde-examples"></a>

다음 예제에서는 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/';
```