В моей таблице в основном столбцы двойного типа и несколько столбцов строк. Я создал таблицу, используя формат строки serde 'org.openx.data.jsonserde.JsonSerDe'
из текстового файла. Сначала я объединяю эти столбцы с помощью функции named_struct и передаю ее в свой udf. Что-то вроде этого.
select id, my_udf(named_struct("key1", col1, "key2", col2, "key3",col3, "key4", col4), other_udf_param1, other_udf_param2);
Итак, col1, col2 и col3 имеют тип double, а col4 - тип String.
Но все они конвертируются в String.
Это отрывок из моей функции оценки.
List<? extends StructField> fields = this.dataOI.getAllStructFieldRefs();
for (int i = 0; i < fields.size(); i++) {
System.out.println(fields.get(i).toString());
String canName = this.featuresOI.getStructFieldData(arguments[2].get(), fields.get(i)).getClass().getCanonicalName();
System.out.println(canName + " can name");
System.out.println(this.dataOI.getStructFieldData(arguments[2].get(), fields.get(i)));
}
Это возвращает все в виде строк.
Есть ли способ сохранить типы столбцов?