Искра 2.3.0 со Скала 2.11. Я реализую пользовательский Aggregator
в соответствии с документами здесь. Агрегатор требует 3 типа для ввода, буфера и вывода.
Мой агрегатор должен воздействовать на все предыдущие строки в окне, поэтому я объявил его так:
case class Foo(...)
object MyAggregator extends Aggregator[Foo, ListBuffer[Foo], Boolean] {
// other override methods
override def bufferEncoder: Encoder[ListBuffer[Mod]] = ???
}
Предполагается, что один из методов переопределения возвращает кодировщик для типа буфера, в данном случае это ListBuffer
. Я не могу найти подходящий кодировщик для org.apache.spark.sql.Encoders
или какой-либо другой способ закодировать это, поэтому я не знаю, что здесь вернуть.
Я подумал о создании нового класса case, который имеет одно свойство типа ListBuffer[Foo]
, и использовать его в качестве моего класса буфера, а затем использовать для него Encoders.product
, но я не уверен, что это необходимо или есть что-то еще, что мне не хватает. Спасибо за любые советы.