错误1070 apache pig,使用内置udf

ql3eal8s  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(303)

这个,这个,还有这个,没有解决我的问题。他们都在制作自己的自定义项。我想使用一个内置的自定义项。任何内置的自定义项。我尝试过的每个自定义项都会出现相同或类似的错误。

FOO = LOAD 'filepath/data.csv' 
 USING PigStorage(',') 
 AS (name:string, age:int, kilograms:double);

 BAR = FOREACH FOO GENERATE $0, $1, $2, kilograms*2.2 AS pounds;

这和预期的一样,基本上创建了与foo相同的关系,但是有一个额外的列将kg转换为lbs。
但是如果我想用,比如说,得到公斤的对数刻度,像这样:

BAR2 = FOREACH FOO GENERATE $0, $1, $2, log(kilograms) AS logscaleKG;

出现以下错误(或类似错误):

ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1070: Could not resolve log using imports: [, java.lang., org.apache.pig.builtin., org.apache.pig.impl.builtin.]

似乎没有自定义项在foreach生成中起作用。

ifsvaxew

ifsvaxew1#

Pig对资本化有点挑剔,你需要资本化 log . 例如,我可以在一个新的hortonworks沙盒上运行这段代码。

$ hdfs dfs -cat /tmp/kg.csv
one,1
two,2
three,3
grunt> a = LOAD '/tmp/kg.csv' USING PigStorage(',') AS (txt:chararray, val:int);
grunt> b = FOREACH a GENERATE txt, val, LOG(val);
grunt> DUMP b;
... # Running some MapReduces
(one,1,0.0)
(two,2,0.6931471805599453)
(three,3,1.0986122886681098)

相关问题