0
Fluentd를 사용하여 HDFS에서 Apache 로그 데이터를 캡처하고 통합했습니다. 내가 HDFS에 데이터를 작성하기 위해 에이전트를 구성, 즉 /etc/td-agent/td-agent.conf
파일에는 다음이 포함 Fluentd Apache 로그 데이터 용 Hive create 테이블 문
<source>
type tail
path /var/log/httpd/access_log
pos_file /var/log/td-agent/httpd-access.log.pos
tag apache.access
format apache2
</source>
<match apache.access>
type webhdfs
host fqdn.of.name.node
port 50070
path /data/access_logs/access.log.%Y%m%d_%H.${hostname}.log
flush_interval 10s
</match>
나는 HDFS는
Fluentd documentation에 따라 추가 가능. 데이터는 완벽하게 교차합니다. 지난 몇 주 동안 수백만 건의 거래가 흐트러지지 않았습니다.
데이터는 다음과 같이 선을 포함하는 파일에 저장된다
:
2015-01-10T17:00:00Z apache.access {"host":"155.96.21.4","user":null,"method":"GET","path":"/somepage/index.html","code":200,"size":8192,"referer":null,"agent":"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET4.0C; .NET4.0E)"}
각 행에 포함 된 세 개의 탭 분리 소자 :
- 소인
- 식별 태그
- JSON 함유 키/아파치 로그에있는 열의 값 쌍
하이브 테이블을 만들려고하는데 각 행에 탭으로 구분 된 문자열과 JSON이 혼합되어 있다는 사실을 어떻게 처리해야할지 모르겠습니다. 하이브에는 JSON 디시리얼라이저가 있지만 레코드가 순수한 JSON이 아니기 때문에 작동하지 않을 것이라고 생각합니다.
누구든지이 데이터에 대한 테이블 만들기 명령문을 작성하는 방법에 대한 제안이 있습니까? 당신의 out_wedhdfs 설정에 다음 매개 변수를 추가