Pyspark로 데이터를 정제하고 두가지 조건을 만족하면서 하둡에 써야했다.
잠깐의 구글링으로 각각을 검색 후 아래와 같은 코드로 파일출력을 한 후 확인을 했는데 파일은 50개지만 정렬이 되지 않았다.
# df: Dataframe
df.sort("key1", "key2", "key3").repartition(50)\
.write.mode('overwrite').option("sep", "\t").option("encoding", "UTF-8")\
.csv(output_path)
repartition은 coalesce + shuffle이다.repartition
repartition은 전체 데이터를 shuffle 후 원하는 수의 (output) 파티션으로 고르게 데이터를 분할한다.repartition 앞에서 sort를 했더라도 상관없이 데이터가 섞이고만다.coalesce
coalesce는 shuffle 옵션을 가진 데이터 분할이다.# df: Dataframe
df.sort("key1", "key2", "key3").coalesce(50)\
.write.mode('overwrite').option("sep", "\t").option("encoding", "UTF-8")\
.csv(output_path)