как сортировать строковые символы в алфавитном порядке в pig latin

88
6

Если у меня есть таблица, как name:chararray ниже: name:chararray

пример:

acab
bca
das
desac

Как я могу упорядочить имя столбца в алфавитном порядке в Pig?

как это:

aacb
abc
ads
acdes

спросил(а) 2021-01-25T14:51:18+03:00 5 месяцев назад
1
Решение
109

Напишите свой собственный UDF.Pass имя для UDF. В UDF конвертировать строку в chararray и сортировать it.Return отсортированной строки.

PIG

REGISTER ORDER_UDF.jar;
A = LOAD 'data.txt' USING PigStorage(',') AS (name: chararray);
B = FOREACH A GENERATE ORDER_UDF.ORDER(name);
DUMP B;

UDF

import java.io.IOException;
import java.util.Arrays;
import org.apache.pig.EvalFunc;
import org.apache.pig.data.Tuple;

public class ORDER extends EvalFunc<String>
{
public String exec(Tuple input) throws IOException {
if (input == null || input.size() == 0)
return null;
try{
char tempArray[] = ((String)input).toCharArray();
Arrays.sort(tempArray);
return new String(tempArray);
}catch(Exception e){
throw new IOException("Caught exception processing input row ", e);
}
}
}

ответил(а) 2021-01-25T14:51:18+03:00 5 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема