Hive - apache 로그 데이터 로드(정규식)

Posted 05 30, 2013 18:14, Filed under: BigData/Hive

1. 기본 로그 형식일때

10.10.10.10 - - [12/Apr/2013:21:45:01 +0900] "GET / HTTP/1.1" 200 311
10.10.10.10 - - [12/Apr/2013:21:50:02 +0900] "GET / HTTP/1.1" 200 311
10.10.10.10 - - [12/Apr/2013:21:55:04 +0900] "GET / HTTP/1.1" 200 311
10.10.10.10 - - [12/Apr/2013:21:56:21 +0900] "GET /robots.txt HTTP/1.1" 404 208

테이블 생성
CREATE TABLE apache_logs(
  host STRING,
  identity STRING,
  user STRING,
  time STRING,
  request STRING,
  status STRING,
  size STRING,
  referer STRING,
  agent STRING)
ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe'
WITH SERDEPROPERTIES (
  "input.regex" = "([^ ]*) ([^ ]*) ([^ ]*) (-|\\[[^\\]]*\\]) ([^ \"]*|\"[^\"]*\") (-|[0-9]*) (-|[0-9]*) (?: ([^ \"]*|\"[^\"]*\") ([^ \"]*|\"[^\"]*\"))?",
  "output.format.string" = "%1$s %2$s %3$s %4$s %5$s %6$s %7$s %8$s %9$s"
)
STORED AS TEXTFILE;

-- 데이터 로드
hive> LOAD DATA LOCAL INPATH "/home/hadoop/data_files/apache_logs/test-access_log.20130529" OVERWRITE INTO TABLE apache_logs;

hive> SELECT * FROM apache_logs LIMIT 10;

----------------------------------------------------------------------------------------------------
     Host      identity  user       time                          request      status   size   referer   agent
----------------------------------------------------------------------------------------------------
10.10.10.10      -       -   [12/Apr/2013:21:45:01 +0900]  "GET / HTTP/1.1"    200      311     NULL     NULL


2. referer, agent 정보 포함 로그 형식일때

10.10.10.10 - - [29/May/2013:01:18:52 +0900] "GET /images/1.jpg HTTP/1.1" 200 18780 "http://naver.com/re" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"

> input.regex 의 마지막에 정규형식 추가 : ([^ \"]*|\"[^\"]*\")
CREATE TABLE apache_logs(
  host STRING,
  identity STRING,
  user STRING,
  time STRING,
  request STRING,
  status STRING,
  size STRING,
  referer STRING,
  agent STRING)
ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe'
WITH SERDEPROPERTIES (
  "input.regex" = "([^ ]*) ([^ ]*) ([^ ]*) (-|\\[[^\\]]*\\]) ([^ \"]*|\"[^\"]*\") (-|[0-9]*) (-|[0-9]*)(?: ([^ \"]*|\"[^\"]*\") ([^ \"]*|\"[^\"]*\"))? ([^ \"]*|\"[^\"]*\")",
  "output.format.string" = "%1$s %2$s %3$s %4$s %5$s %6$s %7$s %8$s %9$s"
)
STORED AS TEXTFILE;

-- 데이터 로드
hive> LOAD DATA LOCAL INPATH "/home/hadoop/data_files/apache_logs/test-access_log.20130529" OVERWRITE INTO TABLE apache_logs;

hive> SELECT * FROM apache_logs; 

----------------------------------------------------------------------------------------------------
     Host    identity  user       time                          request                 status  size     referer             agent
----------------------------------------------------------------------------------------------------
10.10.10.10    -       -    [29/May/2013:01:18:52 +0900]   "GET /images/1.jpg HTTP/1.1"  200    18780 "http://naver.com/re" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"

 테이블 구조 확인
hive> DESC apache_logs;
OK
host    string  from deserializer
identity        string  from deserializer
user    string  from deserializer
time    string  from deserializer
request string  from deserializer
status  string  from deserializer
size    string  from deserializer
referer string  from deserializer
agent   string  from deserializer
Time taken: 0.072 seconds

-- # MapReduce 잡 이용시 정규식 처리를 위해 hive-contrib 라이브러리 로드 필요
hive> add jar ../lib/hive-contrib-0.10.0.jar;
Added ../lib/hive-contrib-0.10.0.jar to class path
Added resource: ../lib/hive-contrib-0.10.0.jar

hive> SELECT * FROM apache_logs ORDER BY time DESC LIMIT 10;

hive> SELECT * FROM apache_logs WHERE HOST = '10.10.10.10' LIMIT 10;

# Hive를 이용해 생성된 테이블의 파일들은 Hadoop 에서 읽기 가능함

예) WordCount 실행
hadoop jar /home/hadoop/WordCount.jar hadoop.util.WordCount /user/hive/warehouse/apache_logs /user/hadoop/output/apache_log


사이트 참고 : https://cwiki.apache.org/confluence/display/Hive/GettingStarted


※ 위 내용은, 여러 자료를 참고하거나 제가 주관적으로 정리한 것입니다.
   잘못된 정보나 보완이 필요한 부분을, 댓글 또는 메일로 보내주시면 많은 도움이 되겠습니다.
05 30, 2013 18:14 05 30, 2013 18:14


Trackback URL : http://develop.sunshiny.co.kr/trackback/917

Leave a comment

« Previous : 1 : ... 107 : 108 : 109 : 110 : 111 : 112 : 113 : 114 : 115 : ... 648 : Next »

Recent Posts

  1. HDFS - Python Encoding 오류 처리
  2. HP - Vertica ROS Container 관련 오류...
  3. HDFS - Hive 실행시 System Time 오류
  4. HP - Vertica 사용자 쿼리 이력 테이블...
  5. Client에서 HDFS 환경의 데이터 처리시...

Recent Comments

  1. 안녕하세요^^ 배그핵
  2. 안녕하세요^^ 도움이 되셨다니, 저... sunshiny
  3. 정말 큰 도움이 되었습니다.. 감사합... 사랑은
  4. 네, 안녕하세요. 댓글 남겨 주셔서... sunshiny
  5. 감사합니다 많은 도움 되었습니다!ㅎㅎ 프리시퀸스

Recent Trackbacks

  1. prefab steel buildings prefab steel buildings %M
  2. Mysql - mysql 설치후 Character set... 멀고 가까움이 다르기 때문 %M

Calendar

«   09 2019   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30          

Bookmarks

  1. 위키피디아
  2. MysqlKorea
  3. 오라클 클럽
  4. API - Java
  5. Apache Hadoop API
  6. Apache Software Foundation
  7. HDFS 생태계 솔루션
  8. DNSBL - Spam Database Lookup
  9. Ready System
  10. Solaris Freeware
  11. Linux-Site
  12. 윈디하나의 솔라나라

Site Stats

TOTAL 2683574 HIT
TODAY 408 HIT
YESTERDAY 438 HIT