Apache PIG - 如何在小数点后删除数字

时间:2015-04-28 15:00:10

标签: hadoop apache-pig hadoop2

是否有可能在浮点数或双数字小数点后切割某个区域? 例如:结果将是2.67894 =>我希望得到2.6作为结果(舍入时不是2.7)。

2 个答案:

答案 0 :(得分:0)

试试吧.. val是你的值,如2.666,3.666,4.666666,5.3456334 ......

b = foreach a GENERATE (FLOOR(val * 10) / 10);

dump b;

答案 1 :(得分:0)

为此编写UDF(用户定义函数)。

一个非常简单的python UDF(numformat.py):

@outputSchema('value:double')
def format(data):
    return round(data,1)

(当然,您可以参数化UDF以使用不同的精度。)

比在猪代码中注册并使用它。例如:

REGISTER numformat.py USING jython as numformat;

A = LOAD 'so/testdata.csv' USING PigStorage(',') AS (data:double);
B = FOREACH A GENERATE numformat.format(data);
DUMP B;

对于以下输入:

2.1234
12.334

转储结果为:

(2.1)
(12.3)