public CloseableIterable<NodeFileScanTask> splitNode(
      CloseableIterable<MixedFileScanTask> splitFiles,
      List<MixedFileScanTask> deleteFiles,
      long splitSize,
      int lookback,
      long openFileCost) {
    Function<MixedFileScanTask, Long> weightFunc =
        task -> Math.max(task.file().fileSizeInBytes(), openFileCost);
    return CloseableIterable.transform(
        CloseableIterable.combine(
            new BinPacking.PackingIterable<>(splitFiles, splitSize, lookback, weightFunc, true),
            splitFiles),
        datafiles -> packingTask(datafiles, deleteFiles));
  }
Config this scan with filter by the {@link Expression}. For Change Table, only filters related
to partition will take effect.

@param expr a filter expression
@return scan based on this with results filtered by the expression
amoro-format-iceberg/src/main/java/org/apache/amoro/scan/BasicKeyedTableScan.java