Apache pig Pig:对外部方法的多次调用
我想在我的猪身上使用方法Apache pig Pig:对外部方法的多次调用,apache-pig,Apache Pig,我想在我的猪身上使用方法REPLACE、SUBSTRING和INDEXOF,但我无法很好地使用它 第一种情况:REGEX\u EXTRACT\u ALL中的REPLACE: data_split = FOREACH data GENERATE FLATTEN(REGEX_EXTRACT_ALL(line, MY_REGULAR_EXPRESSION)) AS ( timestamp: chararray, url: chararray, REPLACE(ur
REPLACE
、SUBSTRING
和INDEXOF
,但我无法很好地使用它
- 第一种情况:
中的REGEX\u EXTRACT\u ALL
:REPLACE
data_split = FOREACH data GENERATE FLATTEN(REGEX_EXTRACT_ALL(line, MY_REGULAR_EXPRESSION)) AS ( timestamp: chararray, url: chararray, REPLACE(url , '.*?://', '') AS clean_url: chararray);
http://
。在这种情况下,我得到:
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.
谢谢我认为您不能在指定模式的
AS子句中使用UDF
。
我想你已经用这种方式得到了:
inp = LOAD 'data.txt' AS (line:chararray);
data_split = FOREACH inp
GENERATE FLATTEN(REGEX_EXTRACT_ALL(line, MY_REGULAR_EXPRESSION))
AS (url:chararray, timestamp:chararray);
res = FOREACH data_split GENERATE REPLACE(url , '.*?://', ''), timestamp;
...
至于你的第二个问题:
你用的是哪种清管器版本?我认为这是一个,在版本0.10.0中,我无法复制它。我认为不能在指定模式的AS子句中使用UDF
。
我想你已经用这种方式得到了:
inp = LOAD 'data.txt' AS (line:chararray);
data_split = FOREACH inp
GENERATE FLATTEN(REGEX_EXTRACT_ALL(line, MY_REGULAR_EXPRESSION))
AS (url:chararray, timestamp:chararray);
res = FOREACH data_split GENERATE REPLACE(url , '.*?://', ''), timestamp;
...
至于你的第二个问题:
你用的是哪种清管器版本?我认为这是一个,在版本0.10.0中,我无法复制它