#PySail #PySpark #Bench #GroupBy
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 에서는
약 40초 정도 걸려서 결과를 알려주었는데...
PySail Engine 을 통해 만든 SparkSession 은
약 16초 정도 걸린 것으로 확인.
이제 실제 쿼리를 적용하고 단순 실행 속도를 비교해보면,
위는 순수 PySpark 환경에서 진행하고
위는 PySail 환경에서 진행.
결과만 보았을 때에는 왜 PySail 을 이용해야 하는지 잘 모르겠다.
하지만, 메모리 사용 관련 메트릭을 보았을 때에는 PySail 에서 좀 더 안정적이라는 생각.
좀 더 정확한 실험과 깊이있는 스터디가 필요.