brunch

Python: PySail#02

#PySail #PySpark #Bench #GroupBy

by 유윤식

PySpark Vs. PySail 비교해보기


여전히 순수한 PySpark 에 좀 더 애정이 있지만

새로운 실험(?)을 하는 것 같아서

재미있게 비교를 해보려고

조금은 복잡한 쿼리를 통해 진행.



(

spark.read.parquet(S3_PATH)

.filter((F.col("yyyymmdd").isNotNull()) & (F.col("yyyymmdd") >= START_DATE) & (F.col("userId").isNotNull()))

.select(["yyyymmdd", "userId", "searchTerm", "serverTime_KST"])

.withColumn("searchTerm", F.trim("searchTerm"))

.filter((F.col("searchTerm") != "") & (F.col("searchTerm").isNotNull()))

.groupBy("yyyymmdd", "userId", "searchTerm")

.agg(F.count("*").alias("cnt"))

.groupBy("userId")

.agg(

F.sort_array(F.collect_list(F.struct("cnt", "searchTerm")), asc=False).alias(

"st_frequencies"

)

)

.write.mode("overwrite")

.parquet("./tmp_test")

)


똑같은 Instance 에서

똑같은 Query 를 이용해서

실험해보았다.


먼저 해당 데이터셋의 COUNT 를 살펴보는데,

먼저 순수한 PySpark 에서는

스크린샷 2025-10-21 22.38.13.png


약 40초 정도 걸려서 결과를 알려주었는데...


PySail Engine 을 통해 만든 SparkSession 은

스크린샷 2025-10-21 22.50.03.png

약 16초 정도 걸린 것으로 확인.


이제 실제 쿼리를 적용하고 단순 실행 속도를 비교해보면,

스크린샷 2025-10-21 23.50.04.png
스크린샷 2025-10-21 23.50.12.png

위는 순수 PySpark 환경에서 진행하고


스크린샷 2025-10-21 23.54.57.png
스크린샷 2025-10-21 23.55.06.png

위는 PySail 환경에서 진행.


결과만 보았을 때에는 왜 PySail 을 이용해야 하는지 잘 모르겠다.


하지만, 메모리 사용 관련 메트릭을 보았을 때에는 PySail 에서 좀 더 안정적이라는 생각.


좀 더 정확한 실험과 깊이있는 스터디가 필요.

keyword
작가의 이전글Python: PySail#01