Добро пожаловать в StackOverflow .К сожалению, этот вопрос не подходит для SO , посмотрите на "как спросить" , чтобы улучшить этот и будущие вопросы.
Однако я постараюсьответить на несколько ваших вопросов.
Во-первых, Spark Row
s может кодировать различные значения, включая Arrays
& Structures
.
Во-вторых, строки вашего фрейма данных состоят только из одного столбца типа Array[...]
.
В-третьих, если вы хотите создать Dataset
из вашего df, ваш case class
должен соответствовать вашей схеме, вв таком случае это должно быть что-то вроде:
case class Features(array: Array[Elements])
case class Elements(s: CustomType, a: CustomType, tr: CustomType, cs: CustomType)
Наконец, Encoder
используется для преобразования ваших классов дел и их значений во внутреннее представление Spark.Вы не должны слишком беспокоиться о них - вам просто нужно import spark.implicits._
, и все необходимые вам кодеры будут там автоматически.
val spark = SparkSession.builder.getOrCreate()
import spark.implicits._
val ds: Dataset[Features] = df.as[Features]
Кроме того, вы должны взглянуть на это для справки.