복붙노트

[HADOOP] 아파치 돼지 - 어떻게 소수점 이하 자릿수를 잘라

HADOOP

아파치 돼지 - 어떻게 소수점 이하 자릿수를 잘라

부동 또는 더블 수의 소수점 특정 영역을 삭감 할 가능성이 있습니까? 예를 들어 결과가 2.67894 것 => 나는 (반올림 할 때와하지 2.7) 결과로 2.6를 갖고 싶어.

해결법

  1. ==============================

    1.그것을 시도 ... 발은 2.666,3.666,4.666666,5.3456334처럼 값입니다 .....

    그것을 시도 ... 발은 2.666,3.666,4.666666,5.3456334처럼 값입니다 .....

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

    2.이것에 대한 UDF (사용자 정의 함수)를 작성합니다.

    이것에 대한 UDF (사용자 정의 함수)를 작성합니다.

    아주 간단한 파이썬 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)
    
  3. from https://stackoverflow.com/questions/29922857/apache-pig-how-to-cut-digits-after-decimal-point by cc-by-sa and MIT license