Только не используйте шаблоны типов (: String
и : Option[String]
), потому что null
не соответствует им. Написать
case Row(job_id, title) =>
и проверьте внутри.
(Когда вы получаете Row
от Spark, он все равно не будет содержать Option[String]
с, просто ноль или ненулевой String
с (/ Int
с / и т. Д.).
Вы также можете использовать пользовательские объекты-экстракторы , например,
object OptString {
def unapply(x: String) = Some(Option(x))
}
// repeat for other types
, затем
case Row(job_id, OptString(title)) =>
свяжет title
с None
для вашего x
и не будет соответствовать
new Row("hello", notAString)