我正在尝试使用replaceWhere
只覆盖选定的 * 分区 *。不幸的是,分区模式使用了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/')
我在数据库10.4上。文档说replaceWhere
可以在**>9.1**https://www.example.com上工作docs.databricks.com/en/delta/selective-overwrite.html#arbitrary-selective-overwrite-with-replacewhere&language-python。但对我来说不起作用。
相反,我必须只删除分区和append
。
1条答案
按热度按时间ua4mk5z41#
没关系,它似乎是一个datalake功能。不适用于CSV。我忽略了文件。