即使在增量优化后,ADLS Gen2 位置中的小文件也可用

Small files available in ADLS Gen2 location even after delta optimization

我有一个相对较大的外部增量 table,其中包含关于 ADLS gen2 位置的数据。 此 table 由 idsignal_date

分区

我每周 运行 对此 table 进行增量优化查询。查询如下图

对于少数分区,我们可以看到优化运行时间超过 2 小时,如上所示。

对于一周的整个分区,此作业 运行 超过 48 小时并且必须在其间终止它以便继续将数据加载到此 table。 (否则遇到分区并发操作失败错误)

即使在此优化之后,我仍然可以在该分区的 ADLS 位置看到许多小文件,如下所示。

考虑到优化后的大量执行时间和小文件的可用性,优化过程中是否发生了任何错误?

任何 thoughts/points 感谢!

提前致谢。

OPTIMIZE 完成后不会删除小文件 - 它会创建一个新版本,引用新的、更大的文件,并将旧的小文件标记为已删除,但实际删除将在您 运行 VACUUM.

这里是执行优化的事务日志示例:

{"add":{"path":"part-00000-5046c283-8633-4fe2-8c99-ada26908e2d0-c000.snappy.parquet",
  "partitionValues":{},"size":1105,"modificationTime":1650281913487,
  "dataChange":false,"stats":"{\"numRecords\":200,\"minValues\":{\"id\":0},\"maxValues\":{\"id\":99},\"nullCount\":{\"id\":0}}"}}
{"remove":{"path":"part-00002-57c4253a-5bdc-4d3e-9886-601fa793cdf6-c000.snappy.parquet",
  "deletionTimestamp":1650281912032,"dataChange":false,
  "extendedFileMetadata":true,"partitionValues":{},"size":536}}
...other remove entries...
{"commitInfo":{"timestamp":1650281913514,"operation":"OPTIMIZE",
  "operationParameters":{"predicate":"[\"true\"]"},"readVersion":1,
  "isolationLevel":"SnapshotIsolation","isBlindAppend":false,
  "operationMetrics":{"numRemovedFiles":"16","numRemovedBytes":"8640","p25FileSize":"1105","minFileSize":"1105","numAddedFiles":"1","maxFileSize":"1105","p75FileSize":"1105","p50FileSize":"1105","numAddedBytes":"1105"},
  "engineInfo":"Apache-Spark/3.2.1 Delta-Lake/1.2.0",
  "txnId":"31a68055-7932-4266-8290-9939af7e6a84"}}