У меня есть два набора данных: Dataset[User]
и Dataset[Book]
, где оба User
и Book
являются классами наблюдений. Я присоединяюсь к ним так:
val joinDS = ds1.join(ds2, "userid")
Если я пытаюсь map
для каждого элемента в joinDS
, компилятор жалуется, что отсутствует кодер:
not enough arguments for method map: (implicit evidence$46: org.apache.spark.sql.Encoder[Unit])org.apache.spark.sql.Dataset[Unit].
Unspecified value parameter evidence$46.
Unable to find encoder for type stored in a Dataset.
Но та же ошибка не возникает, если я использую foreach
вместо map
. Почему foreach
также не требуется кодер? Я уже импортировал все импликации из сеанса spark, так почему же map
вообще требует кодировщик, когда набор данных является результатом объединения двух наборов данных, содержащих классы дел)? Кроме того, какой тип данных я получаю из этого объединения? Это Dataset[Row]
или что-то еще?