#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;
Это должно сработать для вас.