scala быстрый поиск на 2 столбца - PullRequest
0 голосов
/ 02 июля 2019

У меня есть искровой фрейм данных, который я передаю как Array [Array [String]]. Мое требование заключается в поиске диапазона по 2 столбцам.

Прямо сейчас у меня есть что-то вроде ->

val cols = data.filter(_(0).toLong <= ip).filter(_(1).toLong >= ip).take(1) match {
    case Array(t) => t
    case _ => Array()
  }

Следующий файл данных сохраняется как Array [Array [String]] (за исключением строки заголовка, которую я показал ниже только в качестве ссылки) и передается в функцию фильтра, показанную выше.

пример файла данных ->

startIPInt | endIPInt  | lat               | lon
676211200  | 676211455 | 37.33053          | -121.83823
16777216   | 16777342  | -34.9210644736842 | 138.598709868421
17081712   | 17081712  | 0                 | 0

пример значения для поиска ->

ip = 676211325

на основе диапазона значений startIPInt и endIPInt, я хочу, чтобы остальные строки сопоставления.

Этот поиск занимает 1-2 секунды для каждого, и я даже не уверен, что 2-е условие фильтра выполняется (в режиме отладки всегда кажется, что оно только выполняет 1-е условие). Может кто-нибудь предложить мне более быстрый и надежный поиск здесь?

Спасибо!

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