UDF для форматирования чисел в строки в Pig

#apache-pig

#apache-pig

Вопрос:

В Pig я хочу получить числовой столбец, скажем, «12345», и преобразовать его в строку с форматированием типа «$ 12 345».

Существуют ли существующие UDF для стандартного форматирования, например, добавления знаков доллара, запятых, процентов и т. Д.? Я не видел ни одного в документах

Ответ №1:

Вот мой UDF python, который вы можете использовать.

 #!/usr/bin/python

@outputSchema("formatted:chararray")
def toDol(number):
    s = '%d' % number
    groups = []
    while s and s[-1].isdigit():
        groups.append(s[-3:])
        s = s[:-3]
        res = s   ','.join(reversed(groups))
        res = '$'   res
    return res
  

Вот как будет выглядеть ваш скрипт pig

 Register 'locale_udf.py' using jython as myfuncs;
DT = LOAD 'sample_data.txt' Using PigStorage() as (dol:float);
DTR = FOREACH DT GENERATE dol,myfuncs.toDol(dol) as formattedstring;
dump DTR;
  

Это должно сработать для вас.