4
아래의 정규식 (탭 구분)을 사용하여 제공된 데이터 (구문 분리 된 탭)를 구문 분석합니다.실행 오류 : org.apache.hadoop.hive.ql.exec.DDLTask
하이브 테이블 생성 구문 : 어떤 코멘트 (번부터 라인)이 원하는 정규식 통해
create table akmlogreg(logdate string, time string, clientip string, method string, uri string, status string, bytes string, TimeTakenMS string, referer string, useragent string, cs_Cookie string) ROW FORMAT SERDE
'org.apache.hadoop.hive.contrib.serde2.RegexSerDe'
WITH SERDEPROPERTIES (
"input.regex" ="([0-9-]+) ([^\t]*) ([^\t]*) ([^\t]*) ([^\t]*) ([^\t]*) ([^\t]*) ([^\t]*) (\".*\"|[^ ]*) (\".*\"|[^ ]*) ([^\r\n]+)",
"output.format.string"="%1$s %2$s %3$s %4$s %5$s %6$s %7$s %8$s %9$s %10$s %11$s");
제거하고, 한 번에 하나의 행을 선택한다. 그러나이 구문은 하이브에 테이블을 만들려고하면 오류가 발생합니다. 탭 구분 정규식 뒤에서 내 논리는 또한 내 로그 데이터를 탭 구분 된 것입니다. 아무도 나에게 더 suggesion 또는 솔루션을 내가 정규식을 사용하여 별도의 탭입니다 이런 종류의 데이터를 구문 분석 할 수 있습니까?
예외 :
이FAILED: Error in metadata: java.util.regex.PatternSyntaxException: Unmatched closing ')' near index 10
([0-9-]+)]+)
^
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask
데이터 :
#Version: 1.0
#Fields: date time cs-ip cs-method cs-uri sc-status sc-bytes time-taken cs(Referer) cs(User-Agent) cs(Cookie)
2013-07-02 00:00:00 242.242.242.242 GET /9699/14916.jpg 200 6783 0 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.23 Safari/534.10" "-"
2013-07-02 00:00:00 242.242.242.242 GET /169875/2006-2010-679336-640x428.JPG 200 78221 355 "-" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.52 Safari/537.36" "-"
2013-07-02 00:00:00 242.242.242.242 GET /169875/2006-2010-679339-640x428.JPG 200 86791 238 "-" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.52 Safari/537.36" "-"
감사합니다 알렉스. 그것은 효과가 있었다. 그런데 하이브가 탭 분리 정규 표현식을 사용하지 않는 이유는 무엇입니까? – Naresh
하이브 (hive)에 대해서는 말할 수 없지만 일반적으로 어림짐작으로서 정규 표현식을 쓸 때 항상 일치시킬 문자를 명시 적으로 지정합니다. 어떤 정규 표현식을 사용하든 관계 없습니다. – Stephan