728x90
반응형
parquet 파일이 너무 작은 조각으로 저장되서, 조회 속도에 문제가 생겼어요.
검색해보니 읽어서 원하는 크기로 저장하는 방법을 사용한다고 해요
요약
1. parquet 파일 너무 많아서 조회 속도 느림
2. repartition으로 원하는 사이즈로 저장함
설명
hdfs든, s3든 file이 많으면 속도가 느려지죠 그래서 file을 merge하는 방법을 사용해요
인터넷을 검색하면서 아래 코드처럼 repartition을 하는 방법을 찾았어요
def get_repartition_factor(dir_size):
block_size = sc._jsc.hadoopConfiguration().get(“dfs.blocksize”)
return math.ceil(dir_size/block_size) # returns 2
df=spark.read.parquet(“/path/to/source”)
df.repartition(get_repartition_factor(217894092))
.write
.parquet("/path/to/output")
https://medium.com/bigspark/compaction-merge-of-small-parquet-files-bef60847e60b
잘 적용이 되네요. airflow에서 spark batch로 돌려야겠어요
+ aws에서는 glue를 사용한다고 해요
datasink0 = glueContext.write_dynamic_frame.from_options(
frame=partitioned_dynamic_df,
connection_type="s3",
connection_options={
'path': "s3://bucket-name/output/"
},
format="parquet")
하지만 저는 온프렘이기 때문에 사용할 수 없어요
끗
728x90
반응형
'Data > Spark' 카테고리의 다른 글
Spark) createOrReplaceTempView (0) | 2023.03.27 |
---|---|
Spark) k8s,jupyterhub에서 sparkUI 사용하기 (0) | 2022.03.24 |
Spark) spark_submit시 spark.app.id warning_ jupyterhub (0) | 2022.03.24 |
Spark) spark volume data spill 이슈_spark-local-dir (0) | 2022.03.21 |
Spark) Thrift serverHive-Metastore OOM 해결_메모리 추가할당 (0) | 2022.01.10 |