Возможно ли использовать элемент Option[_]
в классе case, используемом с API Dataset API? например. Option[Int]
Как создать кодировщик для конструктора типа Option, например. Опция [Int]?
Я попытался найти пример, но не смог найти его. Возможно, это можно сделать с помощью настраиваемого кодировщика (сопоставление?), Но пока я не смог найти пример.
Это может быть достигнуто с использованием библиотеки Frameless: https://github.com/adelbertc/frameless, но должен быть простой способ сделать это с помощью базовых библиотек Spark.
Update
Я использую: "org.apache.spark" %% "spark-core" % "1.6.1"
И получаю следующее сообщение об ошибке при попытке использовать один вариант [Int]:
Невозможно найти кодер типа, хранящуюся в Dataset. Примитивные типы (Int, String и т.д.) и типов продукции (тематические классы) поддерживаются импорта sqlContext.implicits._ Поддержка сериализации других типов будут добавлены в будущих версиях
обновление Решение
Поскольку я был прототипом, я просто объявлял класс case внутри функции перед преобразованием в набор данных (в моем случае внутри object Main {
).
Типы опций работали нормально, когда я переместил класс case за пределы основной функции.
Я нашел ошибку, которую я делал, кажется, что scala рассматривает объявление класса case внутри функции и вне ее по-разному. Объявление класса case за пределами Main разрешало функции 'as [_]' работать без каких-либо дополнительных неявных. Я попытался использовать подразумеваемое вами упоминание, но я не мог заставить его работать (для случая, когда класс case определен внутри функции, например Main). Мой источник данных - это база данных MS SQL Server. –
По какой-то причине кодировка типа Timestamp работает, но GregorianCalendar этого не делает, оба не указаны в файле, указанном в комментарии AlexeyRomanov –