Skip to content
TayPark edited this page Nov 7, 2021 · 32 revisions

Spark Plus

스파크 플러스 패키지는 주소체계 데이터베이스와 연동해 위치 정보의 데이터 분석을 위한 데이터프레임을 생성합니다.

빠른 시작

1. sparkplus 설치

$ pip install sparkplus

2. 주소체계 데이터베이스 연동

주소체계 데이터베이스 가이드 참고

mysql-jdbc-driver 다운로드

from sparkplus.core import load_tables

table_df = load_tables(spark_session, table_names, driver="com.mysql.cj.jdbc.Driver", url={db_url}, user={db_user}, password={db_password})
광역시/도 테이블 이름
서울 intergrated_address_seoul
인천 intergrated_address_incheon
대전 intergrated_address_daejeon
세종 intergrated_address_sejong
광주 intergrated_address_gwangju
대구 intergrated_address_daegu
울산 intergrated_address_ulsan
부산 intergrated_address_busan
제주 intergrated_address_jeju
경기 intergrated_address_gyeonggi
강원 intergrated_address_gangwon
충북 intergrated_address_chungbuk
충남 intergrated_address_chungnam
전북 intergrated_address_jeonbuk
전남 intergrated_address_jeonnam
경북 intergrated_address_gyeongbuk
경남 intergrated_address_gyeongnam

3. 법정동 Polygon 정보를 담고 있는 GeoDataFrame 생성

shp 파일 다운로드

  • 최신 시군구 or 읍면동 shp 다운로드
from sparkplus.core import load_gdf

gdf = load_gdf(shp_path, epsg)

4. import

from sparkplus.core import CoordDataFrame, AddressDataFrame

Usage

load_tables()

주소체계 데이터베이스에서 필요한 광역시 테이블로부터 Spark DataFrame을 생성합니다.

table_df = load_tables(ss, table_names, driver=driver, url=url, user=user, password=password)
table_df.select('roadname_code', 'sido', 'sigungu', 'eupmyeondong').show()

params

  • ss: Spark Session
  • table_names: 주소체계 데이터베이스에서 불러올 테이블의 이름(str, list type)
  • kwargs
    • driver: MySQL JDBC Driver(str)
    • url: Database URL(str)
    • user: Database username(str)
    • password: Database password(str)

load_gdf()

geometry 정보를 담고 있는 shp 파일로부터 Geo DataFrame을 생성합니다.

gdf = load_gdf(shp_path, epsg)

params

  • shp_path: shp file이 있는 디렉토리 경로
  • epsg: shp file의 epsg 값(int)

Class

Class Extensions 가이드 참고

CoordDataFrame

위치 좌표를 포함하는 데이터프레임을 주소체계 데이터베이스와 연동하여 pnu코드, h3, 우편번호, 법정동코드, 도로명주소(시도/시군구/읍면동/법정리/도로명/지하여부/건물 본번/건물 부번), 도로명주소(전체), 지번주소(시도/시군구/읍면동/법정리/지번 본번/지번 분번) 등의 컬럼을 추가합니다.

coord_df = CoordDataFrame(source_df, geo_df, table_df, x_colname, y_colname)

AddressDataFrame

비정형 도로명주소를 포함하는 데이터프레임을 주소체계 데이터베이스와 연동하여 분석 및 시각화할 수 있는 형태의 시도, 시군구, 읍면동,법정동코드, 시군구코드 등의 컬럼을 추가합니다.

address_df = AddressDataFrame(target_colname, source_df)