Запись произвольного bean в формат parquet
Хочу записать свой bean в файл формата parquet.В нем я имею несколько полей String Integer и поле типа java.sql.Timestamp. Я воспользовался инструкцией beanToRecordConverter.Все поля преобразовываются нормально кроме этого поля Timestamp(submittedAt).В процессе конвертирования схемы из формата avro в формат parquet имею следующую схему avro:
{"type":"record","name":"Loan","namespace":"bean","fields":[{"name":"formId","type":"string"},{"name":"email","type":"string"},{"name":"age","type":"int"},{"name":"country","type":"string"},{"name":"address","type":"string"},{"name":"zipCode","type":"int"},{"name":"houseOwner","type":"boolean"},{"name":"wasBankrupt","type":"string"},{"name":"submittedAt","type":{"type":"record","name":"Timestamp","namespace":"java.sql","fields":[]}},{"name":"product","type":"string"},{"name":"loanAmount","type":"double"}]}
В результате поле нормально не преобразовывается и я получаю ошибку :
Exception in thread "main" org.apache.parquet.schema.InvalidSchemaException: A group type can not be empty. Parquet does not support empty group without leaves. Empty group: submittedAt
at org.apache.parquet.schema.GroupType.<init>(GroupType.java:92)
at org.apache.parquet.schema.GroupType.<init>(GroupType.java:48)
at org.apache.parquet.avro.AvroSchemaConverter.convertField(AvroSchemaConverter.java:132)
at org.apache.parquet.avro.AvroSchemaConverter.convertField(AvroSchemaConverter.java:112)
at org.apache.parquet.avro.AvroSchemaConverter.convertField(AvroSchemaConverter.java:187)
at org.apache.parquet.avro.AvroSchemaConverter.convertFields(AvroSchemaConverter.java:106)
at org.apache.parquet.avro.AvroSchemaConverter.convert(AvroSchemaConverter.java:97)
Если поптаться преобразовать просто в формат avro используя следующую схему преобразование проходит удачно:
{"type":"record","name":"Data","namespace":"com.avro.example","fields":[{"name":"formId","type":"string"},{"name":"email","type":"string"},{"name":"age","type":["int","null"]},{"name":"country","type":"string"},{"name":"address","type":"string"},{"name":"zipCode","type":["int","null"]},{"name":"houseOwner","type":"boolean"},{"name":"wasBankrupt","type":"string"},{"name":"submittedAt","type":{"type":"string","logicalType":"timestamp-millis"}},{"name":"product","type":"string"},{"name":"loanAmount","type":"double"}]}
Вопрос - как можно все таки его преобразовать используя приведенный подход?Заранее спасибо за ответы!