首页 > 解决方案 > pyspark在将数据写入hdfs时无法覆盖特定的分区数据

问题描述

我有一个customer_table基于以下三列进行分区的表。因此,在 hdfs 中,它如下所示:

date=1901 > cus_id=A > cus_type=online > file
          > cus_id=B > cus_type=online > file
          > cus_id=C > cus_type=online > file
date=1902 > cus_id=A > cus_type=online > file
          > cus_id=B > cus_type=online > file
          > cus_id=C > cus_type=online > file
date=1903 > cus_id=A > cus_type=online > file
          > cus_id=B > cus_type=online > file
          > cus_id=C > cus_type=online > file
      

现在,我已按输入数据进行过滤,并仅考虑了cus_id = A

df_filtered = df_input.filter(df.cus_id == "A")
df_filtered {dataframe has data from 1901, 1902 and 1903}

我已经完成了数据框操作,新计算的数据框df_filter_updated必须覆盖到customer_table中

因此,只需cus_id=A替换所有 date=**** hdfs 文件夹中的文件夹数据。

我们正在执行以下操作:

df_filter_updated.write.option("compression", "snappy").mode("overwrite")
.partitionby("date", "cus_id", "cus_type").parquet(hdfs_path)

但是,它会覆盖整个表而不是特定的分区文件夹。我们如何才能实现这种覆盖方式?

实际上,我做这个操作的原因是为customer_table.

标签: pythondataframepysparkhivepyspark-dataframes

解决方案


推荐阅读