Мне нужен кодировщик, который работает с моей функцией карты, которая берет строку и возвращает кортеж строки и список строк. Что-то вроде Row => (Row, List[Row])
Для каждой строки функция карты запускает список проверок, генерирует список нарушений и возвращает кортеж исходной строки и список нарушений, сгенерированных для строки. Нарушения - это сами строки, но с другой схемой, чем входные строки.
Кодер для кортежа (Row, Row)
можно создать и использовать следующим образом:
import org.apache.spark.sql.catalyst.encoders.RowEncoder
import org.apache.spark.sql.Encoders
...
implicit val rowEncoder = RowEncoder(rowSchema)
val encoder = Encoders.tuple(rowEncoder, rowEncoder)
...
val results = df.map( row =>{
validator(row)
})(encoder)
Но как нам создать кодер для кортежа (Row, List[Row])
?