1
내 돼지에서 방법 REPLACE
, SUBSTRING
및 INDEXOF
을 사용하고 싶지만 좋은 방법으로 사용할 수 없습니다.돼지 : 외부 호출을 여러 번 호출
첫 번째 경우 :
REPLACE
REGEX_EXTRACT_ALL
에가 :data_split = FOREACH data GENERATE FLATTEN(REGEX_EXTRACT_ALL(line, MY_REGULAR_EXPRESSION)) AS ( timestamp: chararray, url: chararray, REPLACE(url , '.*?://', '') AS clean_url: chararray);
나는 URL에있는 주요한 http://
을 제거하기 위해 REPLACE 사용하고 싶습니다. 이 경우 내가 점점 오전 :
Error during parsing. Encountered " "(" "(""
두 번째 경우 : 재사용 출력 :
ws = FOREACH data_split { clean_url = REPLACE(url , '.*?://', ''); url_index = INDEXOF(clean_url, '/'); web_server = SUBSTRING(clean_url, 0, url_index); GENERATE web_server, timestamp, ip ;
어느 쪽이 경우 작동, 내가 REPLACE
에 대한 이전 호출에서 clean_url
를 다시 사용하려고 할 때, 나는지고있다
Attempt to give operator of type
org.apache.pig.backend.hadoop.executionengine.physicalLayer.expressionOperators.POUserFunc
multiple outputs. This operator does not support multiple outputs.
감사합니다.