python - 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
.
解决方案
推荐阅读
- node.js - Nodejs- Math.random() 足够了,还是替代的?
- javascript - 反应流程图:在画布中放置一个填充
- python - 为什么我运行 python 代码后数据库中的值会被删除?
- reactjs - 如果用户使用 react-native-otp-input 输入不正确的 otp,如何重置输入的 otp
- c++ - 概念可能会取代 C++ 中的类型特征吗?
- windows - 参数未传递给简单的 powershell 函数
- c# - Identityserver4 和组管理
- reactjs - 如何检查文件大小的大小和尺寸反应原生?
- python - 在熊猫数据框中取两个值的平均值
- java - 带有 FFmpeg 和 JavaFx 的 JavaCV 视频播放器