Apache Spark 有没有一种方法可以删除属于一个分区的文件,而不需要在冰山中物理删除它们?

vyswwuz2  于 2023-05-07  发布在  Apache
关注(0)|答案(1)|浏览(127)

add_files()用于将配置单元表中的一些文件添加到冰山。但除了删除表并重新创建之外,无法找到反转该操作的方法。

CALL spark_catalog.system.add_files(
table => 'db.tbl',
source_table => 'db.src_tbl',
partition_filter => map('date', '2023-03-16', 'hour', '12')

每件事的工作预期到这一步,但现在如果我想添加所有文件属于2023-03-16现在它会抱怨一些文件是重复的。

java.lang.IllegalStateException: 
Cannot complete import because data files to be imported already exist within the target table: 
.../part-00000-d9d0137c-d7d6-46f5-b78a-9f68b977c7af.c000.zstd.parquet.  
This is disabled by default as Iceberg is not designed for multiple references to the same file within the same table.  
If you are sure, you may set 'check_duplicate_files' to false to force the import.

显然也不想添加重复项。有解决办法吗?

2fjabf4q

2fjabf4q1#

来自社区slack thread的总结。

  • 使用快照管理程序,它是相当复杂的。
  • 使用delete from作为它的元数据只删除如果过滤器匹配整个分区,不会触及数据.

相关问题