spark: partitioning

yozzum·2022년 3월 25일
0

Spark

목록 보기
14/21

Partitioning

s3에 데이터를 저장할 때 where 조건절에 자주 쓰이면서 유니크한 수가 많지 않은 칼럼을 기준으로 파티셔닝을 해서 저장할 수 있다.
ex. year month

  • 세 가지 저장 방법
    1. saveAsTable : df.write.partitionBy('partCol1','partCol2').saveAsTable('dbname.tablename')
    2. spark write : df.write.partitionBy("partCol").save("/location")
    3. unload : sql_context = "unload('select * from schema.tabnm') to 'path' partition by ('partCol')"

이렇게 저장하면 저장 S3경로에 partitionBy 칼럼명을 기준으로 하위폴더가 생성되고, 그 안에 해당하는 데이터가 적재된다.

이 데이터를 spark 어플리케이션에서 읽어올 때, where 절에 해당 칼럼을 넣으면, 조건에 맞는 partition 폴더의 파일들만 스캔해서 가져온다는 장점이있다.

※ unload example

import pgdb
con = pgdb.connect(database='dbname', host=hostname, user=username, password=pw, port=3360/5439)
cur = con.cursor()
sqlContext = df.write.partitionBy('year', 'month').saveAsTable('dbname.tablename')
cur.execute(sql_context)
sql_count = cur.fetchall()

profile
yozzum

0개의 댓글