我尝试仅使用 replaceWhere
覆盖选定的
partitions。不幸的是,分区模式正在使用
Year
、Month
和 Day
。
我已经尝试过以下代码,但是它
overwrite
所有内容,而不仅仅是选定的日期。
并且它不会抛出任何错误消息。
DateFrom = df_raw_mango.agg({"file_date": "min"}).collect()[0][0]
DateTo = df_raw_mango.agg({"file_date": "max"}).collect()[0][0]
condition = f"concat(col('Year'), col('Month'), col('Day')) >= '{DateFrom}' AND concat(col('Year'), col('Month'), col('Day')) <= '{DateTo}'"
df_raw_mango.coalesce(1).write.format('csv') \
.option("replaceWhere", condition).mode('overwrite') \
.option('header','true') \
.option('delimiter',',') \
.partitionBy(['Year','Month','Day','file_name']) \
.save(f'/mnt/Fruits/Mango/Green')
我什至尝试放置分区
file_date
并这样做,但没有成功:
condition = f"file_date >= '{DateFrom}' AND file_date <= '{DateTo}'"
.coalesce(1).write.format('csv') \
.partitionBy(['Year','Month','Day','file_name','file_date']) \
.option("replaceWhere", condition).mode('overwrite') \
.option('header','true') \
.option('delimiter',',') \
.save(f'/mnt/Fruits/Mango/Green/')
我使用的是 databricks 10.4。文档显示
replaceWhere
适用于 >9.1 https://docs.databricks.com/en/delta/selective-overwrite.html#任意-selective-overwrite-with-replacewhere&language-python。但不适合我。
相反,我必须删除分区和
append
。
没关系,这似乎是一个数据湖功能。不适用于 CSV。我忽略了文档。