我最近有个实现,rdd存的是一个多边形的边界,通过WKT来进行判断这个边界是否与另外一个多边形边界数组存在相交的状态,然后在集群上跑的时候,直接卡死运行不了。
调用的判断方法def judgePolygonIsIntersect(wktStr1: String, wktStr2: String) = {
var flag = false
val wktRead = new WKTReader()
val a: Polygon = wktRead.read(wktStr1).asInstanceOf[Polygon]
var b: Polygon = wktRead.read(wktStr2).asInstanceOf[Polygon]
if (a.intersects(b) || a.contains(b) || a.within(b))
flag = true
flag
}然后我在rdd先将多边形的边界转换成Polygon然后在进行判断又可以在集群上跑,这是为什么?
问题如下:1、为什么会这样,自己本地debug时一调用上面的方法就卡死?
2、怎么解决这个存在的现象?因为数据量更大时,会不会更跑不动?现在的数据量才40多M
|