Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Info

pyspark 에서 반경검색을 빠르고 효율적으로 사용하는방법

람다식으로 각 row마다 거리를 계산하는 방법을 앞에서 소개하였지만,spark의 실행 최적화가 안되기 때문에 느립니다.

DF의 기본 Filter기능과 geopy.distance 모듈을 사용하여 빠르게 위경도 인근지역 가까운순 리스트를 뽑아 내는 방법입니다.

Spark와 위경도 반경처리에 관련된 연동 모듈이 다양하고 고성능 엔진도 존재할것이지만

여기서는 적당한 성능을 내고 간단하게 사용할수 있는 pyspark 반경검색을 알아보겠습니다.


사용모듈

No Format
from pyspark.sql.functions import udf
from geopy.distance import great_circle
from pyspark.sql.functions import lit, struct

@udf("float")
def great_circle_udf(x, y):
    return great_circle(x, y).kilometers


근처 반경검색

tbl_NHotel , sqlContext.createDataFrame 에서 변환된 DataFrame이다.

...