Hadoop 错误1070 Apache Pig,使用内置UDF

Hadoop 错误1070 Apache Pig,使用内置UDF,hadoop,apache-pig,user-defined-functions,udf,Hadoop,Apache Pig,User Defined Functions,Udf,,并没有解决我的问题。他们都在制作自己的UDF。我想使用内置的UDF。任何内置的自定义项。我尝试过的每个UDF都会出现相同或类似的错误 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; 这与预期的一样,基本上创

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

 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;
我发现以下错误(或类似错误):


在FOREACH GENERATE中似乎没有任何自定义项起作用。

Pig对大写有点挑剔,您需要大写
log
。例如,我可以在一个全新的Hortonworks沙箱上运行这段代码

$ hdfs dfs -cat /tmp/kg.csv
one,1
two,2
three,3
+


你们是怎么安装猪的?看来你的路径设置不正确。嗯。鉴于这一点和其他评论,这可能是我的设置。我来看看一个新的沙箱能为我做些什么。@wugology-事实上,你的问题是
log
应该都是大写的-酷!接受我的回答?
$ 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)