문자열의 일부를 추출하고 hbase에 열에 저장하려고합니다.PIG에서 Hbase로 일부 필드를 저장하십시오.
파일 내용 : MSGTYPE에 해당하는 메시지의
이msgType1 Person xyz has opened Internet:www.google.com from IP:192.123.123.123 for duration 00:15:00
msgType2 Person xyz denied for opening Internet:202.x.x.x from IP:192.123.123.123 reason:unautheticated
msgType1 Person xyz has opened Internet:202.x.x.x from IP:192.123.123.123 for duration 00:15:00
패턴이 고정됩니다. 이제 hbase에 사람 이름, 대상, 소스, 기간 등을 저장하려고합니다.
나는이 작업을 수행하기 위해 PIG에서 스크립트를 작성하려고합니다. 하지만 부분 추출 중입니다. (문자열에서 'Internet : 202.x.x.x'토큰에서 IP 또는 웹 사이트 이름을 추출하십시오.)
정규 표현식을 사용해 보았지만 제대로 작동하지 않았습니다.
ERROR 1045: Could not infer the matching function for org.apache.pig.builtin.REGEX_EXTRACT as multiple or none of them fit. Please use an explicit cast.
이 값을 추출하고 돼지보다 돼지 또는에서 HBase를 다른를 저장할 수있는 다른 방법이 : 정규식은 항상 곁에이 오류를 던져?
난 정규식처럼 사용할 및 기타 많은 변형이 있습니다. – pradeep
A = LOAD 'yourfile'USING PigStorage ('\ t') AS (key : chararray, message : chararray); B = foreach A는 REGEX_EXTRACT (메시지, '인터넷 : *')를 생성합니다. – pradeep
B = FOREACH 생성 REGEX_EXTRACT_ALL (f1, '(. *) \ : (. *)') AS 사용 (match1 : chararray, match2 : chararray); 오류가 발생합니다. ERROR 1000 : 구문 분석하는 동안 오류가 발생했습니다. "\ '(. *) \\" 로그 파일의 세부 정보 :/home/pig_1.로그 및 사용 B = FOREACH 생성 REGEX_EXTRACT_ALL (f1, '(. *) : (. *)') AS (match1 : chararray, match2 : chararray); 오류가 발생합니다. - ERROR 1000 : 구문 분석하는 동안 오류가 발생했습니다. 1 행 67 열에서 ""이 (가) 발생했습니다. 로그 파일 세부 정보 : /home/pig_1.log – pradeep