Я хочу пропустить запись, если я не могу разобрать ее в Long - PullRequest
0 голосов
/ 30 апреля 2020

Я использую этот фрагмент кода

val profSalData: RDD[(String, AnyVal)] = data.map[(String, AnyVal)](f =>
      {
        (
          f.split("\\|")(3),
          util.control.Exception.ignoring(
            classOf[NumberFormatException],
            classOf[ArrayIndexOutOfBoundsException]) { f.split("\\|")(4).toLong } match {
            case p: Exception.Catch[Unit] => 
            case c => c

          })
      })

Ввод и вывод

803|70|M|administrator|34105
74|39|M|scientist|T8H1N
74|39|M|scientist|
74|39|M|scientist|12345

(administrator,34105)
(scientist,())
(scientist,())
(scientist,12345)

Я хочу игнорировать пустые и непарсируемые в long из вывода. Я могу использовать фильтр, но не хочу использовать фильтр здесь, как показано ниже

.filter(f => { f._2.toString() != "()" })

1 Ответ

0 голосов
/ 30 апреля 2020

Вы можете попробовать PartialFunction. Например, я хочу получить только данные типа Int: 1004 *https://www.scala-lang.org/api/2.12.1/scala/PartialFunction.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...