Определение пользовательской функции Beam SQL со сложными типами данныхJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Определение пользовательской функции Beam SQL со сложными типами данных

Сообщение Anonymous »

Я хочу написать пользовательскую функцию, которую можно будет использовать в Beam SQL. На данный момент я определяю пользовательские функции (в Scala), расширяя интерфейс BeamSqlUdf и переопределяя его метод eval. Это отлично работает для простых типов и массивов. Но я не могу написать пользовательскую функцию, которая принимает или возвращает вложенную строку. Лучше всего было использовать org.apache.beam.sdk.values.Row
Например:

Код: Выделить всё

class GetNestedRow extends BeamSqlUdf {
def eval(): Row = Row
.withSchema(Schema.of(Schema.Field.of("name", Schema.FieldType.STRING), Schema.Field.of("age", Schema.FieldType.INT64)))
.addValue("Alice").addValue(22L)
.build
}
Когда я применяю преобразование SQL с зарегистрированным udf и этим запросом: SELECT get_nested_row_udf() FROM PCOLLECTION, я сталкиваюсь с

Невозможно найти соответствующий Beam FieldType для типа Calcite: OTHER

как для Calcite, так и для Zeta SQL.
Какой тип данных Java следует использовать в таких случаях?

Подробнее здесь: https://stackoverflow.com/questions/791 ... data-types
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»