我有一个火花数据帧,正在以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秒,我什至不确定第二个过滤条件是否正在执行(在调试模式下,它总是似乎只执行第一个条件)。有人可以建议我在这里进行更快速,更可靠的查询吗?
谢谢!