Неявные кодеры, предоставляемые Spark, позволяют легко получить кодеры для последовательностей примитивов или типов продуктов, т. Е.
import spark.implicits._
val mySeqEncoder = newSequenceEncoder[Seq[Float]]
val myTupleSeqEncoder = newSequenceEncoder[Seq[(Float, Timestamp)]]
работают без каких-либо проблем.
Но что, если естьнеявный кодер для типа последовательности доступен? Например, предположим, что мне нужен кодировщик для Seq[(Timestamp, Row)]
. Я могу получить кодировщик для каждого элемента, используя
import org.apache.spark.sql.Encoders
// schema = the schema of the row to encode
Encoders.tuple[Timestamp, Row](Encoders.TIMESTAMP, RowEncoder(schema))
Есть ли способ построить кодировщик последовательности, предоставив кодировщик элементов? Или есть другой подходящий подход?