1. pandas_df를 "spark_df = spark.createDataFrame(pandas_df)"를 사용해 spark_df로 변환할 때 만약 pandas_df에 date 타입이 있다면, timestamp 타입으로 오토캐스팅되므로 반드시 cast를 통해 컬럼을 다시 date 타입으로 바꿔줘야한다.
spark_df = spark_df.withColumn("date", col("date").cast(DateType()))
2. 만약 spark_df에 존재하는 "year" 컬럼을 기준으로 파티셔닝을 하여 hdfs에 저장하고 싶다면 해당 컬럼을 spark_df의 맨 마지막으로 보낸 뒤 partitionBy("year")를 하면 "year"를 기준으로 GROUP을 지어 파티셔닝이 되고 "year"컬럼을 제거한 형태로 write가 된다. 만약 "a" 컬럼을 제거하고싶지 않다면 마지막에 두지 않으면 된다.
spark_df.write.partitionBy("year").parquet(f"hdfs://path/")
# It shows like
# -- hdfs://path/2010
# -- hdfs://path/2011
# -- hdfs://path/2012 ...
728x90
'Hadoop' 카테고리의 다른 글
Hadoop Ecosystem 정리 #2 (Spark) (0) | 2023.01.10 |
---|---|
Apache Spark 환경 설정 (0) | 2022.12.26 |
Hadoop Ecosystem 정리 #1 (0) | 2022.12.20 |