You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@paimon.apache.org by lz...@apache.org on 2023/03/18 04:43:06 UTC

[incubator-paimon] 25/32: [core] Rename paimon all file packages

This is an automated email from the ASF dual-hosted git repository.

lzljs3620320 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-paimon.git

commit 427c584efc319286fa8cb162f26c4ea2e23b1e6d
Author: JingsongLi <lz...@aliyun.com>
AuthorDate: Fri Mar 17 21:00:52 2023 +0800

    [core] Rename paimon all file packages
---
 .../apache/paimon/benchmark/TableBenchmark.java    |  8 ++---
 .../java/org/apache/paimon/format/FileFormat.java  |  2 +-
 .../java/org/apache/paimon/utils/ThreadUtils.java  | 15 +++++++++
 .../paimon/{file => }/AbstractFileStore.java       |  9 +++--
 .../paimon/{file => }/AppendOnlyFileStore.java     |  7 ++--
 .../main/java/org/apache/paimon/CoreOptions.java   |  1 -
 .../org/apache/paimon/{file => }/FileStore.java    |  5 ++-
 .../org/apache/paimon/{file => }/KeyValue.java     |  2 +-
 .../paimon/{file => }/KeyValueFileStore.java       |  9 +++--
 .../paimon/{file => }/KeyValueSerializer.java      |  6 ++--
 .../org/apache/paimon/{file => }/Snapshot.java     |  8 ++---
 .../org/apache/paimon/{file => }/WriteMode.java    |  2 +-
 .../paimon/append/AppendOnlyCompactManager.java    |  5 +--
 .../org/apache/paimon/append/AppendOnlyWriter.java | 10 +++---
 .../org/apache/paimon/catalog/AbstractCatalog.java |  2 +-
 .../apache/paimon/catalog/FileSystemCatalog.java   |  6 ++--
 .../apache/paimon/disk/ChannelReaderInputView.java |  2 +-
 .../disk/ChannelReaderInputViewIterator.java       |  2 +-
 .../paimon/disk/ChannelWriterOutputView.java       |  2 +-
 .../org/apache/paimon/file/utils/ThreadUtils.java  | 38 ----------------------
 .../paimon/io/AbstractFileRecordIterator.java      |  2 +-
 .../java/org/apache/paimon/io/DataFileMeta.java    |  8 ++---
 .../apache/paimon/io/DataFileMetaSerializer.java   |  8 ++---
 .../paimon/io/KeyValueDataFileRecordReader.java    |  8 ++---
 .../apache/paimon/io/KeyValueDataFileWriter.java   |  6 ++--
 .../paimon/io/KeyValueFileReaderFactory.java       | 14 ++++----
 .../paimon/io/KeyValueFileWriterFactory.java       |  6 ++--
 .../apache/paimon/io/RowDataFileRecordReader.java  |  4 +--
 .../org/apache/paimon/io/RowDataFileWriter.java    |  4 +--
 .../org/apache/paimon/manifest/ManifestEntry.java  |  4 +--
 .../paimon/manifest/ManifestEntrySerializer.java   |  6 ++--
 .../org/apache/paimon/manifest/ManifestFile.java   | 14 ++++----
 .../apache/paimon/manifest/ManifestFileMeta.java   |  4 +--
 .../manifest/ManifestFileMetaSerializer.java       |  4 +--
 .../org/apache/paimon/manifest/ManifestList.java   |  6 ++--
 .../main/java/org/apache/paimon/memory/Buffer.java |  1 -
 .../apache/paimon/mergetree/DropDeleteReader.java  |  2 +-
 .../org/apache/paimon/mergetree/LookupLevels.java  |  2 +-
 .../apache/paimon/mergetree/MergeTreeReaders.java  |  2 +-
 .../apache/paimon/mergetree/MergeTreeWriter.java   |  8 ++---
 .../paimon/mergetree/SortBufferWriteBuffer.java    | 12 +++----
 .../org/apache/paimon/mergetree/WriteBuffer.java   |  2 +-
 .../compact/ChangelogMergeTreeRewriter.java        |  4 +--
 .../paimon/mergetree/compact/ChangelogResult.java  |  2 +-
 .../compact/DeduplicateMergeFunction.java          |  2 +-
 .../compact/FullChangelogMergeFunctionWrapper.java |  2 +-
 .../FullChangelogMergeTreeCompactRewriter.java     |  2 +-
 .../LookupChangelogMergeFunctionWrapper.java       |  2 +-
 .../mergetree/compact/LookupMergeFunction.java     |  2 +-
 .../compact/LookupMergeTreeCompactRewriter.java    |  2 +-
 .../paimon/mergetree/compact/MergeFunction.java    |  2 +-
 .../mergetree/compact/MergeFunctionWrapper.java    |  2 +-
 .../mergetree/compact/MergeTreeCompactManager.java |  5 +--
 .../compact/MergeTreeCompactRewriter.java          |  4 +--
 .../mergetree/compact/MergeTreeCompactTask.java    |  2 +-
 .../compact/PartialUpdateMergeFunction.java        |  2 +-
 .../compact/ReducerMergeFunctionWrapper.java       |  2 +-
 .../paimon/mergetree/compact/SortMergeReader.java  |  2 +-
 .../mergetree/compact/ValueCountMergeFunction.java |  2 +-
 .../compact/aggregate/AggregateMergeFunction.java  |  2 +-
 .../paimon/operation/AbstractFileStoreScan.java    | 10 +++---
 .../paimon/operation/AbstractFileStoreWrite.java   | 12 +++----
 .../paimon/operation/AppendOnlyFileStoreRead.java  | 15 +++++----
 .../paimon/operation/AppendOnlyFileStoreScan.java  |  7 ++--
 .../paimon/operation/AppendOnlyFileStoreWrite.java | 19 ++++++-----
 .../paimon/operation/FileStoreCommitImpl.java      | 12 +++----
 .../paimon/operation/FileStoreExpireImpl.java      | 10 +++---
 .../apache/paimon/operation/FileStoreWrite.java    |  4 +--
 .../paimon/operation/KeyValueFileStoreRead.java    | 13 ++++----
 .../paimon/operation/KeyValueFileStoreScan.java    |  7 ++--
 .../paimon/operation/KeyValueFileStoreWrite.java   | 21 ++++++------
 .../paimon/operation/MemoryFileStoreWrite.java     |  6 ++--
 .../org/apache/paimon/operation/ReverseReader.java |  2 +-
 .../apache/paimon/schema/SchemaEvolutionUtil.java  |  4 +--
 .../org/apache/paimon/schema/SchemaManager.java    |  8 ++---
 .../org/apache/paimon/schema/SchemaSerializer.java |  4 +--
 .../org/apache/paimon/schema/SchemaValidation.java |  4 +--
 .../java/org/apache/paimon/schema/TableSchema.java |  2 +-
 .../sort/AbstractBinaryExternalMerger.java         |  6 ++--
 .../{file => }/sort/BinaryExternalMerger.java      |  6 ++--
 .../{file => }/sort/BinaryExternalSortBuffer.java  |  8 ++---
 .../{file => }/sort/BinaryInMemorySortBuffer.java  |  6 ++--
 .../{file => }/sort/BinaryIndexedSortable.java     |  4 +--
 .../{file => }/sort/BinaryMergeIterator.java       |  4 +--
 .../apache/paimon/{file => }/sort/HeapSort.java    |  2 +-
 .../paimon/{file => }/sort/IndexedSortable.java    |  2 +-
 .../paimon/{file => }/sort/IndexedSorter.java      |  2 +-
 .../{file => }/sort/PartialOrderPriorityQueue.java |  2 +-
 .../apache/paimon/{file => }/sort/QuickSort.java   |  2 +-
 .../apache/paimon/{file => }/sort/SortBuffer.java  |  4 +--
 .../{file => }/sort/SpillChannelManager.java       |  2 +-
 .../paimon/{file => }/stats/BinaryTableStats.java  |  6 ++--
 .../stats/FieldStatsArraySerializer.java           |  6 ++--
 .../{file => }/stats/FieldStatsConverters.java     |  2 +-
 .../paimon/table/AbstractFileStoreTable.java       | 10 +++---
 .../paimon/table/AppendOnlyFileStoreTable.java     | 10 +++---
 .../table/ChangelogValueCountFileStoreTable.java   | 14 ++++----
 .../table/ChangelogWithKeyFileStoreTable.java      | 14 ++++----
 .../java/org/apache/paimon/table/DataTable.java    |  2 +-
 .../org/apache/paimon/table/FileStoreTable.java    |  7 ++--
 .../apache/paimon/table/FileStoreTableFactory.java |  6 ++--
 .../paimon/table/sink/CommitMessageImpl.java       |  6 ++--
 .../paimon/table/sink/CommitMessageSerializer.java |  6 ++--
 .../apache/paimon/table/sink/TableWriteImpl.java   |  5 +--
 .../table/source/BatchDataTableScanImpl.java       |  2 +-
 .../org/apache/paimon/table/source/DataSplit.java  |  2 +-
 .../paimon/table/source/KeyValueTableRead.java     |  2 +-
 .../table/source/ResetRowKindRecordIterator.java   |  2 +-
 .../table/source/StreamDataTableScanImpl.java      |  4 +--
 .../paimon/table/source/StreamTableScan.java       |  2 +-
 .../source/ValueContentRowDataRecordIterator.java  |  2 +-
 .../source/ValueCountRowDataRecordIterator.java    |  2 +-
 .../snapshot/BoundedWatermarkFollowUpScanner.java  |  2 +-
 .../source/snapshot/CompactedStartingScanner.java  |  2 +-
 .../CompactionChangelogFollowUpScanner.java        |  2 +-
 .../ContinuousCompactorFollowUpScanner.java        |  2 +-
 .../ContinuousCompactorStartingScanner.java        |  4 +--
 .../ContinuousFromSnapshotStartingScanner.java     |  2 +-
 .../ContinuousFromTimestampStartingScanner.java    |  2 +-
 .../snapshot/ContinuousLatestStartingScanner.java  |  2 +-
 .../source/snapshot/DeltaFollowUpScanner.java      |  2 +-
 .../table/source/snapshot/FollowUpScanner.java     |  2 +-
 .../table/source/snapshot/FullStartingScanner.java |  2 +-
 .../snapshot/InputChangelogFollowUpScanner.java    |  2 +-
 .../table/source/snapshot/SnapshotSplitReader.java |  2 +-
 .../source/snapshot/SnapshotSplitReaderImpl.java   |  4 +--
 .../table/source/snapshot/StartingScanner.java     |  2 +-
 .../StaticFromSnapshotStartingScanner.java         |  2 +-
 .../StaticFromTimestampStartingScanner.java        |  2 +-
 .../apache/paimon/table/system/AuditLogTable.java  |  6 ++--
 .../apache/paimon/table/system/BucketsTable.java   |  8 ++---
 .../org/apache/paimon/table/system/FilesTable.java | 14 ++++----
 .../apache/paimon/table/system/OptionsTable.java   |  8 ++---
 .../apache/paimon/table/system/SchemasTable.java   | 12 +++----
 .../apache/paimon/table/system/SnapshotsTable.java | 10 +++---
 .../paimon/{file => }/utils/BulkFormatMapping.java |  9 +++--
 .../paimon/{file => }/utils/CommitIncrement.java   |  2 +-
 .../{file => }/utils/ExecutorThreadFactory.java    |  2 +-
 .../utils/FatalExitExceptionHandler.java           |  2 +-
 .../{file => }/utils/FileStorePathFactory.java     |  5 ++-
 .../apache/paimon/{file => }/utils/FileUtils.java  |  2 +-
 .../{file => }/utils/IteratorRecordReader.java     |  2 +-
 .../paimon/{file => }/utils/JsonDeserializer.java  |  2 +-
 .../paimon/{file => }/utils/JsonSerdeUtil.java     |  2 +-
 .../paimon/{file => }/utils/JsonSerializer.java    |  2 +-
 .../{file => }/utils/KeyComparatorSupplier.java    |  2 +-
 .../{file => }/utils/MutableObjectIterator.java    |  2 +-
 .../paimon/{file => }/utils/ObjectSerializer.java  |  2 +-
 .../apache/paimon/{file => }/utils/OffsetRow.java  |  2 +-
 .../{file => }/utils/PartitionPathUtils.java       |  2 +-
 .../paimon/{file => }/utils/RecordWriter.java      |  2 +-
 .../apache/paimon/{file => }/utils/Restorable.java |  2 +-
 .../{file => }/utils/RowDataPartitionComputer.java |  4 +--
 .../{file => }/utils/SerializableSupplier.java     |  2 +-
 .../{file => }/utils/SerializationUtils.java       |  2 +-
 .../paimon/{file => }/utils/SnapshotManager.java   |  7 ++--
 .../utils/VersionedObjectSerializer.java           |  2 +-
 .../apache/paimon/{file => }/FileFormatTest.java   |  3 +-
 .../paimon/{file => }/KeyValueSerializerTest.java  |  6 ++--
 .../apache/paimon/{file => }/TestFileStore.java    | 21 ++++++------
 .../paimon/{file => }/TestKeyValueGenerator.java   | 10 +++---
 .../append/AppendOnlyCompactManagerTest.java       |  2 +-
 .../apache/paimon/append/AppendOnlyWriterTest.java | 12 +++----
 .../paimon/append/IterativeCompactTaskTest.java    |  2 +-
 .../{file => }/format/FileFormatSuffixTest.java    | 13 ++++----
 .../format/FileStatsExtractingAvroFormat.java      | 10 ++----
 .../FileStatsExtractingAvroFormatFactory.java      |  4 +--
 .../{file => }/format/FlushingFileFormat.java      |  8 ++---
 .../paimon/io/DataFileMetaSerializerTest.java      |  2 +-
 .../paimon/io/DataFileTestDataGenerator.java       |  6 ++--
 .../org/apache/paimon/io/DataFileTestUtils.java    |  2 +-
 .../paimon/io/KeyValueFileReadWriteTest.java       | 18 +++++-----
 .../ManifestCommittableSerializerTest.java         |  2 +-
 .../manifest/ManifestEntrySerializerTest.java      |  4 +--
 .../manifest/ManifestFileMetaSerializerTest.java   |  4 +--
 .../paimon/manifest/ManifestFileMetaTest.java      | 10 +++---
 .../apache/paimon/manifest/ManifestFileTest.java   | 10 +++---
 .../apache/paimon/manifest/ManifestListTest.java   |  6 ++--
 .../paimon/manifest/ManifestTestDataGenerator.java |  8 ++---
 .../apache/paimon/mergetree/LookupLevelsTest.java  | 18 +++++-----
 .../org/apache/paimon/mergetree/MergeTreeTest.java | 26 +++++++--------
 .../mergetree/SortBufferWriteBufferTestBase.java   |  8 ++---
 .../compact/CombiningRecordReaderTestBase.java     |  6 ++--
 .../mergetree/compact/ConcatRecordReaderTest.java  |  6 ++--
 .../FullChangelogMergeFunctionWrapperTestBase.java |  2 +-
 .../mergetree/compact/IntervalPartitionTest.java   |  4 +--
 .../LookupChangelogMergeFunctionWrapperTest.java   |  2 +-
 .../mergetree/compact/MergeFunctionTestUtils.java  |  4 +--
 .../compact/MergeTreeCompactManagerTest.java       |  4 +--
 .../ReducerMergeFunctionWrapperTestBase.java       |  2 +-
 .../mergetree/compact/SortMergeReaderTestBase.java |  6 ++--
 .../operation/CleanedFileStoreExpireTest.java      |  8 ++---
 .../paimon/operation/FileStoreCommitTest.java      | 18 +++++-----
 .../paimon/operation/FileStoreExpireTestBase.java  | 16 ++++-----
 .../operation/KeyValueFileStoreReadTest.java       | 14 ++++----
 .../operation/KeyValueFileStoreScanTest.java       | 14 ++++----
 .../paimon/operation/PartitionExpireTest.java      |  4 +--
 .../apache/paimon/operation/TestCommitThread.java  | 16 ++++-----
 .../operation/UncleanedFileStoreExpireTest.java    |  2 +-
 .../paimon/schema/DataTypeJsonParserTest.java      |  2 +-
 .../apache/paimon/schema/SchemaManagerTest.java    |  6 ++--
 .../schema/TableSchemaSerializationTest.java       |  2 +-
 .../sort/BinaryExternalSortBufferTest.java         |  4 +--
 .../{file => }/sort/IntNormalizedKeyComputer.java  |  2 +-
 .../{file => }/sort/IntRecordComparator.java       |  2 +-
 .../{file => }/stats/BinaryTableStatsTest.java     |  2 +-
 .../stats/FieldStatsArraySerializerTest.java       |  6 ++--
 .../{file => }/stats/FieldStatsCollectorTest.java  |  2 +-
 .../paimon/{file => }/stats/StatsTestUtils.java    |  2 +-
 .../{file => }/stats/TestFileStatsExtractor.java   |  6 ++--
 .../paimon/table/AppendOnlyFileDataTableTest.java  |  2 +-
 .../paimon/table/AppendOnlyFileStoreTableTest.java |  6 ++--
 .../AppendOnlyTableColumnTypeFileDataTest.java     |  2 +-
 .../AppendOnlyTableColumnTypeFileMetaTest.java     |  4 +--
 .../table/AppendOnlyTableFileMetaFilterTest.java   |  4 +--
 .../ChangelogValueCountColumnTypeFileDataTest.java |  2 +-
 .../ChangelogValueCountColumnTypeFileMetaTest.java |  4 +--
 .../ChangelogValueCountFileDataTableTest.java      |  2 +-
 .../ChangelogValueCountFileMetaFilterTest.java     |  4 +--
 .../ChangelogValueCountFileStoreTableTest.java     |  8 ++---
 .../ChangelogWithKeyColumnTypeFileDataTest.java    |  2 +-
 .../table/ChangelogWithKeyFileDataTableTest.java   |  2 +-
 .../table/ChangelogWithKeyFileMetaFilterTest.java  |  4 +--
 .../table/ChangelogWithKeyFileStoreTableTest.java  |  6 ++--
 ...hangelogWithKeyTableColumnTypeFileMetaTest.java |  6 ++--
 .../paimon/table/ColumnTypeFileMetaTestBase.java   |  4 +--
 .../paimon/table/FileMetaFilterTestBase.java       |  4 +--
 .../paimon/table/FileStoreTableTestBase.java       | 16 ++++-----
 .../paimon/table/SchemaEvolutionTableTestBase.java | 14 ++++----
 .../apache/paimon/table/SchemaEvolutionTest.java   |  4 +--
 .../paimon/table/WritePreemptMemoryTest.java       |  8 ++---
 .../apache/paimon/table/sink/TableWriteTest.java   | 12 +++----
 .../table/source/BatchDataTableScanTest.java       |  2 +-
 .../source/RowDataRecordIteratorTestBase.java      |  6 ++--
 .../ValueContentRowDataRecordIteratorTest.java     |  2 +-
 .../ValueCountRowDataRecordIteratorTest.java       |  2 +-
 .../BoundedWatermarkFollowUpScannerTest.java       |  4 +--
 .../snapshot/CompactedStartingScannerTest.java     |  2 +-
 .../CompactionChangelogFollowUpScannerTest.java    |  4 +--
 .../ContinuousCompactorFollowUpScannerTest.java    |  4 +--
 .../ContinuousCompactorStartingScannerTest.java    |  2 +-
 ...ContinuousFromTimestampStartingScannerTest.java |  2 +-
 .../ContinuousLatestStartingScannerTest.java       |  2 +-
 .../source/snapshot/DeltaFollowUpScannerTest.java  |  4 +--
 .../source/snapshot/FullStartingScannerTest.java   |  2 +-
 .../InputChangelogFollowUpScannerTest.java         |  4 +--
 .../table/source/snapshot/ScannerTestBase.java     | 10 +++---
 .../paimon/{file => }/utils/BlockingIterator.java  |  2 +-
 .../paimon/{file => }/utils/FailingFileIO.java     |  3 +-
 .../{file => }/utils/FileStorePathFactoryTest.java |  4 +--
 .../{file => }/utils/ObjectSerializerTestBase.java |  2 +-
 .../paimon/{file => }/utils/OffsetRowTest.java     |  2 +-
 .../paimon/{file => }/utils/ReusingKeyValue.java   |  4 +--
 .../paimon/{file => }/utils/ReusingTestData.java   |  5 ++-
 .../{file => }/utils/SnapshotManagerTest.java      |  2 +-
 .../{file => }/utils/TestReusingRecordReader.java  |  4 +--
 .../paimon/{file => }/utils/TraceableFileIO.java   |  3 +-
 .../org.apache.paimon.format.FileFormatFactory     |  2 +-
 .../services/org.apache.paimon.fs.FileIOLoader     |  4 +--
 .../apache/paimon/connector/CatalogITCaseBase.java |  4 +--
 .../connector/ContinuousFileStoreITCase.java       |  6 ++--
 .../apache/paimon/connector/FlinkActionITCase.java |  2 +-
 .../apache/paimon/connector/LookupJoinITCase.java  |  2 +-
 .../apache/paimon/connector/CatalogITCaseBase.java |  4 +--
 .../connector/ContinuousFileStoreITCase.java       |  6 ++--
 .../apache/paimon/connector/FlinkActionITCase.java |  2 +-
 .../apache/paimon/connector/LookupJoinITCase.java  |  2 +-
 .../connector/AbstractTableStoreFactory.java       |  2 +-
 .../connector/TableStoreConnectorFactory.java      |  4 +--
 .../apache/paimon/connector/action/ActionBase.java |  6 ++--
 .../connector/lookup/FileStoreLookupFunction.java  |  2 +-
 .../sink/FullChangelogStoreSinkWrite.java          |  4 +--
 .../sink/OffsetRowDataHashStreamPartitioner.java   |  2 +-
 .../RestoreAndFailCommittableStateManager.java     |  2 +-
 .../connector/sink/StoreCompactOperator.java       |  2 +-
 .../paimon/connector/sink/TableStoreSink.java      |  2 +-
 .../connector/source/FlinkSourceBuilder.java       |  2 +-
 .../connector/source/LogHybridSourceFactory.java   |  2 +-
 .../connector/source/StaticFileStoreSource.java    |  4 +--
 .../source/StaticFileStoreSplitEnumerator.java     |  2 +-
 .../paimon/connector/source/TableStoreSource.java  |  2 +-
 .../paimon/connector/AppendOnlyTableITCase.java    |  2 +-
 .../apache/paimon/connector/CatalogITCaseBase.java |  6 ++--
 .../paimon/connector/CatalogTableITCase.java       |  4 +--
 .../apache/paimon/connector/ChangelogModeTest.java |  4 +--
 .../ChangelogWithKeyFileStoreTableITCase.java      |  2 +-
 ...AndMultiPartitionedTableWIthKafkaLogITCase.java |  2 +-
 .../connector/ContinuousFileStoreITCase.java       |  6 ++--
 .../apache/paimon/connector/FileStoreITCase.java   | 10 +++---
 .../paimon/connector/FileSystemCatalogITCase.java  |  4 +--
 .../paimon/connector/ForceCompactionITCase.java    | 10 +++---
 .../connector/FullCompactionFileStoreITCase.java   |  2 +-
 .../apache/paimon/connector/LogSystemITCase.java   |  2 +-
 .../connector/LookupChangelogWithAggITCase.java    |  2 +-
 .../apache/paimon/connector/LookupJoinITCase.java  |  2 +-
 .../paimon/connector/PredicateConverterTest.java   |  2 +-
 .../paimon/connector/ReadWriteTableITCase.java     |  4 +--
 .../paimon/connector/RescaleBucketITCase.java      |  6 ++--
 .../StreamingReadWriteTableWithKafkaLogITCase.java |  2 +-
 .../paimon/connector/StreamingWarehouseITCase.java |  2 +-
 .../paimon/connector/action/ActionITCaseBase.java  | 10 +++---
 .../connector/action/CompactActionITCase.java      |  2 +-
 .../connector/action/DeleteActionITCase.java       |  4 +--
 .../action/DropPartitionActionITCase.java          |  2 +-
 .../connector/action/MergeIntoActionITCase.java    |  2 +-
 .../connector/sink/CommitterOperatorTest.java      |  4 +--
 .../connector/sink/CommitterOperatorTestBase.java  |  4 +--
 .../paimon/connector/sink/CompactorSinkITCase.java |  8 ++---
 .../connector/sink/FileStoreShuffleBucketTest.java |  2 +-
 .../paimon/connector/sink/SinkSavepointITCase.java |  2 +-
 .../connector/source/CompactorSourceITCase.java    |  4 +--
 .../source/FileStoreSourceReaderTest.java          |  4 +--
 .../source/FileStoreSourceSplitGeneratorTest.java  |  2 +-
 .../source/FileStoreSourceSplitReaderTest.java     |  8 ++---
 .../source/FileStoreSourceSplitSerializerTest.java |  2 +-
 .../source/TestChangelogDataReadWrite.java         | 18 +++++-----
 .../connector/util/ReadWriteTableTestUtil.java     |  2 +-
 .../apache/paimon/format/avro/AvroFileFormat.java  |  2 +-
 .../apache/paimon/format/orc/OrcFileFormat.java    |  2 +-
 .../orc/filter/OrcPredicateFunctionVisitor.java    |  3 +-
 .../paimon/format/parquet/ParquetFileFormat.java   |  2 +-
 .../paimon/format/orc/OrcFilterConverterTest.java  |  4 +--
 .../java/org/apache/paimon/hive/HiveCatalog.java   |  6 ++--
 .../org/apache/paimon/hive/HiveCatalogITCase.java  |  4 +--
 .../java/org/apache/paimon/hive/HiveSchema.java    |  2 +-
 .../org/apache/paimon/hive/TableStoreJobConf.java  |  2 +-
 .../paimon/hive/mapred/TableStoreInputFormat.java  |  4 +--
 .../paimon/hive/mapred/TableStoreRecordReader.java |  2 +-
 .../org/apache/paimon/hive/FileStoreTestUtils.java |  7 ++--
 .../apache/paimon/hive/HiveTableSchemaTest.java    |  4 +--
 .../hive/TableStoreHiveStorageHandlerITCase.java   |  2 +-
 .../apache/paimon/hive/TableStoreSerDeTest.java    |  4 +--
 .../apache/paimon/spark/SimpleTableTestHelper.java |  4 +--
 .../java/org/apache/paimon/spark/SparkCatalog.java |  8 ++---
 .../org/apache/paimon/spark/SparkReadITCase.java   |  2 +-
 .../org/apache/paimon/spark/SparkReadTestBase.java |  2 +-
 336 files changed, 812 insertions(+), 852 deletions(-)

diff --git a/paimon-benchmark/paimon-micro-benchmarks/src/test/java/org/apache/paimon/benchmark/TableBenchmark.java b/paimon-benchmark/paimon-micro-benchmarks/src/test/java/org/apache/paimon/benchmark/TableBenchmark.java
index 72f1a697b..f31e14729 100644
--- a/paimon-benchmark/paimon-micro-benchmarks/src/test/java/org/apache/paimon/benchmark/TableBenchmark.java
+++ b/paimon-benchmark/paimon-micro-benchmarks/src/test/java/org/apache/paimon/benchmark/TableBenchmark.java
@@ -22,15 +22,15 @@ import org.apache.flink.table.store.catalog.CatalogContext;
 
 import org.apache.commons.math3.random.RandomDataGenerator;
 import org.apache.paimon.CoreOptions;
-import org.apache.paimon.data.BinaryString;
-import org.apache.paimon.data.GenericRow;
-import org.apache.paimon.data.InternalRow;
 import org.apache.paimon.catalog.Catalog;
 import org.apache.paimon.catalog.CatalogFactory;
 import org.apache.paimon.catalog.Identifier;
-import org.apache.paimon.schema.Schema;
+import org.apache.paimon.data.BinaryString;
+import org.apache.paimon.data.GenericRow;
+import org.apache.paimon.data.InternalRow;
 import org.apache.paimon.options.CatalogOptions;
 import org.apache.paimon.options.Options;
+import org.apache.paimon.schema.Schema;
 import org.apache.paimon.table.Table;
 import org.apache.paimon.types.DataField;
 import org.apache.paimon.types.DataTypes;
diff --git a/paimon-common/src/main/java/org/apache/paimon/format/FileFormat.java b/paimon-common/src/main/java/org/apache/paimon/format/FileFormat.java
index 946e549db..77862e826 100644
--- a/paimon-common/src/main/java/org/apache/paimon/format/FileFormat.java
+++ b/paimon-common/src/main/java/org/apache/paimon/format/FileFormat.java
@@ -18,9 +18,9 @@
 
 package org.apache.paimon.format;
 
-import org.apache.paimon.predicate.Predicate;
 import org.apache.paimon.options.ConfigOption;
 import org.apache.paimon.options.Options;
+import org.apache.paimon.predicate.Predicate;
 import org.apache.paimon.types.RowType;
 
 import javax.annotation.Nullable;
diff --git a/paimon-common/src/main/java/org/apache/paimon/utils/ThreadUtils.java b/paimon-common/src/main/java/org/apache/paimon/utils/ThreadUtils.java
index d70041194..6e617473b 100644
--- a/paimon-common/src/main/java/org/apache/paimon/utils/ThreadUtils.java
+++ b/paimon-common/src/main/java/org/apache/paimon/utils/ThreadUtils.java
@@ -18,6 +18,13 @@
 
 package org.apache.paimon.utils;
 
+import org.slf4j.Logger;
+
+import java.lang.management.ManagementFactory;
+import java.lang.management.ThreadInfo;
+import java.util.Arrays;
+import java.util.stream.Collectors;
+
 /** Utils for thread. */
 public class ThreadUtils {
 
@@ -29,4 +36,12 @@ public class ThreadUtils {
         }
         return builder.toString();
     }
+
+    public static void errorLogThreadDump(Logger logger) {
+        final ThreadInfo[] perThreadInfo =
+                ManagementFactory.getThreadMXBean().dumpAllThreads(true, true);
+        logger.error(
+                "Thread dump: \n{}",
+                Arrays.stream(perThreadInfo).map(Object::toString).collect(Collectors.joining()));
+    }
 }
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/AbstractFileStore.java b/paimon-core/src/main/java/org/apache/paimon/AbstractFileStore.java
similarity index 96%
rename from paimon-core/src/main/java/org/apache/paimon/file/AbstractFileStore.java
rename to paimon-core/src/main/java/org/apache/paimon/AbstractFileStore.java
index aab0b6526..f644129a9 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/AbstractFileStore.java
+++ b/paimon-core/src/main/java/org/apache/paimon/AbstractFileStore.java
@@ -16,21 +16,20 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file;
+package org.apache.paimon;
 
-import org.apache.paimon.CoreOptions;
 import org.apache.paimon.annotation.VisibleForTesting;
 import org.apache.paimon.data.InternalRow;
+import org.apache.paimon.fs.FileIO;
 import org.apache.paimon.manifest.ManifestFile;
 import org.apache.paimon.manifest.ManifestList;
 import org.apache.paimon.operation.FileStoreCommitImpl;
 import org.apache.paimon.operation.FileStoreExpireImpl;
 import org.apache.paimon.operation.PartitionExpire;
 import org.apache.paimon.schema.SchemaManager;
-import org.apache.paimon.file.utils.FileStorePathFactory;
-import org.apache.paimon.file.utils.SnapshotManager;
-import org.apache.paimon.fs.FileIO;
 import org.apache.paimon.types.RowType;
+import org.apache.paimon.utils.FileStorePathFactory;
+import org.apache.paimon.utils.SnapshotManager;
 
 import java.time.Duration;
 import java.util.Comparator;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/AppendOnlyFileStore.java b/paimon-core/src/main/java/org/apache/paimon/AppendOnlyFileStore.java
similarity index 97%
rename from paimon-core/src/main/java/org/apache/paimon/file/AppendOnlyFileStore.java
rename to paimon-core/src/main/java/org/apache/paimon/AppendOnlyFileStore.java
index d446dfc29..893039c23 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/AppendOnlyFileStore.java
+++ b/paimon-core/src/main/java/org/apache/paimon/AppendOnlyFileStore.java
@@ -16,16 +16,15 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file;
+package org.apache.paimon;
 
-import org.apache.paimon.CoreOptions;
 import org.apache.paimon.data.InternalRow;
+import org.apache.paimon.format.FileFormatDiscover;
+import org.apache.paimon.fs.FileIO;
 import org.apache.paimon.operation.AppendOnlyFileStoreRead;
 import org.apache.paimon.operation.AppendOnlyFileStoreScan;
 import org.apache.paimon.operation.AppendOnlyFileStoreWrite;
 import org.apache.paimon.schema.SchemaManager;
-import org.apache.paimon.format.FileFormatDiscover;
-import org.apache.paimon.fs.FileIO;
 import org.apache.paimon.types.RowType;
 
 import java.util.Comparator;
diff --git a/paimon-core/src/main/java/org/apache/paimon/CoreOptions.java b/paimon-core/src/main/java/org/apache/paimon/CoreOptions.java
index 0792f3e15..4a046c7f0 100644
--- a/paimon-core/src/main/java/org/apache/paimon/CoreOptions.java
+++ b/paimon-core/src/main/java/org/apache/paimon/CoreOptions.java
@@ -20,7 +20,6 @@ package org.apache.paimon;
 
 import org.apache.paimon.annotation.Documentation.ExcludeFromDocumentation;
 import org.apache.paimon.annotation.Documentation.Immutable;
-import org.apache.paimon.file.WriteMode;
 import org.apache.paimon.format.FileFormat;
 import org.apache.paimon.fs.Path;
 import org.apache.paimon.options.ConfigOption;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/FileStore.java b/paimon-core/src/main/java/org/apache/paimon/FileStore.java
similarity index 93%
rename from paimon-core/src/main/java/org/apache/paimon/file/FileStore.java
rename to paimon-core/src/main/java/org/apache/paimon/FileStore.java
index 18a26c861..57fb4d23c 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/FileStore.java
+++ b/paimon-core/src/main/java/org/apache/paimon/FileStore.java
@@ -16,17 +16,16 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file;
+package org.apache.paimon;
 
-import org.apache.paimon.CoreOptions;
 import org.apache.paimon.operation.FileStoreCommit;
 import org.apache.paimon.operation.FileStoreExpire;
 import org.apache.paimon.operation.FileStoreRead;
 import org.apache.paimon.operation.FileStoreScan;
 import org.apache.paimon.operation.FileStoreWrite;
 import org.apache.paimon.operation.PartitionExpire;
-import org.apache.paimon.file.utils.SnapshotManager;
 import org.apache.paimon.types.RowType;
+import org.apache.paimon.utils.SnapshotManager;
 
 import javax.annotation.Nullable;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/KeyValue.java b/paimon-core/src/main/java/org/apache/paimon/KeyValue.java
similarity index 99%
rename from paimon-core/src/main/java/org/apache/paimon/file/KeyValue.java
rename to paimon-core/src/main/java/org/apache/paimon/KeyValue.java
index 3d6f16254..8afc27a87 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/KeyValue.java
+++ b/paimon-core/src/main/java/org/apache/paimon/KeyValue.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file;
+package org.apache.paimon;
 
 import org.apache.paimon.annotation.VisibleForTesting;
 import org.apache.paimon.data.InternalRow;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/KeyValueFileStore.java b/paimon-core/src/main/java/org/apache/paimon/KeyValueFileStore.java
similarity index 97%
rename from paimon-core/src/main/java/org/apache/paimon/file/KeyValueFileStore.java
rename to paimon-core/src/main/java/org/apache/paimon/KeyValueFileStore.java
index f0c0f68c8..1201c8e96 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/KeyValueFileStore.java
+++ b/paimon-core/src/main/java/org/apache/paimon/KeyValueFileStore.java
@@ -16,20 +16,19 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file;
+package org.apache.paimon;
 
-import org.apache.paimon.CoreOptions;
 import org.apache.paimon.data.InternalRow;
+import org.apache.paimon.format.FileFormatDiscover;
+import org.apache.paimon.fs.FileIO;
 import org.apache.paimon.mergetree.compact.MergeFunctionFactory;
 import org.apache.paimon.operation.KeyValueFileStoreRead;
 import org.apache.paimon.operation.KeyValueFileStoreScan;
 import org.apache.paimon.operation.KeyValueFileStoreWrite;
 import org.apache.paimon.schema.KeyValueFieldsExtractor;
 import org.apache.paimon.schema.SchemaManager;
-import org.apache.paimon.file.utils.KeyComparatorSupplier;
-import org.apache.paimon.format.FileFormatDiscover;
-import org.apache.paimon.fs.FileIO;
 import org.apache.paimon.types.RowType;
+import org.apache.paimon.utils.KeyComparatorSupplier;
 
 import java.util.Comparator;
 import java.util.function.Supplier;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/KeyValueSerializer.java b/paimon-core/src/main/java/org/apache/paimon/KeyValueSerializer.java
similarity index 95%
rename from paimon-core/src/main/java/org/apache/paimon/file/KeyValueSerializer.java
rename to paimon-core/src/main/java/org/apache/paimon/KeyValueSerializer.java
index d7dc7f876..34fd9b140 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/KeyValueSerializer.java
+++ b/paimon-core/src/main/java/org/apache/paimon/KeyValueSerializer.java
@@ -16,15 +16,15 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file;
+package org.apache.paimon;
 
 import org.apache.paimon.data.GenericRow;
 import org.apache.paimon.data.InternalRow;
 import org.apache.paimon.data.JoinedRow;
-import org.apache.paimon.file.utils.ObjectSerializer;
-import org.apache.paimon.file.utils.OffsetRow;
 import org.apache.paimon.types.RowKind;
 import org.apache.paimon.types.RowType;
+import org.apache.paimon.utils.ObjectSerializer;
+import org.apache.paimon.utils.OffsetRow;
 
 /**
  * Serializer for {@link KeyValue}.
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/Snapshot.java b/paimon-core/src/main/java/org/apache/paimon/Snapshot.java
similarity index 99%
rename from paimon-core/src/main/java/org/apache/paimon/file/Snapshot.java
rename to paimon-core/src/main/java/org/apache/paimon/Snapshot.java
index 2f4a6dee2..e953a1b0c 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/Snapshot.java
+++ b/paimon-core/src/main/java/org/apache/paimon/Snapshot.java
@@ -16,19 +16,19 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file;
+package org.apache.paimon;
 
 import org.apache.flink.shaded.jackson2.com.fasterxml.jackson.annotation.JsonCreator;
 import org.apache.flink.shaded.jackson2.com.fasterxml.jackson.annotation.JsonGetter;
 import org.apache.flink.shaded.jackson2.com.fasterxml.jackson.annotation.JsonProperty;
 
+import org.apache.paimon.fs.FileIO;
+import org.apache.paimon.fs.Path;
 import org.apache.paimon.manifest.ManifestEntry;
 import org.apache.paimon.manifest.ManifestFileMeta;
 import org.apache.paimon.manifest.ManifestList;
 import org.apache.paimon.operation.FileStoreScan;
-import org.apache.paimon.file.utils.JsonSerdeUtil;
-import org.apache.paimon.fs.FileIO;
-import org.apache.paimon.fs.Path;
+import org.apache.paimon.utils.JsonSerdeUtil;
 
 import javax.annotation.Nullable;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/WriteMode.java b/paimon-core/src/main/java/org/apache/paimon/WriteMode.java
similarity index 98%
rename from paimon-core/src/main/java/org/apache/paimon/file/WriteMode.java
rename to paimon-core/src/main/java/org/apache/paimon/WriteMode.java
index 4a4c63bf7..ea353845f 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/WriteMode.java
+++ b/paimon-core/src/main/java/org/apache/paimon/WriteMode.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file;
+package org.apache.paimon;
 
 import org.apache.paimon.options.description.DescribedEnum;
 import org.apache.paimon.options.description.InlineElement;
diff --git a/paimon-core/src/main/java/org/apache/paimon/append/AppendOnlyCompactManager.java b/paimon-core/src/main/java/org/apache/paimon/append/AppendOnlyCompactManager.java
index a81dc6050..c4dcec18e 100644
--- a/paimon-core/src/main/java/org/apache/paimon/append/AppendOnlyCompactManager.java
+++ b/paimon-core/src/main/java/org/apache/paimon/append/AppendOnlyCompactManager.java
@@ -18,13 +18,14 @@
 
 package org.apache.paimon.append;
 
+import org.apache.paimon.AppendOnlyFileStore;
 import org.apache.paimon.annotation.VisibleForTesting;
 import org.apache.paimon.compact.CompactFutureManager;
 import org.apache.paimon.compact.CompactResult;
 import org.apache.paimon.compact.CompactTask;
+import org.apache.paimon.fs.FileIO;
 import org.apache.paimon.io.DataFileMeta;
 import org.apache.paimon.io.DataFilePathFactory;
-import org.apache.paimon.fs.FileIO;
 import org.apache.paimon.utils.Preconditions;
 
 import java.io.IOException;
@@ -38,7 +39,7 @@ import java.util.Set;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.ExecutorService;
 
-/** Compact manager for {@link org.apache.paimon.file.AppendOnlyFileStore}. */
+/** Compact manager for {@link AppendOnlyFileStore}. */
 public class AppendOnlyCompactManager extends CompactFutureManager {
 
     private final FileIO fileIO;
diff --git a/paimon-core/src/main/java/org/apache/paimon/append/AppendOnlyWriter.java b/paimon-core/src/main/java/org/apache/paimon/append/AppendOnlyWriter.java
index 1c7b7c156..f5a8a13c3 100644
--- a/paimon-core/src/main/java/org/apache/paimon/append/AppendOnlyWriter.java
+++ b/paimon-core/src/main/java/org/apache/paimon/append/AppendOnlyWriter.java
@@ -19,21 +19,21 @@
 
 package org.apache.paimon.append;
 
-import org.apache.paimon.data.InternalRow;
 import org.apache.paimon.compact.CompactManager;
+import org.apache.paimon.data.InternalRow;
+import org.apache.paimon.format.FileFormat;
+import org.apache.paimon.fs.FileIO;
 import org.apache.paimon.io.CompactIncrement;
 import org.apache.paimon.io.DataFileMeta;
 import org.apache.paimon.io.DataFilePathFactory;
 import org.apache.paimon.io.NewFilesIncrement;
 import org.apache.paimon.io.RowDataRollingFileWriter;
-import org.apache.paimon.file.utils.CommitIncrement;
-import org.apache.paimon.file.utils.RecordWriter;
-import org.apache.paimon.format.FileFormat;
-import org.apache.paimon.fs.FileIO;
 import org.apache.paimon.types.RowKind;
 import org.apache.paimon.types.RowType;
+import org.apache.paimon.utils.CommitIncrement;
 import org.apache.paimon.utils.LongCounter;
 import org.apache.paimon.utils.Preconditions;
+import org.apache.paimon.utils.RecordWriter;
 
 import javax.annotation.Nullable;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/catalog/AbstractCatalog.java b/paimon-core/src/main/java/org/apache/paimon/catalog/AbstractCatalog.java
index 42095c604..beecbe5af 100644
--- a/paimon-core/src/main/java/org/apache/paimon/catalog/AbstractCatalog.java
+++ b/paimon-core/src/main/java/org/apache/paimon/catalog/AbstractCatalog.java
@@ -19,9 +19,9 @@
 package org.apache.paimon.catalog;
 
 import org.apache.paimon.annotation.VisibleForTesting;
-import org.apache.paimon.schema.TableSchema;
 import org.apache.paimon.fs.FileIO;
 import org.apache.paimon.fs.Path;
+import org.apache.paimon.schema.TableSchema;
 import org.apache.paimon.table.FileStoreTable;
 import org.apache.paimon.table.FileStoreTableFactory;
 import org.apache.paimon.table.Table;
diff --git a/paimon-core/src/main/java/org/apache/paimon/catalog/FileSystemCatalog.java b/paimon-core/src/main/java/org/apache/paimon/catalog/FileSystemCatalog.java
index 0808a9ac7..f3ef51620 100644
--- a/paimon-core/src/main/java/org/apache/paimon/catalog/FileSystemCatalog.java
+++ b/paimon-core/src/main/java/org/apache/paimon/catalog/FileSystemCatalog.java
@@ -18,13 +18,13 @@
 
 package org.apache.paimon.catalog;
 
+import org.apache.paimon.fs.FileIO;
+import org.apache.paimon.fs.FileStatus;
+import org.apache.paimon.fs.Path;
 import org.apache.paimon.schema.Schema;
 import org.apache.paimon.schema.SchemaChange;
 import org.apache.paimon.schema.SchemaManager;
 import org.apache.paimon.schema.TableSchema;
-import org.apache.paimon.fs.FileIO;
-import org.apache.paimon.fs.FileStatus;
-import org.apache.paimon.fs.Path;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/paimon-core/src/main/java/org/apache/paimon/disk/ChannelReaderInputView.java b/paimon-core/src/main/java/org/apache/paimon/disk/ChannelReaderInputView.java
index bc99ab6cb..5d1abea41 100644
--- a/paimon-core/src/main/java/org/apache/paimon/disk/ChannelReaderInputView.java
+++ b/paimon-core/src/main/java/org/apache/paimon/disk/ChannelReaderInputView.java
@@ -18,9 +18,9 @@
 
 package org.apache.paimon.disk;
 
-import org.apache.paimon.data.AbstractPagedInputView;
 import org.apache.paimon.compression.BlockCompressionFactory;
 import org.apache.paimon.compression.BlockDecompressor;
+import org.apache.paimon.data.AbstractPagedInputView;
 import org.apache.paimon.memory.Buffer;
 import org.apache.paimon.memory.MemorySegment;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/disk/ChannelReaderInputViewIterator.java b/paimon-core/src/main/java/org/apache/paimon/disk/ChannelReaderInputViewIterator.java
index d86909df5..51cca5e94 100644
--- a/paimon-core/src/main/java/org/apache/paimon/disk/ChannelReaderInputViewIterator.java
+++ b/paimon-core/src/main/java/org/apache/paimon/disk/ChannelReaderInputViewIterator.java
@@ -20,8 +20,8 @@ package org.apache.paimon.disk;
 
 import org.apache.paimon.data.BinaryRow;
 import org.apache.paimon.data.serializer.BinaryRowSerializer;
-import org.apache.paimon.file.utils.MutableObjectIterator;
 import org.apache.paimon.memory.MemorySegment;
+import org.apache.paimon.utils.MutableObjectIterator;
 
 import java.io.EOFException;
 import java.io.IOException;
diff --git a/paimon-core/src/main/java/org/apache/paimon/disk/ChannelWriterOutputView.java b/paimon-core/src/main/java/org/apache/paimon/disk/ChannelWriterOutputView.java
index 7883b1d2a..f157e03ab 100644
--- a/paimon-core/src/main/java/org/apache/paimon/disk/ChannelWriterOutputView.java
+++ b/paimon-core/src/main/java/org/apache/paimon/disk/ChannelWriterOutputView.java
@@ -18,9 +18,9 @@
 
 package org.apache.paimon.disk;
 
-import org.apache.paimon.data.AbstractPagedOutputView;
 import org.apache.paimon.compression.BlockCompressionFactory;
 import org.apache.paimon.compression.BlockCompressor;
+import org.apache.paimon.data.AbstractPagedOutputView;
 import org.apache.paimon.memory.Buffer;
 import org.apache.paimon.memory.MemorySegment;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/utils/ThreadUtils.java b/paimon-core/src/main/java/org/apache/paimon/file/utils/ThreadUtils.java
deleted file mode 100644
index 4db461ef5..000000000
--- a/paimon-core/src/main/java/org/apache/paimon/file/utils/ThreadUtils.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.paimon.file.utils;
-
-import org.slf4j.Logger;
-
-import java.lang.management.ManagementFactory;
-import java.lang.management.ThreadInfo;
-import java.util.Arrays;
-import java.util.stream.Collectors;
-
-/** {@code ThreadUtils} collects helper methods in the context of threading. */
-public class ThreadUtils {
-
-    public static void errorLogThreadDump(Logger logger) {
-        final ThreadInfo[] perThreadInfo =
-                ManagementFactory.getThreadMXBean().dumpAllThreads(true, true);
-        logger.error(
-                "Thread dump: \n{}",
-                Arrays.stream(perThreadInfo).map(Object::toString).collect(Collectors.joining()));
-    }
-}
diff --git a/paimon-core/src/main/java/org/apache/paimon/io/AbstractFileRecordIterator.java b/paimon-core/src/main/java/org/apache/paimon/io/AbstractFileRecordIterator.java
index 68f63be5a..d9a91322b 100644
--- a/paimon-core/src/main/java/org/apache/paimon/io/AbstractFileRecordIterator.java
+++ b/paimon-core/src/main/java/org/apache/paimon/io/AbstractFileRecordIterator.java
@@ -18,9 +18,9 @@
 
 package org.apache.paimon.io;
 
-import org.apache.paimon.data.InternalRow;
 import org.apache.paimon.casting.CastFieldGetter;
 import org.apache.paimon.casting.CastedRow;
+import org.apache.paimon.data.InternalRow;
 import org.apache.paimon.reader.RecordReader;
 import org.apache.paimon.utils.ProjectedRow;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/io/DataFileMeta.java b/paimon-core/src/main/java/org/apache/paimon/io/DataFileMeta.java
index de0c78c64..39fbfe036 100644
--- a/paimon-core/src/main/java/org/apache/paimon/io/DataFileMeta.java
+++ b/paimon-core/src/main/java/org/apache/paimon/io/DataFileMeta.java
@@ -21,8 +21,8 @@ package org.apache.paimon.io;
 import org.apache.paimon.CoreOptions;
 import org.apache.paimon.data.BinaryRow;
 import org.apache.paimon.data.Timestamp;
-import org.apache.paimon.file.stats.BinaryTableStats;
-import org.apache.paimon.file.stats.FieldStatsArraySerializer;
+import org.apache.paimon.stats.BinaryTableStats;
+import org.apache.paimon.stats.FieldStatsArraySerializer;
 import org.apache.paimon.types.ArrayType;
 import org.apache.paimon.types.BigIntType;
 import org.apache.paimon.types.DataField;
@@ -36,9 +36,9 @@ import java.util.List;
 import java.util.Objects;
 
 import static org.apache.paimon.data.BinaryRow.EMPTY_ROW;
-import static org.apache.paimon.file.utils.SerializationUtils.newBytesType;
-import static org.apache.paimon.file.utils.SerializationUtils.newStringType;
 import static org.apache.paimon.utils.Preconditions.checkArgument;
+import static org.apache.paimon.utils.SerializationUtils.newBytesType;
+import static org.apache.paimon.utils.SerializationUtils.newStringType;
 
 /** Metadata of a data file. */
 public class DataFileMeta {
diff --git a/paimon-core/src/main/java/org/apache/paimon/io/DataFileMetaSerializer.java b/paimon-core/src/main/java/org/apache/paimon/io/DataFileMetaSerializer.java
index 51b9102da..764741763 100644
--- a/paimon-core/src/main/java/org/apache/paimon/io/DataFileMetaSerializer.java
+++ b/paimon-core/src/main/java/org/apache/paimon/io/DataFileMetaSerializer.java
@@ -21,13 +21,13 @@ package org.apache.paimon.io;
 import org.apache.paimon.data.BinaryString;
 import org.apache.paimon.data.GenericRow;
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.file.stats.BinaryTableStats;
-import org.apache.paimon.file.utils.ObjectSerializer;
+import org.apache.paimon.stats.BinaryTableStats;
+import org.apache.paimon.utils.ObjectSerializer;
 
-import static org.apache.paimon.file.utils.SerializationUtils.deserializeBinaryRow;
-import static org.apache.paimon.file.utils.SerializationUtils.serializeBinaryRow;
 import static org.apache.paimon.utils.RowDataUtils.fromStringArrayData;
 import static org.apache.paimon.utils.RowDataUtils.toStringArrayData;
+import static org.apache.paimon.utils.SerializationUtils.deserializeBinaryRow;
+import static org.apache.paimon.utils.SerializationUtils.serializeBinaryRow;
 
 /** Serializer for {@link DataFileMeta}. */
 public class DataFileMetaSerializer extends ObjectSerializer<DataFileMeta> {
diff --git a/paimon-core/src/main/java/org/apache/paimon/io/KeyValueDataFileRecordReader.java b/paimon-core/src/main/java/org/apache/paimon/io/KeyValueDataFileRecordReader.java
index 95dd0c383..8690e3217 100644
--- a/paimon-core/src/main/java/org/apache/paimon/io/KeyValueDataFileRecordReader.java
+++ b/paimon-core/src/main/java/org/apache/paimon/io/KeyValueDataFileRecordReader.java
@@ -18,16 +18,16 @@
 
 package org.apache.paimon.io;
 
-import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.file.KeyValue;
-import org.apache.paimon.file.KeyValueSerializer;
+import org.apache.paimon.KeyValue;
+import org.apache.paimon.KeyValueSerializer;
 import org.apache.paimon.casting.CastFieldGetter;
-import org.apache.paimon.file.utils.FileUtils;
+import org.apache.paimon.data.InternalRow;
 import org.apache.paimon.format.FormatReaderFactory;
 import org.apache.paimon.fs.FileIO;
 import org.apache.paimon.fs.Path;
 import org.apache.paimon.reader.RecordReader;
 import org.apache.paimon.types.RowType;
+import org.apache.paimon.utils.FileUtils;
 
 import javax.annotation.Nullable;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/io/KeyValueDataFileWriter.java b/paimon-core/src/main/java/org/apache/paimon/io/KeyValueDataFileWriter.java
index b2e2e9631..731303b97 100644
--- a/paimon-core/src/main/java/org/apache/paimon/io/KeyValueDataFileWriter.java
+++ b/paimon-core/src/main/java/org/apache/paimon/io/KeyValueDataFileWriter.java
@@ -18,17 +18,17 @@
 
 package org.apache.paimon.io;
 
+import org.apache.paimon.KeyValue;
 import org.apache.paimon.data.BinaryRow;
 import org.apache.paimon.data.InternalRow;
 import org.apache.paimon.data.serializer.InternalRowSerializer;
-import org.apache.paimon.file.KeyValue;
-import org.apache.paimon.file.stats.BinaryTableStats;
-import org.apache.paimon.file.stats.FieldStatsArraySerializer;
 import org.apache.paimon.format.FieldStats;
 import org.apache.paimon.format.FileStatsExtractor;
 import org.apache.paimon.format.FormatWriterFactory;
 import org.apache.paimon.fs.FileIO;
 import org.apache.paimon.fs.Path;
+import org.apache.paimon.stats.BinaryTableStats;
+import org.apache.paimon.stats.FieldStatsArraySerializer;
 import org.apache.paimon.types.RowType;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/paimon-core/src/main/java/org/apache/paimon/io/KeyValueFileReaderFactory.java b/paimon-core/src/main/java/org/apache/paimon/io/KeyValueFileReaderFactory.java
index e516c634d..75de5709d 100644
--- a/paimon-core/src/main/java/org/apache/paimon/io/KeyValueFileReaderFactory.java
+++ b/paimon-core/src/main/java/org/apache/paimon/io/KeyValueFileReaderFactory.java
@@ -18,19 +18,19 @@
 
 package org.apache.paimon.io;
 
+import org.apache.paimon.KeyValue;
 import org.apache.paimon.data.BinaryRow;
-import org.apache.paimon.file.KeyValue;
-import org.apache.paimon.predicate.Predicate;
-import org.apache.paimon.schema.KeyValueFieldsExtractor;
-import org.apache.paimon.schema.SchemaManager;
-import org.apache.paimon.schema.TableSchema;
-import org.apache.paimon.file.utils.BulkFormatMapping;
-import org.apache.paimon.file.utils.FileStorePathFactory;
 import org.apache.paimon.format.FileFormatDiscover;
 import org.apache.paimon.format.FormatKey;
 import org.apache.paimon.fs.FileIO;
+import org.apache.paimon.predicate.Predicate;
 import org.apache.paimon.reader.RecordReader;
+import org.apache.paimon.schema.KeyValueFieldsExtractor;
+import org.apache.paimon.schema.SchemaManager;
+import org.apache.paimon.schema.TableSchema;
 import org.apache.paimon.types.RowType;
+import org.apache.paimon.utils.BulkFormatMapping;
+import org.apache.paimon.utils.FileStorePathFactory;
 import org.apache.paimon.utils.Projection;
 
 import javax.annotation.Nullable;
diff --git a/paimon-core/src/main/java/org/apache/paimon/io/KeyValueFileWriterFactory.java b/paimon-core/src/main/java/org/apache/paimon/io/KeyValueFileWriterFactory.java
index b7dcbd813..c0bd2f0f9 100644
--- a/paimon-core/src/main/java/org/apache/paimon/io/KeyValueFileWriterFactory.java
+++ b/paimon-core/src/main/java/org/apache/paimon/io/KeyValueFileWriterFactory.java
@@ -18,17 +18,17 @@
 
 package org.apache.paimon.io;
 
+import org.apache.paimon.KeyValue;
+import org.apache.paimon.KeyValueSerializer;
 import org.apache.paimon.annotation.VisibleForTesting;
 import org.apache.paimon.data.BinaryRow;
-import org.apache.paimon.file.KeyValue;
-import org.apache.paimon.file.KeyValueSerializer;
-import org.apache.paimon.file.utils.FileStorePathFactory;
 import org.apache.paimon.format.FileFormat;
 import org.apache.paimon.format.FileStatsExtractor;
 import org.apache.paimon.format.FormatWriterFactory;
 import org.apache.paimon.fs.FileIO;
 import org.apache.paimon.fs.Path;
 import org.apache.paimon.types.RowType;
+import org.apache.paimon.utils.FileStorePathFactory;
 
 import javax.annotation.Nullable;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/io/RowDataFileRecordReader.java b/paimon-core/src/main/java/org/apache/paimon/io/RowDataFileRecordReader.java
index 11c3118ab..d3e8bb16c 100644
--- a/paimon-core/src/main/java/org/apache/paimon/io/RowDataFileRecordReader.java
+++ b/paimon-core/src/main/java/org/apache/paimon/io/RowDataFileRecordReader.java
@@ -18,13 +18,13 @@
 
 package org.apache.paimon.io;
 
-import org.apache.paimon.data.InternalRow;
 import org.apache.paimon.casting.CastFieldGetter;
-import org.apache.paimon.file.utils.FileUtils;
+import org.apache.paimon.data.InternalRow;
 import org.apache.paimon.format.FormatReaderFactory;
 import org.apache.paimon.fs.FileIO;
 import org.apache.paimon.fs.Path;
 import org.apache.paimon.reader.RecordReader;
+import org.apache.paimon.utils.FileUtils;
 
 import javax.annotation.Nullable;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/io/RowDataFileWriter.java b/paimon-core/src/main/java/org/apache/paimon/io/RowDataFileWriter.java
index da9fea7a6..22afd08a6 100644
--- a/paimon-core/src/main/java/org/apache/paimon/io/RowDataFileWriter.java
+++ b/paimon-core/src/main/java/org/apache/paimon/io/RowDataFileWriter.java
@@ -20,12 +20,12 @@
 package org.apache.paimon.io;
 
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.file.stats.BinaryTableStats;
-import org.apache.paimon.file.stats.FieldStatsArraySerializer;
 import org.apache.paimon.format.FileStatsExtractor;
 import org.apache.paimon.format.FormatWriterFactory;
 import org.apache.paimon.fs.FileIO;
 import org.apache.paimon.fs.Path;
+import org.apache.paimon.stats.BinaryTableStats;
+import org.apache.paimon.stats.FieldStatsArraySerializer;
 import org.apache.paimon.types.RowType;
 import org.apache.paimon.utils.LongCounter;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/manifest/ManifestEntry.java b/paimon-core/src/main/java/org/apache/paimon/manifest/ManifestEntry.java
index a503d0cab..84af10819 100644
--- a/paimon-core/src/main/java/org/apache/paimon/manifest/ManifestEntry.java
+++ b/paimon-core/src/main/java/org/apache/paimon/manifest/ManifestEntry.java
@@ -20,11 +20,11 @@ package org.apache.paimon.manifest;
 
 import org.apache.paimon.data.BinaryRow;
 import org.apache.paimon.io.DataFileMeta;
-import org.apache.paimon.file.utils.FileStorePathFactory;
 import org.apache.paimon.types.DataField;
 import org.apache.paimon.types.IntType;
 import org.apache.paimon.types.RowType;
 import org.apache.paimon.types.TinyIntType;
+import org.apache.paimon.utils.FileStorePathFactory;
 import org.apache.paimon.utils.Preconditions;
 
 import java.util.ArrayList;
@@ -34,7 +34,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Objects;
 
-import static org.apache.paimon.file.utils.SerializationUtils.newBytesType;
+import static org.apache.paimon.utils.SerializationUtils.newBytesType;
 
 /** Entry of a manifest file, representing an addition / deletion of a data file. */
 public class ManifestEntry {
diff --git a/paimon-core/src/main/java/org/apache/paimon/manifest/ManifestEntrySerializer.java b/paimon-core/src/main/java/org/apache/paimon/manifest/ManifestEntrySerializer.java
index 316208ecd..ad398e2ac 100644
--- a/paimon-core/src/main/java/org/apache/paimon/manifest/ManifestEntrySerializer.java
+++ b/paimon-core/src/main/java/org/apache/paimon/manifest/ManifestEntrySerializer.java
@@ -21,10 +21,10 @@ package org.apache.paimon.manifest;
 import org.apache.paimon.data.GenericRow;
 import org.apache.paimon.data.InternalRow;
 import org.apache.paimon.io.DataFileMetaSerializer;
-import org.apache.paimon.file.utils.VersionedObjectSerializer;
+import org.apache.paimon.utils.VersionedObjectSerializer;
 
-import static org.apache.paimon.file.utils.SerializationUtils.deserializeBinaryRow;
-import static org.apache.paimon.file.utils.SerializationUtils.serializeBinaryRow;
+import static org.apache.paimon.utils.SerializationUtils.deserializeBinaryRow;
+import static org.apache.paimon.utils.SerializationUtils.serializeBinaryRow;
 
 /** Serializer for {@link ManifestEntry}. */
 public class ManifestEntrySerializer extends VersionedObjectSerializer<ManifestEntry> {
diff --git a/paimon-core/src/main/java/org/apache/paimon/manifest/ManifestFile.java b/paimon-core/src/main/java/org/apache/paimon/manifest/ManifestFile.java
index 3405b27e8..3f136da45 100644
--- a/paimon-core/src/main/java/org/apache/paimon/manifest/ManifestFile.java
+++ b/paimon-core/src/main/java/org/apache/paimon/manifest/ManifestFile.java
@@ -19,20 +19,20 @@
 package org.apache.paimon.manifest;
 
 import org.apache.paimon.annotation.VisibleForTesting;
-import org.apache.paimon.io.RollingFileWriter;
-import org.apache.paimon.io.SingleFileWriter;
-import org.apache.paimon.schema.SchemaManager;
-import org.apache.paimon.file.stats.FieldStatsArraySerializer;
-import org.apache.paimon.file.utils.FileStorePathFactory;
-import org.apache.paimon.file.utils.FileUtils;
-import org.apache.paimon.file.utils.VersionedObjectSerializer;
 import org.apache.paimon.format.FieldStatsCollector;
 import org.apache.paimon.format.FileFormat;
 import org.apache.paimon.format.FormatReaderFactory;
 import org.apache.paimon.format.FormatWriterFactory;
 import org.apache.paimon.fs.FileIO;
 import org.apache.paimon.fs.Path;
+import org.apache.paimon.io.RollingFileWriter;
+import org.apache.paimon.io.SingleFileWriter;
+import org.apache.paimon.schema.SchemaManager;
+import org.apache.paimon.stats.FieldStatsArraySerializer;
 import org.apache.paimon.types.RowType;
+import org.apache.paimon.utils.FileStorePathFactory;
+import org.apache.paimon.utils.FileUtils;
+import org.apache.paimon.utils.VersionedObjectSerializer;
 
 import java.io.IOException;
 import java.util.List;
diff --git a/paimon-core/src/main/java/org/apache/paimon/manifest/ManifestFileMeta.java b/paimon-core/src/main/java/org/apache/paimon/manifest/ManifestFileMeta.java
index eee3f37b9..b9d638b5b 100644
--- a/paimon-core/src/main/java/org/apache/paimon/manifest/ManifestFileMeta.java
+++ b/paimon-core/src/main/java/org/apache/paimon/manifest/ManifestFileMeta.java
@@ -18,8 +18,8 @@
 
 package org.apache.paimon.manifest;
 
-import org.apache.paimon.file.stats.BinaryTableStats;
-import org.apache.paimon.file.stats.FieldStatsArraySerializer;
+import org.apache.paimon.stats.BinaryTableStats;
+import org.apache.paimon.stats.FieldStatsArraySerializer;
 import org.apache.paimon.types.BigIntType;
 import org.apache.paimon.types.DataField;
 import org.apache.paimon.types.RowType;
diff --git a/paimon-core/src/main/java/org/apache/paimon/manifest/ManifestFileMetaSerializer.java b/paimon-core/src/main/java/org/apache/paimon/manifest/ManifestFileMetaSerializer.java
index 2de80fbe3..bba5803a1 100644
--- a/paimon-core/src/main/java/org/apache/paimon/manifest/ManifestFileMetaSerializer.java
+++ b/paimon-core/src/main/java/org/apache/paimon/manifest/ManifestFileMetaSerializer.java
@@ -21,8 +21,8 @@ package org.apache.paimon.manifest;
 import org.apache.paimon.data.BinaryString;
 import org.apache.paimon.data.GenericRow;
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.file.stats.BinaryTableStats;
-import org.apache.paimon.file.utils.VersionedObjectSerializer;
+import org.apache.paimon.stats.BinaryTableStats;
+import org.apache.paimon.utils.VersionedObjectSerializer;
 
 /** Serializer for {@link ManifestFileMeta}. */
 public class ManifestFileMetaSerializer extends VersionedObjectSerializer<ManifestFileMeta> {
diff --git a/paimon-core/src/main/java/org/apache/paimon/manifest/ManifestList.java b/paimon-core/src/main/java/org/apache/paimon/manifest/ManifestList.java
index 2dd41a3a8..c95718da0 100644
--- a/paimon-core/src/main/java/org/apache/paimon/manifest/ManifestList.java
+++ b/paimon-core/src/main/java/org/apache/paimon/manifest/ManifestList.java
@@ -18,9 +18,6 @@
 
 package org.apache.paimon.manifest;
 
-import org.apache.paimon.file.utils.FileStorePathFactory;
-import org.apache.paimon.file.utils.FileUtils;
-import org.apache.paimon.file.utils.VersionedObjectSerializer;
 import org.apache.paimon.format.FileFormat;
 import org.apache.paimon.format.FormatReaderFactory;
 import org.apache.paimon.format.FormatWriter;
@@ -29,6 +26,9 @@ import org.apache.paimon.fs.FileIO;
 import org.apache.paimon.fs.Path;
 import org.apache.paimon.fs.PositionOutputStream;
 import org.apache.paimon.types.RowType;
+import org.apache.paimon.utils.FileStorePathFactory;
+import org.apache.paimon.utils.FileUtils;
+import org.apache.paimon.utils.VersionedObjectSerializer;
 
 import java.io.IOException;
 import java.util.List;
diff --git a/paimon-core/src/main/java/org/apache/paimon/memory/Buffer.java b/paimon-core/src/main/java/org/apache/paimon/memory/Buffer.java
index c22d2339e..0bd395dbd 100644
--- a/paimon-core/src/main/java/org/apache/paimon/memory/Buffer.java
+++ b/paimon-core/src/main/java/org/apache/paimon/memory/Buffer.java
@@ -20,7 +20,6 @@ package org.apache.paimon.memory;
 
 import org.apache.paimon.annotation.Experimental;
 
-
 import java.nio.ByteBuffer;
 
 /**
diff --git a/paimon-core/src/main/java/org/apache/paimon/mergetree/DropDeleteReader.java b/paimon-core/src/main/java/org/apache/paimon/mergetree/DropDeleteReader.java
index 27f69e587..7bb50d177 100644
--- a/paimon-core/src/main/java/org/apache/paimon/mergetree/DropDeleteReader.java
+++ b/paimon-core/src/main/java/org/apache/paimon/mergetree/DropDeleteReader.java
@@ -18,7 +18,7 @@
 
 package org.apache.paimon.mergetree;
 
-import org.apache.paimon.file.KeyValue;
+import org.apache.paimon.KeyValue;
 import org.apache.paimon.reader.RecordReader;
 import org.apache.paimon.types.RowKind;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/mergetree/LookupLevels.java b/paimon-core/src/main/java/org/apache/paimon/mergetree/LookupLevels.java
index 6d4f7e40c..d1db060d8 100644
--- a/paimon-core/src/main/java/org/apache/paimon/mergetree/LookupLevels.java
+++ b/paimon-core/src/main/java/org/apache/paimon/mergetree/LookupLevels.java
@@ -22,10 +22,10 @@ import org.apache.flink.shaded.guava30.com.google.common.cache.Cache;
 import org.apache.flink.shaded.guava30.com.google.common.cache.CacheBuilder;
 import org.apache.flink.shaded.guava30.com.google.common.cache.RemovalNotification;
 
+import org.apache.paimon.KeyValue;
 import org.apache.paimon.annotation.VisibleForTesting;
 import org.apache.paimon.data.InternalRow;
 import org.apache.paimon.data.serializer.RowCompactedSerializer;
-import org.apache.paimon.file.KeyValue;
 import org.apache.paimon.io.DataFileMeta;
 import org.apache.paimon.io.DataOutputSerializer;
 import org.apache.paimon.lookup.LookupStoreFactory;
diff --git a/paimon-core/src/main/java/org/apache/paimon/mergetree/MergeTreeReaders.java b/paimon-core/src/main/java/org/apache/paimon/mergetree/MergeTreeReaders.java
index c46d556b6..d77ffaf56 100644
--- a/paimon-core/src/main/java/org/apache/paimon/mergetree/MergeTreeReaders.java
+++ b/paimon-core/src/main/java/org/apache/paimon/mergetree/MergeTreeReaders.java
@@ -18,8 +18,8 @@
 
 package org.apache.paimon.mergetree;
 
+import org.apache.paimon.KeyValue;
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.file.KeyValue;
 import org.apache.paimon.io.DataFileMeta;
 import org.apache.paimon.io.KeyValueFileReaderFactory;
 import org.apache.paimon.mergetree.compact.ConcatRecordReader;
diff --git a/paimon-core/src/main/java/org/apache/paimon/mergetree/MergeTreeWriter.java b/paimon-core/src/main/java/org/apache/paimon/mergetree/MergeTreeWriter.java
index 51a9da81e..085d83bec 100644
--- a/paimon-core/src/main/java/org/apache/paimon/mergetree/MergeTreeWriter.java
+++ b/paimon-core/src/main/java/org/apache/paimon/mergetree/MergeTreeWriter.java
@@ -19,11 +19,11 @@
 package org.apache.paimon.mergetree;
 
 import org.apache.paimon.CoreOptions.ChangelogProducer;
+import org.apache.paimon.KeyValue;
 import org.apache.paimon.annotation.VisibleForTesting;
-import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.file.KeyValue;
 import org.apache.paimon.compact.CompactManager;
 import org.apache.paimon.compact.CompactResult;
+import org.apache.paimon.data.InternalRow;
 import org.apache.paimon.disk.IOManager;
 import org.apache.paimon.io.CompactIncrement;
 import org.apache.paimon.io.DataFileMeta;
@@ -33,9 +33,9 @@ import org.apache.paimon.io.RollingFileWriter;
 import org.apache.paimon.memory.MemoryOwner;
 import org.apache.paimon.memory.MemorySegmentPool;
 import org.apache.paimon.mergetree.compact.MergeFunction;
-import org.apache.paimon.file.utils.CommitIncrement;
-import org.apache.paimon.file.utils.RecordWriter;
 import org.apache.paimon.types.RowType;
+import org.apache.paimon.utils.CommitIncrement;
+import org.apache.paimon.utils.RecordWriter;
 
 import javax.annotation.Nullable;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/mergetree/SortBufferWriteBuffer.java b/paimon-core/src/main/java/org/apache/paimon/mergetree/SortBufferWriteBuffer.java
index 7ca7fa426..8ff9d536c 100644
--- a/paimon-core/src/main/java/org/apache/paimon/mergetree/SortBufferWriteBuffer.java
+++ b/paimon-core/src/main/java/org/apache/paimon/mergetree/SortBufferWriteBuffer.java
@@ -18,6 +18,8 @@
 
 package org.apache.paimon.mergetree;
 
+import org.apache.paimon.KeyValue;
+import org.apache.paimon.KeyValueSerializer;
 import org.apache.paimon.annotation.VisibleForTesting;
 import org.apache.paimon.codegen.CodeGenUtils;
 import org.apache.paimon.codegen.NormalizedKeyComputer;
@@ -27,20 +29,18 @@ import org.apache.paimon.data.InternalRow;
 import org.apache.paimon.data.serializer.BinaryRowSerializer;
 import org.apache.paimon.data.serializer.InternalRowSerializer;
 import org.apache.paimon.data.serializer.InternalSerializers;
-import org.apache.paimon.file.KeyValue;
-import org.apache.paimon.file.KeyValueSerializer;
 import org.apache.paimon.disk.IOManager;
 import org.apache.paimon.memory.MemorySegmentPool;
 import org.apache.paimon.mergetree.compact.MergeFunction;
 import org.apache.paimon.mergetree.compact.ReducerMergeFunctionWrapper;
-import org.apache.paimon.file.sort.BinaryExternalSortBuffer;
-import org.apache.paimon.file.sort.BinaryInMemorySortBuffer;
-import org.apache.paimon.file.sort.SortBuffer;
-import org.apache.paimon.file.utils.MutableObjectIterator;
+import org.apache.paimon.sort.BinaryExternalSortBuffer;
+import org.apache.paimon.sort.BinaryInMemorySortBuffer;
+import org.apache.paimon.sort.SortBuffer;
 import org.apache.paimon.types.BigIntType;
 import org.apache.paimon.types.DataType;
 import org.apache.paimon.types.RowKind;
 import org.apache.paimon.types.RowType;
+import org.apache.paimon.utils.MutableObjectIterator;
 
 import javax.annotation.Nullable;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/mergetree/WriteBuffer.java b/paimon-core/src/main/java/org/apache/paimon/mergetree/WriteBuffer.java
index 283fddd70..9b2749fb7 100644
--- a/paimon-core/src/main/java/org/apache/paimon/mergetree/WriteBuffer.java
+++ b/paimon-core/src/main/java/org/apache/paimon/mergetree/WriteBuffer.java
@@ -18,8 +18,8 @@
 
 package org.apache.paimon.mergetree;
 
+import org.apache.paimon.KeyValue;
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.file.KeyValue;
 import org.apache.paimon.mergetree.compact.MergeFunction;
 import org.apache.paimon.types.RowKind;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/ChangelogMergeTreeRewriter.java b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/ChangelogMergeTreeRewriter.java
index e0b802632..be3a79358 100644
--- a/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/ChangelogMergeTreeRewriter.java
+++ b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/ChangelogMergeTreeRewriter.java
@@ -18,9 +18,9 @@
 
 package org.apache.paimon.mergetree.compact;
 
-import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.file.KeyValue;
+import org.apache.paimon.KeyValue;
 import org.apache.paimon.compact.CompactResult;
+import org.apache.paimon.data.InternalRow;
 import org.apache.paimon.io.DataFileMeta;
 import org.apache.paimon.io.KeyValueFileReaderFactory;
 import org.apache.paimon.io.KeyValueFileWriterFactory;
diff --git a/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/ChangelogResult.java b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/ChangelogResult.java
index 0fd4f0eae..55c574525 100644
--- a/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/ChangelogResult.java
+++ b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/ChangelogResult.java
@@ -18,7 +18,7 @@
 
 package org.apache.paimon.mergetree.compact;
 
-import org.apache.paimon.file.KeyValue;
+import org.apache.paimon.KeyValue;
 import org.apache.paimon.types.RowKind;
 
 import javax.annotation.Nullable;
diff --git a/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/DeduplicateMergeFunction.java b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/DeduplicateMergeFunction.java
index 3efccb91b..e05e2a33c 100644
--- a/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/DeduplicateMergeFunction.java
+++ b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/DeduplicateMergeFunction.java
@@ -18,7 +18,7 @@
 
 package org.apache.paimon.mergetree.compact;
 
-import org.apache.paimon.file.KeyValue;
+import org.apache.paimon.KeyValue;
 
 import javax.annotation.Nullable;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/FullChangelogMergeFunctionWrapper.java b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/FullChangelogMergeFunctionWrapper.java
index 09139ce7b..53214a0af 100644
--- a/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/FullChangelogMergeFunctionWrapper.java
+++ b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/FullChangelogMergeFunctionWrapper.java
@@ -18,7 +18,7 @@
 
 package org.apache.paimon.mergetree.compact;
 
-import org.apache.paimon.file.KeyValue;
+import org.apache.paimon.KeyValue;
 import org.apache.paimon.types.RowKind;
 import org.apache.paimon.utils.Preconditions;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/FullChangelogMergeTreeCompactRewriter.java b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/FullChangelogMergeTreeCompactRewriter.java
index d13ab10b8..207f1c258 100644
--- a/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/FullChangelogMergeTreeCompactRewriter.java
+++ b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/FullChangelogMergeTreeCompactRewriter.java
@@ -18,8 +18,8 @@
 
 package org.apache.paimon.mergetree.compact;
 
+import org.apache.paimon.KeyValue;
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.file.KeyValue;
 import org.apache.paimon.io.DataFileMeta;
 import org.apache.paimon.io.KeyValueFileReaderFactory;
 import org.apache.paimon.io.KeyValueFileWriterFactory;
diff --git a/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/LookupChangelogMergeFunctionWrapper.java b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/LookupChangelogMergeFunctionWrapper.java
index 0aae5fc44..e2ee56346 100644
--- a/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/LookupChangelogMergeFunctionWrapper.java
+++ b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/LookupChangelogMergeFunctionWrapper.java
@@ -18,8 +18,8 @@
 
 package org.apache.paimon.mergetree.compact;
 
+import org.apache.paimon.KeyValue;
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.file.KeyValue;
 import org.apache.paimon.types.RowKind;
 
 import java.util.function.Function;
diff --git a/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/LookupMergeFunction.java b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/LookupMergeFunction.java
index ab46cdabf..254e5cb25 100644
--- a/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/LookupMergeFunction.java
+++ b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/LookupMergeFunction.java
@@ -18,7 +18,7 @@
 
 package org.apache.paimon.mergetree.compact;
 
-import org.apache.paimon.file.KeyValue;
+import org.apache.paimon.KeyValue;
 
 import javax.annotation.Nullable;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/LookupMergeTreeCompactRewriter.java b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/LookupMergeTreeCompactRewriter.java
index 6f16767da..c83f0ca4d 100644
--- a/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/LookupMergeTreeCompactRewriter.java
+++ b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/LookupMergeTreeCompactRewriter.java
@@ -18,8 +18,8 @@
 
 package org.apache.paimon.mergetree.compact;
 
+import org.apache.paimon.KeyValue;
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.file.KeyValue;
 import org.apache.paimon.io.DataFileMeta;
 import org.apache.paimon.io.KeyValueFileReaderFactory;
 import org.apache.paimon.io.KeyValueFileWriterFactory;
diff --git a/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/MergeFunction.java b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/MergeFunction.java
index 5e73bb65d..a5aa32851 100644
--- a/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/MergeFunction.java
+++ b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/MergeFunction.java
@@ -18,7 +18,7 @@
 
 package org.apache.paimon.mergetree.compact;
 
-import org.apache.paimon.file.KeyValue;
+import org.apache.paimon.KeyValue;
 
 import javax.annotation.Nullable;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/MergeFunctionWrapper.java b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/MergeFunctionWrapper.java
index 34b2fe688..26fdfe85d 100644
--- a/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/MergeFunctionWrapper.java
+++ b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/MergeFunctionWrapper.java
@@ -18,7 +18,7 @@
 
 package org.apache.paimon.mergetree.compact;
 
-import org.apache.paimon.file.KeyValue;
+import org.apache.paimon.KeyValue;
 
 import javax.annotation.Nullable;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/MergeTreeCompactManager.java b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/MergeTreeCompactManager.java
index f9ff47de6..06fde6d6b 100644
--- a/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/MergeTreeCompactManager.java
+++ b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/MergeTreeCompactManager.java
@@ -18,11 +18,12 @@
 
 package org.apache.paimon.mergetree.compact;
 
+import org.apache.paimon.KeyValueFileStore;
 import org.apache.paimon.annotation.VisibleForTesting;
-import org.apache.paimon.data.InternalRow;
 import org.apache.paimon.compact.CompactFutureManager;
 import org.apache.paimon.compact.CompactResult;
 import org.apache.paimon.compact.CompactUnit;
+import org.apache.paimon.data.InternalRow;
 import org.apache.paimon.io.DataFileMeta;
 import org.apache.paimon.mergetree.LevelSortedRun;
 import org.apache.paimon.mergetree.Levels;
@@ -38,7 +39,7 @@ import java.util.concurrent.ExecutionException;
 import java.util.concurrent.ExecutorService;
 import java.util.stream.Collectors;
 
-/** Compact manager for {@link org.apache.paimon.file.KeyValueFileStore}. */
+/** Compact manager for {@link KeyValueFileStore}. */
 public class MergeTreeCompactManager extends CompactFutureManager {
 
     private static final Logger LOG = LoggerFactory.getLogger(MergeTreeCompactManager.class);
diff --git a/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/MergeTreeCompactRewriter.java b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/MergeTreeCompactRewriter.java
index 23dcbb1b6..4adc1ce03 100644
--- a/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/MergeTreeCompactRewriter.java
+++ b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/MergeTreeCompactRewriter.java
@@ -18,9 +18,9 @@
 
 package org.apache.paimon.mergetree.compact;
 
-import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.file.KeyValue;
+import org.apache.paimon.KeyValue;
 import org.apache.paimon.compact.CompactResult;
+import org.apache.paimon.data.InternalRow;
 import org.apache.paimon.io.DataFileMeta;
 import org.apache.paimon.io.KeyValueFileReaderFactory;
 import org.apache.paimon.io.KeyValueFileWriterFactory;
diff --git a/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/MergeTreeCompactTask.java b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/MergeTreeCompactTask.java
index 2f32250e1..c08398f2a 100644
--- a/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/MergeTreeCompactTask.java
+++ b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/MergeTreeCompactTask.java
@@ -18,10 +18,10 @@
 
 package org.apache.paimon.mergetree.compact;
 
-import org.apache.paimon.data.InternalRow;
 import org.apache.paimon.compact.CompactResult;
 import org.apache.paimon.compact.CompactTask;
 import org.apache.paimon.compact.CompactUnit;
+import org.apache.paimon.data.InternalRow;
 import org.apache.paimon.io.DataFileMeta;
 import org.apache.paimon.mergetree.SortedRun;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/PartialUpdateMergeFunction.java b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/PartialUpdateMergeFunction.java
index 107c19c7d..fe15d3e1c 100644
--- a/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/PartialUpdateMergeFunction.java
+++ b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/PartialUpdateMergeFunction.java
@@ -18,9 +18,9 @@
 
 package org.apache.paimon.mergetree.compact;
 
+import org.apache.paimon.KeyValue;
 import org.apache.paimon.data.GenericRow;
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.file.KeyValue;
 import org.apache.paimon.types.DataType;
 import org.apache.paimon.types.RowKind;
 import org.apache.paimon.utils.Projection;
diff --git a/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/ReducerMergeFunctionWrapper.java b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/ReducerMergeFunctionWrapper.java
index dfbf7b972..40c0732b0 100644
--- a/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/ReducerMergeFunctionWrapper.java
+++ b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/ReducerMergeFunctionWrapper.java
@@ -18,7 +18,7 @@
 
 package org.apache.paimon.mergetree.compact;
 
-import org.apache.paimon.file.KeyValue;
+import org.apache.paimon.KeyValue;
 
 /**
  * Wrapper for {@link MergeFunction}s which works like a reducer.
diff --git a/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/SortMergeReader.java b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/SortMergeReader.java
index 878446908..897f8d83a 100644
--- a/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/SortMergeReader.java
+++ b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/SortMergeReader.java
@@ -18,8 +18,8 @@
 
 package org.apache.paimon.mergetree.compact;
 
+import org.apache.paimon.KeyValue;
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.file.KeyValue;
 import org.apache.paimon.reader.RecordReader;
 import org.apache.paimon.utils.Preconditions;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/ValueCountMergeFunction.java b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/ValueCountMergeFunction.java
index 6ae480176..f675be665 100644
--- a/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/ValueCountMergeFunction.java
+++ b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/ValueCountMergeFunction.java
@@ -18,9 +18,9 @@
 
 package org.apache.paimon.mergetree.compact;
 
+import org.apache.paimon.KeyValue;
 import org.apache.paimon.data.GenericRow;
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.file.KeyValue;
 import org.apache.paimon.types.RowKind;
 
 import javax.annotation.Nullable;
diff --git a/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/aggregate/AggregateMergeFunction.java b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/aggregate/AggregateMergeFunction.java
index 933fd0ae1..d4fff82ea 100644
--- a/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/aggregate/AggregateMergeFunction.java
+++ b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/aggregate/AggregateMergeFunction.java
@@ -18,9 +18,9 @@
 
 package org.apache.paimon.mergetree.compact.aggregate;
 
+import org.apache.paimon.KeyValue;
 import org.apache.paimon.data.GenericRow;
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.file.KeyValue;
 import org.apache.paimon.mergetree.compact.MergeFunction;
 import org.apache.paimon.mergetree.compact.MergeFunctionFactory;
 import org.apache.paimon.options.Options;
diff --git a/paimon-core/src/main/java/org/apache/paimon/operation/AbstractFileStoreScan.java b/paimon-core/src/main/java/org/apache/paimon/operation/AbstractFileStoreScan.java
index d9a8b88a1..31deda6f3 100644
--- a/paimon-core/src/main/java/org/apache/paimon/operation/AbstractFileStoreScan.java
+++ b/paimon-core/src/main/java/org/apache/paimon/operation/AbstractFileStoreScan.java
@@ -18,8 +18,8 @@
 
 package org.apache.paimon.operation;
 
+import org.apache.paimon.Snapshot;
 import org.apache.paimon.data.BinaryRow;
-import org.apache.paimon.file.Snapshot;
 import org.apache.paimon.manifest.ManifestEntry;
 import org.apache.paimon.manifest.ManifestFile;
 import org.apache.paimon.manifest.ManifestFileMeta;
@@ -29,14 +29,14 @@ import org.apache.paimon.predicate.Predicate;
 import org.apache.paimon.predicate.PredicateBuilder;
 import org.apache.paimon.schema.SchemaManager;
 import org.apache.paimon.schema.TableSchema;
-import org.apache.paimon.file.stats.FieldStatsArraySerializer;
-import org.apache.paimon.file.utils.FileStorePathFactory;
-import org.apache.paimon.file.utils.FileUtils;
-import org.apache.paimon.file.utils.SnapshotManager;
+import org.apache.paimon.stats.FieldStatsArraySerializer;
 import org.apache.paimon.types.RowType;
+import org.apache.paimon.utils.FileStorePathFactory;
+import org.apache.paimon.utils.FileUtils;
 import org.apache.paimon.utils.Filter;
 import org.apache.paimon.utils.Preconditions;
 import org.apache.paimon.utils.RowDataToObjectArrayConverter;
+import org.apache.paimon.utils.SnapshotManager;
 
 import javax.annotation.Nullable;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/operation/AbstractFileStoreWrite.java b/paimon-core/src/main/java/org/apache/paimon/operation/AbstractFileStoreWrite.java
index 9c671be0b..de4d31d48 100644
--- a/paimon-core/src/main/java/org/apache/paimon/operation/AbstractFileStoreWrite.java
+++ b/paimon-core/src/main/java/org/apache/paimon/operation/AbstractFileStoreWrite.java
@@ -18,19 +18,19 @@
 
 package org.apache.paimon.operation;
 
+import org.apache.paimon.Snapshot;
 import org.apache.paimon.annotation.VisibleForTesting;
 import org.apache.paimon.data.BinaryRow;
-import org.apache.paimon.file.Snapshot;
 import org.apache.paimon.disk.IOManager;
 import org.apache.paimon.io.DataFileMeta;
 import org.apache.paimon.manifest.ManifestEntry;
-import org.apache.paimon.file.utils.CommitIncrement;
-import org.apache.paimon.file.utils.ExecutorThreadFactory;
-import org.apache.paimon.file.utils.RecordWriter;
-import org.apache.paimon.file.utils.Restorable;
-import org.apache.paimon.file.utils.SnapshotManager;
 import org.apache.paimon.table.sink.CommitMessage;
 import org.apache.paimon.table.sink.CommitMessageImpl;
+import org.apache.paimon.utils.CommitIncrement;
+import org.apache.paimon.utils.ExecutorThreadFactory;
+import org.apache.paimon.utils.RecordWriter;
+import org.apache.paimon.utils.Restorable;
+import org.apache.paimon.utils.SnapshotManager;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/operation/AppendOnlyFileStoreRead.java b/paimon-core/src/main/java/org/apache/paimon/operation/AppendOnlyFileStoreRead.java
index e94140e72..6bcfc27fd 100644
--- a/paimon-core/src/main/java/org/apache/paimon/operation/AppendOnlyFileStoreRead.java
+++ b/paimon-core/src/main/java/org/apache/paimon/operation/AppendOnlyFileStoreRead.java
@@ -18,24 +18,25 @@
 
 package org.apache.paimon.operation;
 
+import org.apache.paimon.AppendOnlyFileStore;
 import org.apache.paimon.data.InternalRow;
+import org.apache.paimon.format.FileFormatDiscover;
+import org.apache.paimon.format.FormatKey;
+import org.apache.paimon.fs.FileIO;
 import org.apache.paimon.io.DataFileMeta;
 import org.apache.paimon.io.DataFilePathFactory;
 import org.apache.paimon.io.RowDataFileRecordReader;
 import org.apache.paimon.mergetree.compact.ConcatRecordReader;
 import org.apache.paimon.predicate.Predicate;
+import org.apache.paimon.reader.RecordReader;
 import org.apache.paimon.schema.IndexCastMapping;
 import org.apache.paimon.schema.SchemaEvolutionUtil;
 import org.apache.paimon.schema.SchemaManager;
 import org.apache.paimon.schema.TableSchema;
-import org.apache.paimon.file.utils.BulkFormatMapping;
-import org.apache.paimon.file.utils.FileStorePathFactory;
-import org.apache.paimon.format.FileFormatDiscover;
-import org.apache.paimon.format.FormatKey;
-import org.apache.paimon.fs.FileIO;
-import org.apache.paimon.reader.RecordReader;
 import org.apache.paimon.table.source.DataSplit;
 import org.apache.paimon.types.RowType;
+import org.apache.paimon.utils.BulkFormatMapping;
+import org.apache.paimon.utils.FileStorePathFactory;
 import org.apache.paimon.utils.Projection;
 
 import javax.annotation.Nullable;
@@ -48,7 +49,7 @@ import java.util.Map;
 
 import static org.apache.paimon.predicate.PredicateBuilder.splitAnd;
 
-/** {@link FileStoreRead} for {@link org.apache.paimon.file.AppendOnlyFileStore}. */
+/** {@link FileStoreRead} for {@link AppendOnlyFileStore}. */
 public class AppendOnlyFileStoreRead implements FileStoreRead<InternalRow> {
 
     private final FileIO fileIO;
diff --git a/paimon-core/src/main/java/org/apache/paimon/operation/AppendOnlyFileStoreScan.java b/paimon-core/src/main/java/org/apache/paimon/operation/AppendOnlyFileStoreScan.java
index b7408a501..f2382fb5b 100644
--- a/paimon-core/src/main/java/org/apache/paimon/operation/AppendOnlyFileStoreScan.java
+++ b/paimon-core/src/main/java/org/apache/paimon/operation/AppendOnlyFileStoreScan.java
@@ -18,14 +18,15 @@
 
 package org.apache.paimon.operation;
 
+import org.apache.paimon.AppendOnlyFileStore;
 import org.apache.paimon.manifest.ManifestEntry;
 import org.apache.paimon.manifest.ManifestFile;
 import org.apache.paimon.manifest.ManifestList;
 import org.apache.paimon.predicate.Predicate;
 import org.apache.paimon.schema.SchemaManager;
-import org.apache.paimon.file.stats.FieldStatsConverters;
-import org.apache.paimon.file.utils.SnapshotManager;
+import org.apache.paimon.stats.FieldStatsConverters;
 import org.apache.paimon.types.RowType;
+import org.apache.paimon.utils.SnapshotManager;
 
 import java.util.List;
 
@@ -33,7 +34,7 @@ import static org.apache.paimon.predicate.PredicateBuilder.and;
 import static org.apache.paimon.predicate.PredicateBuilder.pickTransformFieldMapping;
 import static org.apache.paimon.predicate.PredicateBuilder.splitAnd;
 
-/** {@link FileStoreScan} for {@link org.apache.paimon.file.AppendOnlyFileStore}. */
+/** {@link FileStoreScan} for {@link AppendOnlyFileStore}. */
 public class AppendOnlyFileStoreScan extends AbstractFileStoreScan {
 
     private final RowType rowType;
diff --git a/paimon-core/src/main/java/org/apache/paimon/operation/AppendOnlyFileStoreWrite.java b/paimon-core/src/main/java/org/apache/paimon/operation/AppendOnlyFileStoreWrite.java
index d800ebd01..8a3a97734 100644
--- a/paimon-core/src/main/java/org/apache/paimon/operation/AppendOnlyFileStoreWrite.java
+++ b/paimon-core/src/main/java/org/apache/paimon/operation/AppendOnlyFileStoreWrite.java
@@ -18,26 +18,27 @@
 
 package org.apache.paimon.operation;
 
+import org.apache.paimon.AppendOnlyFileStore;
 import org.apache.paimon.CoreOptions;
-import org.apache.paimon.data.BinaryRow;
-import org.apache.paimon.data.InternalRow;
 import org.apache.paimon.append.AppendOnlyCompactManager;
 import org.apache.paimon.append.AppendOnlyWriter;
 import org.apache.paimon.compact.CompactManager;
 import org.apache.paimon.compact.NoopCompactManager;
+import org.apache.paimon.data.BinaryRow;
+import org.apache.paimon.data.InternalRow;
+import org.apache.paimon.format.FileFormat;
+import org.apache.paimon.fs.FileIO;
 import org.apache.paimon.io.DataFileMeta;
 import org.apache.paimon.io.DataFilePathFactory;
 import org.apache.paimon.io.RowDataRollingFileWriter;
-import org.apache.paimon.file.utils.CommitIncrement;
-import org.apache.paimon.file.utils.FileStorePathFactory;
-import org.apache.paimon.file.utils.RecordWriter;
-import org.apache.paimon.file.utils.SnapshotManager;
-import org.apache.paimon.format.FileFormat;
-import org.apache.paimon.fs.FileIO;
 import org.apache.paimon.reader.RecordReaderIterator;
 import org.apache.paimon.table.source.DataSplit;
 import org.apache.paimon.types.RowType;
+import org.apache.paimon.utils.CommitIncrement;
+import org.apache.paimon.utils.FileStorePathFactory;
 import org.apache.paimon.utils.LongCounter;
+import org.apache.paimon.utils.RecordWriter;
+import org.apache.paimon.utils.SnapshotManager;
 
 import javax.annotation.Nullable;
 
@@ -48,7 +49,7 @@ import java.util.concurrent.ExecutorService;
 
 import static org.apache.paimon.io.DataFileMeta.getMaxSequenceNumber;
 
-/** {@link FileStoreWrite} for {@link org.apache.paimon.file.AppendOnlyFileStore}. */
+/** {@link FileStoreWrite} for {@link AppendOnlyFileStore}. */
 public class AppendOnlyFileStoreWrite extends AbstractFileStoreWrite<InternalRow> {
 
     private final FileIO fileIO;
diff --git a/paimon-core/src/main/java/org/apache/paimon/operation/FileStoreCommitImpl.java b/paimon-core/src/main/java/org/apache/paimon/operation/FileStoreCommitImpl.java
index 36b900f0f..2ef582cea 100644
--- a/paimon-core/src/main/java/org/apache/paimon/operation/FileStoreCommitImpl.java
+++ b/paimon-core/src/main/java/org/apache/paimon/operation/FileStoreCommitImpl.java
@@ -18,9 +18,11 @@
 
 package org.apache.paimon.operation;
 
+import org.apache.paimon.Snapshot;
 import org.apache.paimon.data.BinaryRow;
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.file.Snapshot;
+import org.apache.paimon.fs.FileIO;
+import org.apache.paimon.fs.Path;
 import org.apache.paimon.io.DataFileMeta;
 import org.apache.paimon.manifest.FileKind;
 import org.apache.paimon.manifest.ManifestCommittable;
@@ -28,18 +30,16 @@ import org.apache.paimon.manifest.ManifestEntry;
 import org.apache.paimon.manifest.ManifestFile;
 import org.apache.paimon.manifest.ManifestFileMeta;
 import org.apache.paimon.manifest.ManifestList;
+import org.apache.paimon.options.MemorySize;
 import org.apache.paimon.predicate.Predicate;
 import org.apache.paimon.predicate.PredicateBuilder;
 import org.apache.paimon.schema.SchemaManager;
-import org.apache.paimon.file.utils.FileStorePathFactory;
-import org.apache.paimon.file.utils.SnapshotManager;
-import org.apache.paimon.fs.FileIO;
-import org.apache.paimon.fs.Path;
-import org.apache.paimon.options.MemorySize;
 import org.apache.paimon.table.sink.CommitMessage;
 import org.apache.paimon.table.sink.CommitMessageImpl;
 import org.apache.paimon.types.RowType;
+import org.apache.paimon.utils.FileStorePathFactory;
 import org.apache.paimon.utils.RowDataToObjectArrayConverter;
+import org.apache.paimon.utils.SnapshotManager;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/operation/FileStoreExpireImpl.java b/paimon-core/src/main/java/org/apache/paimon/operation/FileStoreExpireImpl.java
index e86580d6c..54cfef081 100644
--- a/paimon-core/src/main/java/org/apache/paimon/operation/FileStoreExpireImpl.java
+++ b/paimon-core/src/main/java/org/apache/paimon/operation/FileStoreExpireImpl.java
@@ -20,16 +20,16 @@ package org.apache.paimon.operation;
 
 import org.apache.flink.shaded.guava30.com.google.common.collect.Iterables;
 
+import org.apache.paimon.Snapshot;
 import org.apache.paimon.annotation.VisibleForTesting;
-import org.apache.paimon.file.Snapshot;
+import org.apache.paimon.fs.FileIO;
+import org.apache.paimon.fs.Path;
 import org.apache.paimon.manifest.ManifestEntry;
 import org.apache.paimon.manifest.ManifestFile;
 import org.apache.paimon.manifest.ManifestFileMeta;
 import org.apache.paimon.manifest.ManifestList;
-import org.apache.paimon.file.utils.FileStorePathFactory;
-import org.apache.paimon.file.utils.SnapshotManager;
-import org.apache.paimon.fs.FileIO;
-import org.apache.paimon.fs.Path;
+import org.apache.paimon.utils.FileStorePathFactory;
+import org.apache.paimon.utils.SnapshotManager;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/operation/FileStoreWrite.java b/paimon-core/src/main/java/org/apache/paimon/operation/FileStoreWrite.java
index 94e625729..5f516018d 100644
--- a/paimon-core/src/main/java/org/apache/paimon/operation/FileStoreWrite.java
+++ b/paimon-core/src/main/java/org/apache/paimon/operation/FileStoreWrite.java
@@ -18,13 +18,13 @@
 
 package org.apache.paimon.operation;
 
+import org.apache.paimon.FileStore;
 import org.apache.paimon.data.BinaryRow;
-import org.apache.paimon.file.FileStore;
 import org.apache.paimon.disk.IOManager;
 import org.apache.paimon.io.DataFileMeta;
-import org.apache.paimon.file.utils.RecordWriter;
 import org.apache.paimon.table.sink.CommitMessage;
 import org.apache.paimon.table.sink.SinkRecord;
+import org.apache.paimon.utils.RecordWriter;
 
 import java.util.List;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/operation/KeyValueFileStoreRead.java b/paimon-core/src/main/java/org/apache/paimon/operation/KeyValueFileStoreRead.java
index de9aa5a54..b796b61af 100644
--- a/paimon-core/src/main/java/org/apache/paimon/operation/KeyValueFileStoreRead.java
+++ b/paimon-core/src/main/java/org/apache/paimon/operation/KeyValueFileStoreRead.java
@@ -18,8 +18,11 @@
 
 package org.apache.paimon.operation;
 
+import org.apache.paimon.KeyValue;
+import org.apache.paimon.KeyValueFileStore;
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.file.KeyValue;
+import org.apache.paimon.format.FileFormatDiscover;
+import org.apache.paimon.fs.FileIO;
 import org.apache.paimon.io.DataFileMeta;
 import org.apache.paimon.io.KeyValueFileReaderFactory;
 import org.apache.paimon.mergetree.DropDeleteReader;
@@ -31,15 +34,13 @@ import org.apache.paimon.mergetree.compact.MergeFunctionFactory;
 import org.apache.paimon.mergetree.compact.MergeFunctionWrapper;
 import org.apache.paimon.mergetree.compact.ReducerMergeFunctionWrapper;
 import org.apache.paimon.predicate.Predicate;
+import org.apache.paimon.reader.RecordReader;
 import org.apache.paimon.schema.KeyValueFieldsExtractor;
 import org.apache.paimon.schema.SchemaManager;
 import org.apache.paimon.schema.TableSchema;
-import org.apache.paimon.file.utils.FileStorePathFactory;
-import org.apache.paimon.format.FileFormatDiscover;
-import org.apache.paimon.fs.FileIO;
-import org.apache.paimon.reader.RecordReader;
 import org.apache.paimon.table.source.DataSplit;
 import org.apache.paimon.types.RowType;
+import org.apache.paimon.utils.FileStorePathFactory;
 import org.apache.paimon.utils.ProjectedRow;
 
 import javax.annotation.Nullable;
@@ -56,7 +57,7 @@ import static org.apache.paimon.io.DataFilePathFactory.CHANGELOG_FILE_PREFIX;
 import static org.apache.paimon.predicate.PredicateBuilder.containsFields;
 import static org.apache.paimon.predicate.PredicateBuilder.splitAnd;
 
-/** {@link FileStoreRead} implementation for {@link org.apache.paimon.file.KeyValueFileStore}. */
+/** {@link FileStoreRead} implementation for {@link KeyValueFileStore}. */
 public class KeyValueFileStoreRead implements FileStoreRead<KeyValue> {
 
     private final TableSchema tableSchema;
diff --git a/paimon-core/src/main/java/org/apache/paimon/operation/KeyValueFileStoreScan.java b/paimon-core/src/main/java/org/apache/paimon/operation/KeyValueFileStoreScan.java
index 07a0fd672..7011c74c0 100644
--- a/paimon-core/src/main/java/org/apache/paimon/operation/KeyValueFileStoreScan.java
+++ b/paimon-core/src/main/java/org/apache/paimon/operation/KeyValueFileStoreScan.java
@@ -18,15 +18,16 @@
 
 package org.apache.paimon.operation;
 
+import org.apache.paimon.KeyValueFileStore;
 import org.apache.paimon.manifest.ManifestEntry;
 import org.apache.paimon.manifest.ManifestFile;
 import org.apache.paimon.manifest.ManifestList;
 import org.apache.paimon.predicate.Predicate;
 import org.apache.paimon.schema.KeyValueFieldsExtractor;
 import org.apache.paimon.schema.SchemaManager;
-import org.apache.paimon.file.stats.FieldStatsConverters;
-import org.apache.paimon.file.utils.SnapshotManager;
+import org.apache.paimon.stats.FieldStatsConverters;
 import org.apache.paimon.types.RowType;
+import org.apache.paimon.utils.SnapshotManager;
 
 import java.util.List;
 
@@ -34,7 +35,7 @@ import static org.apache.paimon.predicate.PredicateBuilder.and;
 import static org.apache.paimon.predicate.PredicateBuilder.pickTransformFieldMapping;
 import static org.apache.paimon.predicate.PredicateBuilder.splitAnd;
 
-/** {@link FileStoreScan} for {@link org.apache.paimon.file.KeyValueFileStore}. */
+/** {@link FileStoreScan} for {@link KeyValueFileStore}. */
 public class KeyValueFileStoreScan extends AbstractFileStoreScan {
 
     private final FieldStatsConverters fieldStatsConverters;
diff --git a/paimon-core/src/main/java/org/apache/paimon/operation/KeyValueFileStoreWrite.java b/paimon-core/src/main/java/org/apache/paimon/operation/KeyValueFileStoreWrite.java
index 5a827c6ad..cc5baeea6 100644
--- a/paimon-core/src/main/java/org/apache/paimon/operation/KeyValueFileStoreWrite.java
+++ b/paimon-core/src/main/java/org/apache/paimon/operation/KeyValueFileStoreWrite.java
@@ -20,14 +20,18 @@ package org.apache.paimon.operation;
 
 import org.apache.paimon.CoreOptions;
 import org.apache.paimon.CoreOptions.ChangelogProducer;
-import org.apache.paimon.data.BinaryRow;
-import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.file.KeyValue;
+import org.apache.paimon.KeyValue;
+import org.apache.paimon.KeyValueFileStore;
 import org.apache.paimon.compact.CompactManager;
 import org.apache.paimon.compact.NoopCompactManager;
+import org.apache.paimon.data.BinaryRow;
+import org.apache.paimon.data.InternalRow;
+import org.apache.paimon.format.FileFormatDiscover;
+import org.apache.paimon.fs.FileIO;
 import org.apache.paimon.io.DataFileMeta;
 import org.apache.paimon.io.KeyValueFileReaderFactory;
 import org.apache.paimon.io.KeyValueFileWriterFactory;
+import org.apache.paimon.lookup.hash.HashLookupStoreFactory;
 import org.apache.paimon.mergetree.Levels;
 import org.apache.paimon.mergetree.LookupLevels;
 import org.apache.paimon.mergetree.MergeTreeWriter;
@@ -42,13 +46,10 @@ import org.apache.paimon.mergetree.compact.MergeTreeCompactRewriter;
 import org.apache.paimon.mergetree.compact.UniversalCompaction;
 import org.apache.paimon.schema.KeyValueFieldsExtractor;
 import org.apache.paimon.schema.SchemaManager;
-import org.apache.paimon.file.utils.CommitIncrement;
-import org.apache.paimon.file.utils.FileStorePathFactory;
-import org.apache.paimon.file.utils.SnapshotManager;
-import org.apache.paimon.format.FileFormatDiscover;
-import org.apache.paimon.fs.FileIO;
-import org.apache.paimon.lookup.hash.HashLookupStoreFactory;
 import org.apache.paimon.types.RowType;
+import org.apache.paimon.utils.CommitIncrement;
+import org.apache.paimon.utils.FileStorePathFactory;
+import org.apache.paimon.utils.SnapshotManager;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -61,7 +62,7 @@ import java.util.function.Supplier;
 
 import static org.apache.paimon.io.DataFileMeta.getMaxSequenceNumber;
 
-/** {@link FileStoreWrite} for {@link org.apache.paimon.file.KeyValueFileStore}. */
+/** {@link FileStoreWrite} for {@link KeyValueFileStore}. */
 public class KeyValueFileStoreWrite extends MemoryFileStoreWrite<KeyValue> {
 
     private static final Logger LOG = LoggerFactory.getLogger(KeyValueFileStoreWrite.class);
diff --git a/paimon-core/src/main/java/org/apache/paimon/operation/MemoryFileStoreWrite.java b/paimon-core/src/main/java/org/apache/paimon/operation/MemoryFileStoreWrite.java
index b7b07129b..05a50c7f2 100644
--- a/paimon-core/src/main/java/org/apache/paimon/operation/MemoryFileStoreWrite.java
+++ b/paimon-core/src/main/java/org/apache/paimon/operation/MemoryFileStoreWrite.java
@@ -21,12 +21,12 @@ package org.apache.paimon.operation;
 import org.apache.flink.shaded.guava30.com.google.common.collect.Iterators;
 
 import org.apache.paimon.CoreOptions;
+import org.apache.paimon.io.cache.CacheManager;
 import org.apache.paimon.memory.HeapMemorySegmentPool;
 import org.apache.paimon.memory.MemoryOwner;
 import org.apache.paimon.memory.MemoryPoolFactory;
-import org.apache.paimon.file.utils.RecordWriter;
-import org.apache.paimon.file.utils.SnapshotManager;
-import org.apache.paimon.io.cache.CacheManager;
+import org.apache.paimon.utils.RecordWriter;
+import org.apache.paimon.utils.SnapshotManager;
 
 import java.util.Iterator;
 import java.util.Map;
diff --git a/paimon-core/src/main/java/org/apache/paimon/operation/ReverseReader.java b/paimon-core/src/main/java/org/apache/paimon/operation/ReverseReader.java
index b821f79a3..39d301c43 100644
--- a/paimon-core/src/main/java/org/apache/paimon/operation/ReverseReader.java
+++ b/paimon-core/src/main/java/org/apache/paimon/operation/ReverseReader.java
@@ -18,7 +18,7 @@
 
 package org.apache.paimon.operation;
 
-import org.apache.paimon.file.KeyValue;
+import org.apache.paimon.KeyValue;
 import org.apache.paimon.reader.RecordReader;
 import org.apache.paimon.types.RowKind;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/schema/SchemaEvolutionUtil.java b/paimon-core/src/main/java/org/apache/paimon/schema/SchemaEvolutionUtil.java
index 79b26441c..69000f26b 100644
--- a/paimon-core/src/main/java/org/apache/paimon/schema/SchemaEvolutionUtil.java
+++ b/paimon-core/src/main/java/org/apache/paimon/schema/SchemaEvolutionUtil.java
@@ -18,11 +18,11 @@
 
 package org.apache.paimon.schema;
 
-import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.file.KeyValue;
+import org.apache.paimon.KeyValue;
 import org.apache.paimon.casting.CastExecutor;
 import org.apache.paimon.casting.CastExecutors;
 import org.apache.paimon.casting.CastFieldGetter;
+import org.apache.paimon.data.InternalRow;
 import org.apache.paimon.predicate.LeafPredicate;
 import org.apache.paimon.predicate.Predicate;
 import org.apache.paimon.predicate.PredicateReplaceVisitor;
diff --git a/paimon-core/src/main/java/org/apache/paimon/schema/SchemaManager.java b/paimon-core/src/main/java/org/apache/paimon/schema/SchemaManager.java
index a48ecc0f0..2135bed5e 100644
--- a/paimon-core/src/main/java/org/apache/paimon/schema/SchemaManager.java
+++ b/paimon-core/src/main/java/org/apache/paimon/schema/SchemaManager.java
@@ -21,6 +21,8 @@ package org.apache.paimon.schema;
 import org.apache.paimon.CoreOptions;
 import org.apache.paimon.annotation.VisibleForTesting;
 import org.apache.paimon.casting.CastExecutors;
+import org.apache.paimon.fs.FileIO;
+import org.apache.paimon.fs.Path;
 import org.apache.paimon.operation.Lock;
 import org.apache.paimon.schema.SchemaChange.AddColumn;
 import org.apache.paimon.schema.SchemaChange.DropColumn;
@@ -31,15 +33,13 @@ import org.apache.paimon.schema.SchemaChange.UpdateColumnComment;
 import org.apache.paimon.schema.SchemaChange.UpdateColumnNullability;
 import org.apache.paimon.schema.SchemaChange.UpdateColumnPosition;
 import org.apache.paimon.schema.SchemaChange.UpdateColumnType;
-import org.apache.paimon.file.utils.JsonSerdeUtil;
-import org.apache.paimon.fs.FileIO;
-import org.apache.paimon.fs.Path;
 import org.apache.paimon.types.DataField;
 import org.apache.paimon.types.DataType;
 import org.apache.paimon.types.DataTypeCasts;
 import org.apache.paimon.types.DataTypeVisitor;
 import org.apache.paimon.types.ReassignFieldId;
 import org.apache.paimon.types.RowType;
+import org.apache.paimon.utils.JsonSerdeUtil;
 import org.apache.paimon.utils.Preconditions;
 
 import javax.annotation.Nullable;
@@ -58,7 +58,7 @@ import java.util.concurrent.atomic.AtomicInteger;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
-import static org.apache.paimon.file.utils.FileUtils.listVersionedFiles;
+import static org.apache.paimon.utils.FileUtils.listVersionedFiles;
 import static org.apache.paimon.utils.Preconditions.checkState;
 
 /** Schema Manager to manage schema versions. */
diff --git a/paimon-core/src/main/java/org/apache/paimon/schema/SchemaSerializer.java b/paimon-core/src/main/java/org/apache/paimon/schema/SchemaSerializer.java
index 69409f7d6..8daac9105 100644
--- a/paimon-core/src/main/java/org/apache/paimon/schema/SchemaSerializer.java
+++ b/paimon-core/src/main/java/org/apache/paimon/schema/SchemaSerializer.java
@@ -21,10 +21,10 @@ package org.apache.paimon.schema;
 import org.apache.flink.shaded.jackson2.com.fasterxml.jackson.core.JsonGenerator;
 import org.apache.flink.shaded.jackson2.com.fasterxml.jackson.databind.JsonNode;
 
-import org.apache.paimon.file.utils.JsonDeserializer;
-import org.apache.paimon.file.utils.JsonSerializer;
 import org.apache.paimon.types.DataField;
 import org.apache.paimon.types.DataTypeJsonParser;
+import org.apache.paimon.utils.JsonDeserializer;
+import org.apache.paimon.utils.JsonSerializer;
 import org.apache.paimon.utils.StringUtils;
 
 import java.io.IOException;
diff --git a/paimon-core/src/main/java/org/apache/paimon/schema/SchemaValidation.java b/paimon-core/src/main/java/org/apache/paimon/schema/SchemaValidation.java
index e8c29fae0..f0e46eaa9 100644
--- a/paimon-core/src/main/java/org/apache/paimon/schema/SchemaValidation.java
+++ b/paimon-core/src/main/java/org/apache/paimon/schema/SchemaValidation.java
@@ -19,7 +19,7 @@
 package org.apache.paimon.schema;
 
 import org.apache.paimon.CoreOptions;
-import org.apache.paimon.file.WriteMode;
+import org.apache.paimon.WriteMode;
 import org.apache.paimon.options.ConfigOption;
 import org.apache.paimon.types.ArrayType;
 import org.apache.paimon.types.DataField;
@@ -40,7 +40,7 @@ import static org.apache.paimon.CoreOptions.SCAN_SNAPSHOT_ID;
 import static org.apache.paimon.CoreOptions.SCAN_TIMESTAMP_MILLIS;
 import static org.apache.paimon.CoreOptions.SNAPSHOT_NUM_RETAINED_MAX;
 import static org.apache.paimon.CoreOptions.SNAPSHOT_NUM_RETAINED_MIN;
-import static org.apache.paimon.file.WriteMode.APPEND_ONLY;
+import static org.apache.paimon.WriteMode.APPEND_ONLY;
 import static org.apache.paimon.schema.SystemColumns.KEY_FIELD_PREFIX;
 import static org.apache.paimon.schema.SystemColumns.SYSTEM_FIELD_NAMES;
 import static org.apache.paimon.utils.Preconditions.checkArgument;
diff --git a/paimon-core/src/main/java/org/apache/paimon/schema/TableSchema.java b/paimon-core/src/main/java/org/apache/paimon/schema/TableSchema.java
index bbfafe347..1ee97d971 100644
--- a/paimon-core/src/main/java/org/apache/paimon/schema/TableSchema.java
+++ b/paimon-core/src/main/java/org/apache/paimon/schema/TableSchema.java
@@ -18,9 +18,9 @@
 
 package org.apache.paimon.schema;
 
-import org.apache.paimon.file.utils.JsonSerdeUtil;
 import org.apache.paimon.types.DataField;
 import org.apache.paimon.types.RowType;
+import org.apache.paimon.utils.JsonSerdeUtil;
 import org.apache.paimon.utils.Preconditions;
 import org.apache.paimon.utils.StringUtils;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/sort/AbstractBinaryExternalMerger.java b/paimon-core/src/main/java/org/apache/paimon/sort/AbstractBinaryExternalMerger.java
similarity index 98%
rename from paimon-core/src/main/java/org/apache/paimon/file/sort/AbstractBinaryExternalMerger.java
rename to paimon-core/src/main/java/org/apache/paimon/sort/AbstractBinaryExternalMerger.java
index 6c746d745..8c5a7256f 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/sort/AbstractBinaryExternalMerger.java
+++ b/paimon-core/src/main/java/org/apache/paimon/sort/AbstractBinaryExternalMerger.java
@@ -16,17 +16,17 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.sort;
+package org.apache.paimon.sort;
 
-import org.apache.paimon.data.AbstractPagedOutputView;
 import org.apache.paimon.compression.BlockCompressionFactory;
+import org.apache.paimon.data.AbstractPagedOutputView;
 import org.apache.paimon.disk.ChannelReaderInputView;
 import org.apache.paimon.disk.ChannelWithMeta;
 import org.apache.paimon.disk.ChannelWriterOutputView;
 import org.apache.paimon.disk.FileChannelUtil;
 import org.apache.paimon.disk.FileIOChannel;
 import org.apache.paimon.disk.IOManager;
-import org.apache.paimon.file.utils.MutableObjectIterator;
+import org.apache.paimon.utils.MutableObjectIterator;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/sort/BinaryExternalMerger.java b/paimon-core/src/main/java/org/apache/paimon/sort/BinaryExternalMerger.java
similarity index 97%
rename from paimon-core/src/main/java/org/apache/paimon/file/sort/BinaryExternalMerger.java
rename to paimon-core/src/main/java/org/apache/paimon/sort/BinaryExternalMerger.java
index cd27cda20..75dab68c2 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/sort/BinaryExternalMerger.java
+++ b/paimon-core/src/main/java/org/apache/paimon/sort/BinaryExternalMerger.java
@@ -16,17 +16,17 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.sort;
+package org.apache.paimon.sort;
 
 import org.apache.paimon.codegen.RecordComparator;
+import org.apache.paimon.compression.BlockCompressionFactory;
 import org.apache.paimon.data.AbstractPagedOutputView;
 import org.apache.paimon.data.BinaryRow;
 import org.apache.paimon.data.serializer.BinaryRowSerializer;
-import org.apache.paimon.compression.BlockCompressionFactory;
 import org.apache.paimon.disk.ChannelReaderInputView;
 import org.apache.paimon.disk.ChannelReaderInputViewIterator;
 import org.apache.paimon.disk.IOManager;
-import org.apache.paimon.file.utils.MutableObjectIterator;
+import org.apache.paimon.utils.MutableObjectIterator;
 
 import java.io.IOException;
 import java.util.ArrayList;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/sort/BinaryExternalSortBuffer.java b/paimon-core/src/main/java/org/apache/paimon/sort/BinaryExternalSortBuffer.java
similarity index 98%
rename from paimon-core/src/main/java/org/apache/paimon/file/sort/BinaryExternalSortBuffer.java
rename to paimon-core/src/main/java/org/apache/paimon/sort/BinaryExternalSortBuffer.java
index e82a1d34f..55df6205e 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/sort/BinaryExternalSortBuffer.java
+++ b/paimon-core/src/main/java/org/apache/paimon/sort/BinaryExternalSortBuffer.java
@@ -16,22 +16,22 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.sort;
+package org.apache.paimon.sort;
 
 import org.apache.paimon.annotation.VisibleForTesting;
 import org.apache.paimon.codegen.RecordComparator;
+import org.apache.paimon.compression.BlockCompressionFactory;
+import org.apache.paimon.compression.Lz4BlockCompressionFactory;
 import org.apache.paimon.data.BinaryRow;
 import org.apache.paimon.data.InternalRow;
 import org.apache.paimon.data.serializer.BinaryRowSerializer;
-import org.apache.paimon.compression.BlockCompressionFactory;
-import org.apache.paimon.compression.Lz4BlockCompressionFactory;
 import org.apache.paimon.disk.ChannelWithMeta;
 import org.apache.paimon.disk.ChannelWriterOutputView;
 import org.apache.paimon.disk.FileChannelUtil;
 import org.apache.paimon.disk.FileIOChannel;
 import org.apache.paimon.disk.IOManager;
-import org.apache.paimon.file.utils.MutableObjectIterator;
 import org.apache.paimon.options.MemorySize;
+import org.apache.paimon.utils.MutableObjectIterator;
 
 import java.io.IOException;
 import java.util.ArrayList;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/sort/BinaryInMemorySortBuffer.java b/paimon-core/src/main/java/org/apache/paimon/sort/BinaryInMemorySortBuffer.java
similarity index 98%
rename from paimon-core/src/main/java/org/apache/paimon/file/sort/BinaryInMemorySortBuffer.java
rename to paimon-core/src/main/java/org/apache/paimon/sort/BinaryInMemorySortBuffer.java
index 351ec0f4a..3692157f8 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/sort/BinaryInMemorySortBuffer.java
+++ b/paimon-core/src/main/java/org/apache/paimon/sort/BinaryInMemorySortBuffer.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.sort;
+package org.apache.paimon.sort;
 
 import org.apache.paimon.codegen.NormalizedKeyComputer;
 import org.apache.paimon.codegen.RecordComparator;
@@ -25,9 +25,9 @@ import org.apache.paimon.data.InternalRow;
 import org.apache.paimon.data.SimpleCollectingOutputView;
 import org.apache.paimon.data.serializer.AbstractRowDataSerializer;
 import org.apache.paimon.data.serializer.BinaryRowSerializer;
-import org.apache.paimon.memory.MemorySegmentPool;
-import org.apache.paimon.file.utils.MutableObjectIterator;
 import org.apache.paimon.memory.MemorySegment;
+import org.apache.paimon.memory.MemorySegmentPool;
+import org.apache.paimon.utils.MutableObjectIterator;
 
 import java.io.EOFException;
 import java.io.IOException;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/sort/BinaryIndexedSortable.java b/paimon-core/src/main/java/org/apache/paimon/sort/BinaryIndexedSortable.java
similarity index 99%
rename from paimon-core/src/main/java/org/apache/paimon/file/sort/BinaryIndexedSortable.java
rename to paimon-core/src/main/java/org/apache/paimon/sort/BinaryIndexedSortable.java
index d9735d64c..202dc0dce 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/sort/BinaryIndexedSortable.java
+++ b/paimon-core/src/main/java/org/apache/paimon/sort/BinaryIndexedSortable.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.sort;
+package org.apache.paimon.sort;
 
 import org.apache.paimon.codegen.NormalizedKeyComputer;
 import org.apache.paimon.codegen.RecordComparator;
@@ -25,8 +25,8 @@ import org.apache.paimon.data.BinaryRow;
 import org.apache.paimon.data.InternalRow;
 import org.apache.paimon.data.RandomAccessInputView;
 import org.apache.paimon.data.serializer.BinaryRowSerializer;
-import org.apache.paimon.memory.MemorySegmentPool;
 import org.apache.paimon.memory.MemorySegment;
+import org.apache.paimon.memory.MemorySegmentPool;
 
 import java.io.IOException;
 import java.util.ArrayList;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/sort/BinaryMergeIterator.java b/paimon-core/src/main/java/org/apache/paimon/sort/BinaryMergeIterator.java
similarity index 97%
rename from paimon-core/src/main/java/org/apache/paimon/file/sort/BinaryMergeIterator.java
rename to paimon-core/src/main/java/org/apache/paimon/sort/BinaryMergeIterator.java
index fb12633ca..26d722924 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/sort/BinaryMergeIterator.java
+++ b/paimon-core/src/main/java/org/apache/paimon/sort/BinaryMergeIterator.java
@@ -16,9 +16,9 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.sort;
+package org.apache.paimon.sort;
 
-import org.apache.paimon.file.utils.MutableObjectIterator;
+import org.apache.paimon.utils.MutableObjectIterator;
 
 import java.io.IOException;
 import java.util.Comparator;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/sort/HeapSort.java b/paimon-core/src/main/java/org/apache/paimon/sort/HeapSort.java
similarity index 98%
rename from paimon-core/src/main/java/org/apache/paimon/file/sort/HeapSort.java
rename to paimon-core/src/main/java/org/apache/paimon/sort/HeapSort.java
index eb258e06e..7af0ea0b6 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/sort/HeapSort.java
+++ b/paimon-core/src/main/java/org/apache/paimon/sort/HeapSort.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.sort;
+package org.apache.paimon.sort;
 
 /**
  * This file is based on source code from the Hadoop Project (http://hadoop.apache.org/), licensed
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/sort/IndexedSortable.java b/paimon-core/src/main/java/org/apache/paimon/sort/IndexedSortable.java
similarity index 98%
rename from paimon-core/src/main/java/org/apache/paimon/file/sort/IndexedSortable.java
rename to paimon-core/src/main/java/org/apache/paimon/sort/IndexedSortable.java
index d4ad5c7f3..6c4775b50 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/sort/IndexedSortable.java
+++ b/paimon-core/src/main/java/org/apache/paimon/sort/IndexedSortable.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.sort;
+package org.apache.paimon.sort;
 
 /** Indexed sortable to provide compare and swap. */
 public interface IndexedSortable {
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/sort/IndexedSorter.java b/paimon-core/src/main/java/org/apache/paimon/sort/IndexedSorter.java
similarity index 97%
rename from paimon-core/src/main/java/org/apache/paimon/file/sort/IndexedSorter.java
rename to paimon-core/src/main/java/org/apache/paimon/sort/IndexedSorter.java
index 1705276d9..426f9d2dd 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/sort/IndexedSorter.java
+++ b/paimon-core/src/main/java/org/apache/paimon/sort/IndexedSorter.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.sort;
+package org.apache.paimon.sort;
 
 /** Indexed sorter to provide sort. */
 public interface IndexedSorter {
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/sort/PartialOrderPriorityQueue.java b/paimon-core/src/main/java/org/apache/paimon/sort/PartialOrderPriorityQueue.java
similarity index 99%
rename from paimon-core/src/main/java/org/apache/paimon/file/sort/PartialOrderPriorityQueue.java
rename to paimon-core/src/main/java/org/apache/paimon/sort/PartialOrderPriorityQueue.java
index fb68bf720..a244a6bd0 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/sort/PartialOrderPriorityQueue.java
+++ b/paimon-core/src/main/java/org/apache/paimon/sort/PartialOrderPriorityQueue.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.sort;
+package org.apache.paimon.sort;
 
 import java.util.AbstractQueue;
 import java.util.Arrays;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/sort/QuickSort.java b/paimon-core/src/main/java/org/apache/paimon/sort/QuickSort.java
similarity index 99%
rename from paimon-core/src/main/java/org/apache/paimon/file/sort/QuickSort.java
rename to paimon-core/src/main/java/org/apache/paimon/sort/QuickSort.java
index d0fa2efd6..13825e50d 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/sort/QuickSort.java
+++ b/paimon-core/src/main/java/org/apache/paimon/sort/QuickSort.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.sort;
+package org.apache.paimon.sort;
 
 /** Quick sort {@link IndexedSorter}. */
 public final class QuickSort implements IndexedSorter {
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/sort/SortBuffer.java b/paimon-core/src/main/java/org/apache/paimon/sort/SortBuffer.java
similarity index 93%
rename from paimon-core/src/main/java/org/apache/paimon/file/sort/SortBuffer.java
rename to paimon-core/src/main/java/org/apache/paimon/sort/SortBuffer.java
index 87ea498c2..723ec21c0 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/sort/SortBuffer.java
+++ b/paimon-core/src/main/java/org/apache/paimon/sort/SortBuffer.java
@@ -16,11 +16,11 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.sort;
+package org.apache.paimon.sort;
 
 import org.apache.paimon.data.BinaryRow;
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.file.utils.MutableObjectIterator;
+import org.apache.paimon.utils.MutableObjectIterator;
 
 import java.io.IOException;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/sort/SpillChannelManager.java b/paimon-core/src/main/java/org/apache/paimon/sort/SpillChannelManager.java
similarity index 98%
rename from paimon-core/src/main/java/org/apache/paimon/file/sort/SpillChannelManager.java
rename to paimon-core/src/main/java/org/apache/paimon/sort/SpillChannelManager.java
index b90daf042..ee21427ca 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/sort/SpillChannelManager.java
+++ b/paimon-core/src/main/java/org/apache/paimon/sort/SpillChannelManager.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.sort;
+package org.apache.paimon.sort;
 
 import org.apache.paimon.disk.FileIOChannel;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/stats/BinaryTableStats.java b/paimon-core/src/main/java/org/apache/paimon/stats/BinaryTableStats.java
similarity index 95%
rename from paimon-core/src/main/java/org/apache/paimon/file/stats/BinaryTableStats.java
rename to paimon-core/src/main/java/org/apache/paimon/stats/BinaryTableStats.java
index 39dcadd19..7923b0a4b 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/stats/BinaryTableStats.java
+++ b/paimon-core/src/main/java/org/apache/paimon/stats/BinaryTableStats.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.stats;
+package org.apache.paimon.stats;
 
 import org.apache.paimon.data.BinaryRow;
 import org.apache.paimon.data.GenericArray;
@@ -30,9 +30,9 @@ import javax.annotation.Nullable;
 import java.util.Arrays;
 import java.util.Objects;
 
-import static org.apache.paimon.file.utils.SerializationUtils.deserializeBinaryRow;
-import static org.apache.paimon.file.utils.SerializationUtils.serializeBinaryRow;
 import static org.apache.paimon.utils.Preconditions.checkNotNull;
+import static org.apache.paimon.utils.SerializationUtils.deserializeBinaryRow;
+import static org.apache.paimon.utils.SerializationUtils.serializeBinaryRow;
 
 /** A serialized row bytes to cache {@link FieldStats}. */
 public class BinaryTableStats {
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/stats/FieldStatsArraySerializer.java b/paimon-core/src/main/java/org/apache/paimon/stats/FieldStatsArraySerializer.java
similarity index 98%
rename from paimon-core/src/main/java/org/apache/paimon/file/stats/FieldStatsArraySerializer.java
rename to paimon-core/src/main/java/org/apache/paimon/stats/FieldStatsArraySerializer.java
index 821748601..741f7ee33 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/stats/FieldStatsArraySerializer.java
+++ b/paimon-core/src/main/java/org/apache/paimon/stats/FieldStatsArraySerializer.java
@@ -16,12 +16,12 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.stats;
+package org.apache.paimon.stats;
 
+import org.apache.paimon.casting.CastExecutor;
 import org.apache.paimon.data.GenericRow;
 import org.apache.paimon.data.InternalRow;
 import org.apache.paimon.data.serializer.InternalRowSerializer;
-import org.apache.paimon.casting.CastExecutor;
 import org.apache.paimon.format.FieldStats;
 import org.apache.paimon.types.ArrayType;
 import org.apache.paimon.types.BigIntType;
@@ -36,7 +36,7 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.stream.IntStream;
 
-import static org.apache.paimon.file.utils.SerializationUtils.newBytesType;
+import static org.apache.paimon.utils.SerializationUtils.newBytesType;
 
 /** Serializer for array of {@link FieldStats}. */
 public class FieldStatsArraySerializer {
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/stats/FieldStatsConverters.java b/paimon-core/src/main/java/org/apache/paimon/stats/FieldStatsConverters.java
similarity index 98%
rename from paimon-core/src/main/java/org/apache/paimon/file/stats/FieldStatsConverters.java
rename to paimon-core/src/main/java/org/apache/paimon/stats/FieldStatsConverters.java
index 1b2725c9a..b02772763 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/stats/FieldStatsConverters.java
+++ b/paimon-core/src/main/java/org/apache/paimon/stats/FieldStatsConverters.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.stats;
+package org.apache.paimon.stats;
 
 import org.apache.paimon.casting.CastExecutor;
 import org.apache.paimon.schema.SchemaEvolutionUtil;
diff --git a/paimon-core/src/main/java/org/apache/paimon/table/AbstractFileStoreTable.java b/paimon-core/src/main/java/org/apache/paimon/table/AbstractFileStoreTable.java
index bb558aae0..3819924b8 100644
--- a/paimon-core/src/main/java/org/apache/paimon/table/AbstractFileStoreTable.java
+++ b/paimon-core/src/main/java/org/apache/paimon/table/AbstractFileStoreTable.java
@@ -19,17 +19,16 @@
 package org.apache.paimon.table;
 
 import org.apache.paimon.CoreOptions;
+import org.apache.paimon.FileStore;
 import org.apache.paimon.annotation.VisibleForTesting;
-import org.apache.paimon.file.FileStore;
+import org.apache.paimon.fs.FileIO;
+import org.apache.paimon.fs.Path;
 import org.apache.paimon.operation.FileStoreScan;
+import org.apache.paimon.options.Options;
 import org.apache.paimon.predicate.Predicate;
 import org.apache.paimon.schema.SchemaManager;
 import org.apache.paimon.schema.SchemaValidation;
 import org.apache.paimon.schema.TableSchema;
-import org.apache.paimon.file.utils.SnapshotManager;
-import org.apache.paimon.fs.FileIO;
-import org.apache.paimon.fs.Path;
-import org.apache.paimon.options.Options;
 import org.apache.paimon.table.sink.TableCommitImpl;
 import org.apache.paimon.table.source.BatchDataTableScan;
 import org.apache.paimon.table.source.BatchDataTableScanImpl;
@@ -38,6 +37,7 @@ import org.apache.paimon.table.source.StreamDataTableScan;
 import org.apache.paimon.table.source.StreamDataTableScanImpl;
 import org.apache.paimon.table.source.snapshot.SnapshotSplitReader;
 import org.apache.paimon.table.source.snapshot.SnapshotSplitReaderImpl;
+import org.apache.paimon.utils.SnapshotManager;
 
 import java.util.Map;
 import java.util.Objects;
diff --git a/paimon-core/src/main/java/org/apache/paimon/table/AppendOnlyFileStoreTable.java b/paimon-core/src/main/java/org/apache/paimon/table/AppendOnlyFileStoreTable.java
index 172d9a752..4f2e15373 100644
--- a/paimon-core/src/main/java/org/apache/paimon/table/AppendOnlyFileStoreTable.java
+++ b/paimon-core/src/main/java/org/apache/paimon/table/AppendOnlyFileStoreTable.java
@@ -18,19 +18,19 @@
 
 package org.apache.paimon.table;
 
+import org.apache.paimon.AppendOnlyFileStore;
 import org.apache.paimon.CoreOptions;
+import org.apache.paimon.WriteMode;
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.file.AppendOnlyFileStore;
-import org.apache.paimon.file.WriteMode;
+import org.apache.paimon.fs.FileIO;
+import org.apache.paimon.fs.Path;
 import org.apache.paimon.operation.AppendOnlyFileStoreRead;
 import org.apache.paimon.operation.AppendOnlyFileStoreScan;
 import org.apache.paimon.operation.FileStoreScan;
 import org.apache.paimon.operation.ReverseReader;
 import org.apache.paimon.predicate.Predicate;
-import org.apache.paimon.schema.TableSchema;
-import org.apache.paimon.fs.FileIO;
-import org.apache.paimon.fs.Path;
 import org.apache.paimon.reader.RecordReader;
+import org.apache.paimon.schema.TableSchema;
 import org.apache.paimon.table.sink.SinkRecordConverter;
 import org.apache.paimon.table.sink.TableWriteImpl;
 import org.apache.paimon.table.source.AppendOnlySplitGenerator;
diff --git a/paimon-core/src/main/java/org/apache/paimon/table/ChangelogValueCountFileStoreTable.java b/paimon-core/src/main/java/org/apache/paimon/table/ChangelogValueCountFileStoreTable.java
index 766373086..993ef5ac0 100644
--- a/paimon-core/src/main/java/org/apache/paimon/table/ChangelogValueCountFileStoreTable.java
+++ b/paimon-core/src/main/java/org/apache/paimon/table/ChangelogValueCountFileStoreTable.java
@@ -19,23 +19,23 @@
 package org.apache.paimon.table;
 
 import org.apache.paimon.CoreOptions;
+import org.apache.paimon.KeyValue;
+import org.apache.paimon.KeyValueFileStore;
+import org.apache.paimon.WriteMode;
 import org.apache.paimon.data.GenericRow;
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.file.KeyValue;
-import org.apache.paimon.file.KeyValueFileStore;
-import org.apache.paimon.file.WriteMode;
+import org.apache.paimon.fs.FileIO;
+import org.apache.paimon.fs.Path;
 import org.apache.paimon.io.DataFileMeta;
 import org.apache.paimon.mergetree.compact.ValueCountMergeFunction;
 import org.apache.paimon.operation.FileStoreScan;
 import org.apache.paimon.operation.KeyValueFileStoreScan;
 import org.apache.paimon.operation.ReverseReader;
 import org.apache.paimon.predicate.Predicate;
+import org.apache.paimon.reader.RecordReader;
 import org.apache.paimon.schema.KeyValueFieldsExtractor;
 import org.apache.paimon.schema.TableSchema;
-import org.apache.paimon.file.stats.BinaryTableStats;
-import org.apache.paimon.fs.FileIO;
-import org.apache.paimon.fs.Path;
-import org.apache.paimon.reader.RecordReader;
+import org.apache.paimon.stats.BinaryTableStats;
 import org.apache.paimon.table.sink.SinkRecordConverter;
 import org.apache.paimon.table.sink.TableWriteImpl;
 import org.apache.paimon.table.source.InnerTableRead;
diff --git a/paimon-core/src/main/java/org/apache/paimon/table/ChangelogWithKeyFileStoreTable.java b/paimon-core/src/main/java/org/apache/paimon/table/ChangelogWithKeyFileStoreTable.java
index 283e566d4..e06cd4329 100644
--- a/paimon-core/src/main/java/org/apache/paimon/table/ChangelogWithKeyFileStoreTable.java
+++ b/paimon-core/src/main/java/org/apache/paimon/table/ChangelogWithKeyFileStoreTable.java
@@ -20,10 +20,12 @@ package org.apache.paimon.table;
 
 import org.apache.paimon.CoreOptions;
 import org.apache.paimon.CoreOptions.ChangelogProducer;
+import org.apache.paimon.KeyValue;
+import org.apache.paimon.KeyValueFileStore;
+import org.apache.paimon.WriteMode;
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.file.KeyValue;
-import org.apache.paimon.file.KeyValueFileStore;
-import org.apache.paimon.file.WriteMode;
+import org.apache.paimon.fs.FileIO;
+import org.apache.paimon.fs.Path;
 import org.apache.paimon.mergetree.compact.DeduplicateMergeFunction;
 import org.apache.paimon.mergetree.compact.LookupMergeFunction;
 import org.apache.paimon.mergetree.compact.MergeFunctionFactory;
@@ -31,13 +33,11 @@ import org.apache.paimon.mergetree.compact.PartialUpdateMergeFunction;
 import org.apache.paimon.mergetree.compact.aggregate.AggregateMergeFunction;
 import org.apache.paimon.operation.FileStoreScan;
 import org.apache.paimon.operation.KeyValueFileStoreScan;
+import org.apache.paimon.options.Options;
 import org.apache.paimon.predicate.Predicate;
+import org.apache.paimon.reader.RecordReader;
 import org.apache.paimon.schema.KeyValueFieldsExtractor;
 import org.apache.paimon.schema.TableSchema;
-import org.apache.paimon.fs.FileIO;
-import org.apache.paimon.fs.Path;
-import org.apache.paimon.options.Options;
-import org.apache.paimon.reader.RecordReader;
 import org.apache.paimon.table.sink.SequenceGenerator;
 import org.apache.paimon.table.sink.SinkRecordConverter;
 import org.apache.paimon.table.sink.TableWriteImpl;
diff --git a/paimon-core/src/main/java/org/apache/paimon/table/DataTable.java b/paimon-core/src/main/java/org/apache/paimon/table/DataTable.java
index 8f210638c..3e24ca03b 100644
--- a/paimon-core/src/main/java/org/apache/paimon/table/DataTable.java
+++ b/paimon-core/src/main/java/org/apache/paimon/table/DataTable.java
@@ -19,12 +19,12 @@
 package org.apache.paimon.table;
 
 import org.apache.paimon.CoreOptions;
-import org.apache.paimon.file.utils.SnapshotManager;
 import org.apache.paimon.fs.FileIO;
 import org.apache.paimon.fs.Path;
 import org.apache.paimon.table.source.BatchDataTableScan;
 import org.apache.paimon.table.source.StreamDataTableScan;
 import org.apache.paimon.table.source.snapshot.SnapshotSplitReader;
+import org.apache.paimon.utils.SnapshotManager;
 
 /** A {@link Table} for data. */
 public interface DataTable extends InnerTable {
diff --git a/paimon-core/src/main/java/org/apache/paimon/table/FileStoreTable.java b/paimon-core/src/main/java/org/apache/paimon/table/FileStoreTable.java
index 6a2ab28dd..f217ef016 100644
--- a/paimon-core/src/main/java/org/apache/paimon/table/FileStoreTable.java
+++ b/paimon-core/src/main/java/org/apache/paimon/table/FileStoreTable.java
@@ -18,10 +18,11 @@
 
 package org.apache.paimon.table;
 
+import org.apache.paimon.FileStore;
 import org.apache.paimon.data.InternalRow;
 import org.apache.paimon.io.DataFileMeta;
 import org.apache.paimon.schema.TableSchema;
-import org.apache.paimon.file.stats.BinaryTableStats;
+import org.apache.paimon.stats.BinaryTableStats;
 import org.apache.paimon.table.sink.TableCommitImpl;
 import org.apache.paimon.table.sink.TableWriteImpl;
 import org.apache.paimon.types.RowType;
@@ -30,8 +31,8 @@ import java.util.List;
 import java.util.Map;
 
 /**
- * An abstraction layer above {@link org.apache.paimon.file.FileStore} to provide reading and
- * writing of {@link InternalRow}.
+ * An abstraction layer above {@link FileStore} to provide reading and writing of {@link
+ * InternalRow}.
  */
 public interface FileStoreTable extends DataTable, SupportsPartition {
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/table/FileStoreTableFactory.java b/paimon-core/src/main/java/org/apache/paimon/table/FileStoreTableFactory.java
index bfffdaa66..886a4fcca 100644
--- a/paimon-core/src/main/java/org/apache/paimon/table/FileStoreTableFactory.java
+++ b/paimon-core/src/main/java/org/apache/paimon/table/FileStoreTableFactory.java
@@ -21,12 +21,12 @@ package org.apache.paimon.table;
 import org.apache.flink.table.store.catalog.CatalogContext;
 
 import org.apache.paimon.CoreOptions;
-import org.apache.paimon.file.WriteMode;
-import org.apache.paimon.schema.SchemaManager;
-import org.apache.paimon.schema.TableSchema;
+import org.apache.paimon.WriteMode;
 import org.apache.paimon.fs.FileIO;
 import org.apache.paimon.fs.Path;
 import org.apache.paimon.options.Options;
+import org.apache.paimon.schema.SchemaManager;
+import org.apache.paimon.schema.TableSchema;
 
 import java.io.IOException;
 import java.io.UncheckedIOException;
diff --git a/paimon-core/src/main/java/org/apache/paimon/table/sink/CommitMessageImpl.java b/paimon-core/src/main/java/org/apache/paimon/table/sink/CommitMessageImpl.java
index 48c3e92c4..ee45f121a 100644
--- a/paimon-core/src/main/java/org/apache/paimon/table/sink/CommitMessageImpl.java
+++ b/paimon-core/src/main/java/org/apache/paimon/table/sink/CommitMessageImpl.java
@@ -20,17 +20,17 @@ package org.apache.paimon.table.sink;
 
 import org.apache.paimon.data.BinaryRow;
 import org.apache.paimon.io.CompactIncrement;
-import org.apache.paimon.io.NewFilesIncrement;
 import org.apache.paimon.io.DataInputViewStreamWrapper;
 import org.apache.paimon.io.DataOutputViewStreamWrapper;
+import org.apache.paimon.io.NewFilesIncrement;
 
 import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
 import java.util.Objects;
 
-import static org.apache.paimon.file.utils.SerializationUtils.deserializedBytes;
-import static org.apache.paimon.file.utils.SerializationUtils.serializeBytes;
+import static org.apache.paimon.utils.SerializationUtils.deserializedBytes;
+import static org.apache.paimon.utils.SerializationUtils.serializeBytes;
 
 /** File committable for sink. */
 public class CommitMessageImpl implements CommitMessage {
diff --git a/paimon-core/src/main/java/org/apache/paimon/table/sink/CommitMessageSerializer.java b/paimon-core/src/main/java/org/apache/paimon/table/sink/CommitMessageSerializer.java
index 5ec938386..38f993a72 100644
--- a/paimon-core/src/main/java/org/apache/paimon/table/sink/CommitMessageSerializer.java
+++ b/paimon-core/src/main/java/org/apache/paimon/table/sink/CommitMessageSerializer.java
@@ -21,19 +21,19 @@ package org.apache.paimon.table.sink;
 import org.apache.paimon.data.serializer.VersionedSerializer;
 import org.apache.paimon.io.CompactIncrement;
 import org.apache.paimon.io.DataFileMetaSerializer;
-import org.apache.paimon.io.NewFilesIncrement;
 import org.apache.paimon.io.DataInputDeserializer;
 import org.apache.paimon.io.DataInputView;
 import org.apache.paimon.io.DataOutputView;
 import org.apache.paimon.io.DataOutputViewStreamWrapper;
+import org.apache.paimon.io.NewFilesIncrement;
 
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 
-import static org.apache.paimon.file.utils.SerializationUtils.deserializeBinaryRow;
-import static org.apache.paimon.file.utils.SerializationUtils.serializeBinaryRow;
+import static org.apache.paimon.utils.SerializationUtils.deserializeBinaryRow;
+import static org.apache.paimon.utils.SerializationUtils.serializeBinaryRow;
 
 /** {@link VersionedSerializer} for {@link CommitMessage}. */
 public class CommitMessageSerializer implements VersionedSerializer<CommitMessage> {
diff --git a/paimon-core/src/main/java/org/apache/paimon/table/sink/TableWriteImpl.java b/paimon-core/src/main/java/org/apache/paimon/table/sink/TableWriteImpl.java
index 34489edbf..338f1308c 100644
--- a/paimon-core/src/main/java/org/apache/paimon/table/sink/TableWriteImpl.java
+++ b/paimon-core/src/main/java/org/apache/paimon/table/sink/TableWriteImpl.java
@@ -18,13 +18,14 @@
 
 package org.apache.paimon.table.sink;
 
+import org.apache.paimon.FileStore;
 import org.apache.paimon.data.BinaryRow;
 import org.apache.paimon.data.InternalRow;
 import org.apache.paimon.disk.IOManager;
 import org.apache.paimon.io.DataFileMeta;
 import org.apache.paimon.operation.AbstractFileStoreWrite;
 import org.apache.paimon.operation.FileStoreWrite;
-import org.apache.paimon.file.utils.Restorable;
+import org.apache.paimon.utils.Restorable;
 
 import java.util.List;
 
@@ -33,7 +34,7 @@ import static org.apache.paimon.utils.Preconditions.checkState;
 /**
  * {@link TableWrite} implementation.
  *
- * @param <T> type of record to write into {@link org.apache.paimon.file.FileStore}.
+ * @param <T> type of record to write into {@link FileStore}.
  */
 public class TableWriteImpl<T>
         implements InnerTableWrite, Restorable<List<AbstractFileStoreWrite.State>> {
diff --git a/paimon-core/src/main/java/org/apache/paimon/table/source/BatchDataTableScanImpl.java b/paimon-core/src/main/java/org/apache/paimon/table/source/BatchDataTableScanImpl.java
index fc7f94ef3..2d180cb86 100644
--- a/paimon-core/src/main/java/org/apache/paimon/table/source/BatchDataTableScanImpl.java
+++ b/paimon-core/src/main/java/org/apache/paimon/table/source/BatchDataTableScanImpl.java
@@ -19,9 +19,9 @@
 package org.apache.paimon.table.source;
 
 import org.apache.paimon.CoreOptions;
-import org.apache.paimon.file.utils.SnapshotManager;
 import org.apache.paimon.table.source.snapshot.SnapshotSplitReader;
 import org.apache.paimon.table.source.snapshot.StartingScanner;
+import org.apache.paimon.utils.SnapshotManager;
 
 import javax.annotation.Nullable;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/table/source/DataSplit.java b/paimon-core/src/main/java/org/apache/paimon/table/source/DataSplit.java
index d7893015f..8cd768b30 100644
--- a/paimon-core/src/main/java/org/apache/paimon/table/source/DataSplit.java
+++ b/paimon-core/src/main/java/org/apache/paimon/table/source/DataSplit.java
@@ -21,11 +21,11 @@ package org.apache.paimon.table.source;
 import org.apache.paimon.data.BinaryRow;
 import org.apache.paimon.io.DataFileMeta;
 import org.apache.paimon.io.DataFileMetaSerializer;
-import org.apache.paimon.file.utils.SerializationUtils;
 import org.apache.paimon.io.DataInputView;
 import org.apache.paimon.io.DataInputViewStreamWrapper;
 import org.apache.paimon.io.DataOutputView;
 import org.apache.paimon.io.DataOutputViewStreamWrapper;
+import org.apache.paimon.utils.SerializationUtils;
 
 import java.io.IOException;
 import java.io.ObjectInputStream;
diff --git a/paimon-core/src/main/java/org/apache/paimon/table/source/KeyValueTableRead.java b/paimon-core/src/main/java/org/apache/paimon/table/source/KeyValueTableRead.java
index b839561a0..ec861d1ce 100644
--- a/paimon-core/src/main/java/org/apache/paimon/table/source/KeyValueTableRead.java
+++ b/paimon-core/src/main/java/org/apache/paimon/table/source/KeyValueTableRead.java
@@ -18,8 +18,8 @@
 
 package org.apache.paimon.table.source;
 
+import org.apache.paimon.KeyValue;
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.file.KeyValue;
 import org.apache.paimon.operation.KeyValueFileStoreRead;
 import org.apache.paimon.reader.RecordReader;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/table/source/ResetRowKindRecordIterator.java b/paimon-core/src/main/java/org/apache/paimon/table/source/ResetRowKindRecordIterator.java
index 86c1b5c74..a647d5fa0 100644
--- a/paimon-core/src/main/java/org/apache/paimon/table/source/ResetRowKindRecordIterator.java
+++ b/paimon-core/src/main/java/org/apache/paimon/table/source/ResetRowKindRecordIterator.java
@@ -18,8 +18,8 @@
 
 package org.apache.paimon.table.source;
 
+import org.apache.paimon.KeyValue;
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.file.KeyValue;
 import org.apache.paimon.reader.RecordReader;
 import org.apache.paimon.types.RowKind;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/table/source/StreamDataTableScanImpl.java b/paimon-core/src/main/java/org/apache/paimon/table/source/StreamDataTableScanImpl.java
index 2d026c557..381642e7a 100644
--- a/paimon-core/src/main/java/org/apache/paimon/table/source/StreamDataTableScanImpl.java
+++ b/paimon-core/src/main/java/org/apache/paimon/table/source/StreamDataTableScanImpl.java
@@ -19,8 +19,7 @@
 package org.apache.paimon.table.source;
 
 import org.apache.paimon.CoreOptions;
-import org.apache.paimon.file.Snapshot;
-import org.apache.paimon.file.utils.SnapshotManager;
+import org.apache.paimon.Snapshot;
 import org.apache.paimon.table.source.snapshot.BoundedWatermarkFollowUpScanner;
 import org.apache.paimon.table.source.snapshot.CompactedStartingScanner;
 import org.apache.paimon.table.source.snapshot.CompactionChangelogFollowUpScanner;
@@ -30,6 +29,7 @@ import org.apache.paimon.table.source.snapshot.FullStartingScanner;
 import org.apache.paimon.table.source.snapshot.InputChangelogFollowUpScanner;
 import org.apache.paimon.table.source.snapshot.SnapshotSplitReader;
 import org.apache.paimon.table.source.snapshot.StartingScanner;
+import org.apache.paimon.utils.SnapshotManager;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/table/source/StreamTableScan.java b/paimon-core/src/main/java/org/apache/paimon/table/source/StreamTableScan.java
index 338d753c8..6b8ad64cc 100644
--- a/paimon-core/src/main/java/org/apache/paimon/table/source/StreamTableScan.java
+++ b/paimon-core/src/main/java/org/apache/paimon/table/source/StreamTableScan.java
@@ -19,7 +19,7 @@
 package org.apache.paimon.table.source;
 
 import org.apache.paimon.annotation.Experimental;
-import org.apache.paimon.file.utils.Restorable;
+import org.apache.paimon.utils.Restorable;
 
 /**
  * {@link TableScan} for streaming, supports {@link #checkpoint} and {@link #restore}.
diff --git a/paimon-core/src/main/java/org/apache/paimon/table/source/ValueContentRowDataRecordIterator.java b/paimon-core/src/main/java/org/apache/paimon/table/source/ValueContentRowDataRecordIterator.java
index fd5d23272..adcf504a5 100644
--- a/paimon-core/src/main/java/org/apache/paimon/table/source/ValueContentRowDataRecordIterator.java
+++ b/paimon-core/src/main/java/org/apache/paimon/table/source/ValueContentRowDataRecordIterator.java
@@ -18,8 +18,8 @@
 
 package org.apache.paimon.table.source;
 
+import org.apache.paimon.KeyValue;
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.file.KeyValue;
 import org.apache.paimon.reader.RecordReader;
 
 import java.io.IOException;
diff --git a/paimon-core/src/main/java/org/apache/paimon/table/source/ValueCountRowDataRecordIterator.java b/paimon-core/src/main/java/org/apache/paimon/table/source/ValueCountRowDataRecordIterator.java
index 551e5c70c..1306d1a9e 100644
--- a/paimon-core/src/main/java/org/apache/paimon/table/source/ValueCountRowDataRecordIterator.java
+++ b/paimon-core/src/main/java/org/apache/paimon/table/source/ValueCountRowDataRecordIterator.java
@@ -18,8 +18,8 @@
 
 package org.apache.paimon.table.source;
 
+import org.apache.paimon.KeyValue;
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.file.KeyValue;
 import org.apache.paimon.reader.RecordReader;
 import org.apache.paimon.types.RowKind;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/BoundedWatermarkFollowUpScanner.java b/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/BoundedWatermarkFollowUpScanner.java
index 31b8554a4..3bee98fec 100644
--- a/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/BoundedWatermarkFollowUpScanner.java
+++ b/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/BoundedWatermarkFollowUpScanner.java
@@ -18,7 +18,7 @@
 
 package org.apache.paimon.table.source.snapshot;
 
-import org.apache.paimon.file.Snapshot;
+import org.apache.paimon.Snapshot;
 import org.apache.paimon.table.source.DataTableScan.DataFilePlan;
 
 /**
diff --git a/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/CompactedStartingScanner.java b/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/CompactedStartingScanner.java
index 200660679..566b9e02f 100644
--- a/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/CompactedStartingScanner.java
+++ b/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/CompactedStartingScanner.java
@@ -20,8 +20,8 @@ package org.apache.paimon.table.source.snapshot;
 
 import org.apache.paimon.CoreOptions;
 import org.apache.paimon.operation.ScanKind;
-import org.apache.paimon.file.utils.SnapshotManager;
 import org.apache.paimon.table.source.DataTableScan;
+import org.apache.paimon.utils.SnapshotManager;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/CompactionChangelogFollowUpScanner.java b/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/CompactionChangelogFollowUpScanner.java
index 96101fee7..2d8c59f60 100644
--- a/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/CompactionChangelogFollowUpScanner.java
+++ b/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/CompactionChangelogFollowUpScanner.java
@@ -19,7 +19,7 @@
 package org.apache.paimon.table.source.snapshot;
 
 import org.apache.paimon.CoreOptions;
-import org.apache.paimon.file.Snapshot;
+import org.apache.paimon.Snapshot;
 import org.apache.paimon.operation.ScanKind;
 import org.apache.paimon.table.source.DataTableScan;
 import org.slf4j.Logger;
diff --git a/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/ContinuousCompactorFollowUpScanner.java b/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/ContinuousCompactorFollowUpScanner.java
index 787b71999..c489fa965 100644
--- a/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/ContinuousCompactorFollowUpScanner.java
+++ b/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/ContinuousCompactorFollowUpScanner.java
@@ -18,7 +18,7 @@
 
 package org.apache.paimon.table.source.snapshot;
 
-import org.apache.paimon.file.Snapshot;
+import org.apache.paimon.Snapshot;
 import org.apache.paimon.operation.ScanKind;
 import org.apache.paimon.table.source.DataTableScan;
 import org.slf4j.Logger;
diff --git a/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/ContinuousCompactorStartingScanner.java b/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/ContinuousCompactorStartingScanner.java
index 9a44458d3..a037e8a08 100644
--- a/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/ContinuousCompactorStartingScanner.java
+++ b/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/ContinuousCompactorStartingScanner.java
@@ -18,9 +18,9 @@
 
 package org.apache.paimon.table.source.snapshot;
 
-import org.apache.paimon.file.Snapshot;
-import org.apache.paimon.file.utils.SnapshotManager;
+import org.apache.paimon.Snapshot;
 import org.apache.paimon.table.source.DataTableScan;
+import org.apache.paimon.utils.SnapshotManager;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/ContinuousFromSnapshotStartingScanner.java b/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/ContinuousFromSnapshotStartingScanner.java
index 4a21074c8..8b6b88add 100644
--- a/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/ContinuousFromSnapshotStartingScanner.java
+++ b/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/ContinuousFromSnapshotStartingScanner.java
@@ -19,8 +19,8 @@
 package org.apache.paimon.table.source.snapshot;
 
 import org.apache.paimon.CoreOptions;
-import org.apache.paimon.file.utils.SnapshotManager;
 import org.apache.paimon.table.source.DataTableScan;
+import org.apache.paimon.utils.SnapshotManager;
 
 import java.util.Collections;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/ContinuousFromTimestampStartingScanner.java b/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/ContinuousFromTimestampStartingScanner.java
index bdd77e208..96149cb54 100644
--- a/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/ContinuousFromTimestampStartingScanner.java
+++ b/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/ContinuousFromTimestampStartingScanner.java
@@ -19,8 +19,8 @@
 package org.apache.paimon.table.source.snapshot;
 
 import org.apache.paimon.CoreOptions;
-import org.apache.paimon.file.utils.SnapshotManager;
 import org.apache.paimon.table.source.DataTableScan;
+import org.apache.paimon.utils.SnapshotManager;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/ContinuousLatestStartingScanner.java b/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/ContinuousLatestStartingScanner.java
index 5c731df0a..3f6832eda 100644
--- a/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/ContinuousLatestStartingScanner.java
+++ b/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/ContinuousLatestStartingScanner.java
@@ -19,8 +19,8 @@
 package org.apache.paimon.table.source.snapshot;
 
 import org.apache.paimon.CoreOptions;
-import org.apache.paimon.file.utils.SnapshotManager;
 import org.apache.paimon.table.source.DataTableScan;
+import org.apache.paimon.utils.SnapshotManager;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/DeltaFollowUpScanner.java b/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/DeltaFollowUpScanner.java
index 605b4ffb4..ff3c22829 100644
--- a/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/DeltaFollowUpScanner.java
+++ b/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/DeltaFollowUpScanner.java
@@ -19,7 +19,7 @@
 package org.apache.paimon.table.source.snapshot;
 
 import org.apache.paimon.CoreOptions;
-import org.apache.paimon.file.Snapshot;
+import org.apache.paimon.Snapshot;
 import org.apache.paimon.operation.ScanKind;
 import org.apache.paimon.table.source.DataTableScan;
 import org.slf4j.Logger;
diff --git a/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/FollowUpScanner.java b/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/FollowUpScanner.java
index b6f4cf476..8e7e99dda 100644
--- a/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/FollowUpScanner.java
+++ b/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/FollowUpScanner.java
@@ -18,7 +18,7 @@
 
 package org.apache.paimon.table.source.snapshot;
 
-import org.apache.paimon.file.Snapshot;
+import org.apache.paimon.Snapshot;
 import org.apache.paimon.table.source.DataTableScan;
 import org.apache.paimon.table.source.StreamDataTableScan;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/FullStartingScanner.java b/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/FullStartingScanner.java
index c24ca1716..e56b51411 100644
--- a/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/FullStartingScanner.java
+++ b/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/FullStartingScanner.java
@@ -20,8 +20,8 @@ package org.apache.paimon.table.source.snapshot;
 
 import org.apache.paimon.CoreOptions;
 import org.apache.paimon.operation.ScanKind;
-import org.apache.paimon.file.utils.SnapshotManager;
 import org.apache.paimon.table.source.DataTableScan;
+import org.apache.paimon.utils.SnapshotManager;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/InputChangelogFollowUpScanner.java b/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/InputChangelogFollowUpScanner.java
index c9a017e2d..9c5fb398e 100644
--- a/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/InputChangelogFollowUpScanner.java
+++ b/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/InputChangelogFollowUpScanner.java
@@ -19,7 +19,7 @@
 package org.apache.paimon.table.source.snapshot;
 
 import org.apache.paimon.CoreOptions;
-import org.apache.paimon.file.Snapshot;
+import org.apache.paimon.Snapshot;
 import org.apache.paimon.operation.ScanKind;
 import org.apache.paimon.table.source.DataTableScan;
 import org.slf4j.Logger;
diff --git a/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/SnapshotSplitReader.java b/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/SnapshotSplitReader.java
index 58f84292d..814ff32e3 100644
--- a/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/SnapshotSplitReader.java
+++ b/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/SnapshotSplitReader.java
@@ -18,8 +18,8 @@
 
 package org.apache.paimon.table.source.snapshot;
 
+import org.apache.paimon.Snapshot;
 import org.apache.paimon.data.BinaryRow;
-import org.apache.paimon.file.Snapshot;
 import org.apache.paimon.io.DataFileMeta;
 import org.apache.paimon.operation.ScanKind;
 import org.apache.paimon.predicate.Predicate;
diff --git a/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/SnapshotSplitReaderImpl.java b/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/SnapshotSplitReaderImpl.java
index e563a6099..eac6893ca 100644
--- a/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/SnapshotSplitReaderImpl.java
+++ b/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/SnapshotSplitReaderImpl.java
@@ -19,10 +19,10 @@
 package org.apache.paimon.table.source.snapshot;
 
 import org.apache.paimon.CoreOptions;
+import org.apache.paimon.Snapshot;
 import org.apache.paimon.codegen.CodeGenUtils;
 import org.apache.paimon.codegen.RecordComparator;
 import org.apache.paimon.data.BinaryRow;
-import org.apache.paimon.file.Snapshot;
 import org.apache.paimon.io.DataFileMeta;
 import org.apache.paimon.manifest.FileKind;
 import org.apache.paimon.operation.FileStoreScan;
@@ -30,10 +30,10 @@ import org.apache.paimon.operation.ScanKind;
 import org.apache.paimon.predicate.Predicate;
 import org.apache.paimon.predicate.PredicateBuilder;
 import org.apache.paimon.schema.TableSchema;
-import org.apache.paimon.file.utils.SnapshotManager;
 import org.apache.paimon.table.source.DataSplit;
 import org.apache.paimon.table.source.SplitGenerator;
 import org.apache.paimon.utils.Filter;
+import org.apache.paimon.utils.SnapshotManager;
 
 import java.util.ArrayList;
 import java.util.LinkedHashMap;
diff --git a/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/StartingScanner.java b/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/StartingScanner.java
index 6d250a023..39c73521e 100644
--- a/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/StartingScanner.java
+++ b/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/StartingScanner.java
@@ -18,10 +18,10 @@
 
 package org.apache.paimon.table.source.snapshot;
 
-import org.apache.paimon.file.utils.SnapshotManager;
 import org.apache.paimon.table.source.BatchDataTableScan;
 import org.apache.paimon.table.source.DataTableScan;
 import org.apache.paimon.table.source.StreamDataTableScan;
+import org.apache.paimon.utils.SnapshotManager;
 
 /**
  * Helper class for the first planning of {@link BatchDataTableScan} and {@link
diff --git a/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/StaticFromSnapshotStartingScanner.java b/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/StaticFromSnapshotStartingScanner.java
index 4fcfb529a..b84b3cbe3 100644
--- a/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/StaticFromSnapshotStartingScanner.java
+++ b/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/StaticFromSnapshotStartingScanner.java
@@ -20,8 +20,8 @@ package org.apache.paimon.table.source.snapshot;
 
 import org.apache.paimon.CoreOptions;
 import org.apache.paimon.operation.ScanKind;
-import org.apache.paimon.file.utils.SnapshotManager;
 import org.apache.paimon.table.source.DataTableScan;
+import org.apache.paimon.utils.SnapshotManager;
 
 /**
  * {@link StartingScanner} for the {@link CoreOptions.StartupMode#FROM_SNAPSHOT} startup mode of a
diff --git a/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/StaticFromTimestampStartingScanner.java b/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/StaticFromTimestampStartingScanner.java
index 3d0a9926c..3e12589e6 100644
--- a/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/StaticFromTimestampStartingScanner.java
+++ b/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/StaticFromTimestampStartingScanner.java
@@ -20,8 +20,8 @@ package org.apache.paimon.table.source.snapshot;
 
 import org.apache.paimon.CoreOptions;
 import org.apache.paimon.operation.ScanKind;
-import org.apache.paimon.file.utils.SnapshotManager;
 import org.apache.paimon.table.source.DataTableScan;
+import org.apache.paimon.utils.SnapshotManager;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/table/system/AuditLogTable.java b/paimon-core/src/main/java/org/apache/paimon/table/system/AuditLogTable.java
index a704b8ec3..881ed8054 100644
--- a/paimon-core/src/main/java/org/apache/paimon/table/system/AuditLogTable.java
+++ b/paimon-core/src/main/java/org/apache/paimon/table/system/AuditLogTable.java
@@ -23,14 +23,13 @@ import org.apache.flink.shaded.guava30.com.google.common.primitives.Ints;
 import org.apache.paimon.CoreOptions;
 import org.apache.paimon.data.BinaryString;
 import org.apache.paimon.data.InternalRow;
+import org.apache.paimon.fs.FileIO;
+import org.apache.paimon.fs.Path;
 import org.apache.paimon.operation.ScanKind;
 import org.apache.paimon.predicate.LeafPredicate;
 import org.apache.paimon.predicate.Predicate;
 import org.apache.paimon.predicate.PredicateBuilder;
 import org.apache.paimon.predicate.PredicateReplaceVisitor;
-import org.apache.paimon.file.utils.SnapshotManager;
-import org.apache.paimon.fs.FileIO;
-import org.apache.paimon.fs.Path;
 import org.apache.paimon.reader.RecordReader;
 import org.apache.paimon.table.DataTable;
 import org.apache.paimon.table.FileStoreTable;
@@ -51,6 +50,7 @@ import org.apache.paimon.types.RowType;
 import org.apache.paimon.types.VarCharType;
 import org.apache.paimon.utils.Filter;
 import org.apache.paimon.utils.ProjectedRow;
+import org.apache.paimon.utils.SnapshotManager;
 
 import javax.annotation.Nullable;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/table/system/BucketsTable.java b/paimon-core/src/main/java/org/apache/paimon/table/system/BucketsTable.java
index f6158af12..abf5c2c42 100644
--- a/paimon-core/src/main/java/org/apache/paimon/table/system/BucketsTable.java
+++ b/paimon-core/src/main/java/org/apache/paimon/table/system/BucketsTable.java
@@ -22,13 +22,11 @@ import org.apache.paimon.CoreOptions;
 import org.apache.paimon.data.GenericRow;
 import org.apache.paimon.data.InternalRow;
 import org.apache.paimon.data.JoinedRow;
+import org.apache.paimon.fs.FileIO;
+import org.apache.paimon.fs.Path;
 import org.apache.paimon.io.DataFileMeta;
 import org.apache.paimon.io.DataFileMetaSerializer;
 import org.apache.paimon.predicate.Predicate;
-import org.apache.paimon.file.utils.IteratorRecordReader;
-import org.apache.paimon.file.utils.SnapshotManager;
-import org.apache.paimon.fs.FileIO;
-import org.apache.paimon.fs.Path;
 import org.apache.paimon.reader.RecordReader;
 import org.apache.paimon.table.DataTable;
 import org.apache.paimon.table.FileStoreTable;
@@ -45,6 +43,8 @@ import org.apache.paimon.types.DataField;
 import org.apache.paimon.types.IntType;
 import org.apache.paimon.types.RowType;
 import org.apache.paimon.types.VarBinaryType;
+import org.apache.paimon.utils.IteratorRecordReader;
+import org.apache.paimon.utils.SnapshotManager;
 
 import java.io.IOException;
 import java.util.ArrayList;
diff --git a/paimon-core/src/main/java/org/apache/paimon/table/system/FilesTable.java b/paimon-core/src/main/java/org/apache/paimon/table/system/FilesTable.java
index c74a4d13d..c3e9615f7 100644
--- a/paimon-core/src/main/java/org/apache/paimon/table/system/FilesTable.java
+++ b/paimon-core/src/main/java/org/apache/paimon/table/system/FilesTable.java
@@ -23,18 +23,16 @@ import org.apache.flink.shaded.guava30.com.google.common.collect.Iterators;
 import org.apache.paimon.data.BinaryString;
 import org.apache.paimon.data.InternalRow;
 import org.apache.paimon.data.LazyGenericRow;
+import org.apache.paimon.format.FieldStats;
 import org.apache.paimon.io.DataFileMeta;
 import org.apache.paimon.io.DataFilePathFactory;
 import org.apache.paimon.predicate.Predicate;
+import org.apache.paimon.reader.RecordReader;
 import org.apache.paimon.schema.SchemaManager;
 import org.apache.paimon.schema.TableSchema;
-import org.apache.paimon.file.stats.BinaryTableStats;
-import org.apache.paimon.file.stats.FieldStatsArraySerializer;
-import org.apache.paimon.file.stats.FieldStatsConverters;
-import org.apache.paimon.file.utils.IteratorRecordReader;
-import org.apache.paimon.file.utils.SerializationUtils;
-import org.apache.paimon.format.FieldStats;
-import org.apache.paimon.reader.RecordReader;
+import org.apache.paimon.stats.BinaryTableStats;
+import org.apache.paimon.stats.FieldStatsArraySerializer;
+import org.apache.paimon.stats.FieldStatsConverters;
 import org.apache.paimon.table.FileStoreTable;
 import org.apache.paimon.table.ReadonlyTable;
 import org.apache.paimon.table.Table;
@@ -49,8 +47,10 @@ import org.apache.paimon.types.DataField;
 import org.apache.paimon.types.DataTypes;
 import org.apache.paimon.types.IntType;
 import org.apache.paimon.types.RowType;
+import org.apache.paimon.utils.IteratorRecordReader;
 import org.apache.paimon.utils.ProjectedRow;
 import org.apache.paimon.utils.RowDataToObjectArrayConverter;
+import org.apache.paimon.utils.SerializationUtils;
 
 import javax.annotation.Nullable;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/table/system/OptionsTable.java b/paimon-core/src/main/java/org/apache/paimon/table/system/OptionsTable.java
index 495f466dd..c82b8c8c6 100644
--- a/paimon-core/src/main/java/org/apache/paimon/table/system/OptionsTable.java
+++ b/paimon-core/src/main/java/org/apache/paimon/table/system/OptionsTable.java
@@ -23,12 +23,11 @@ import org.apache.flink.shaded.guava30.com.google.common.collect.Iterators;
 import org.apache.paimon.data.BinaryString;
 import org.apache.paimon.data.GenericRow;
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.predicate.Predicate;
-import org.apache.paimon.schema.SchemaManager;
-import org.apache.paimon.file.utils.IteratorRecordReader;
 import org.apache.paimon.fs.FileIO;
 import org.apache.paimon.fs.Path;
+import org.apache.paimon.predicate.Predicate;
 import org.apache.paimon.reader.RecordReader;
+import org.apache.paimon.schema.SchemaManager;
 import org.apache.paimon.table.ReadonlyTable;
 import org.apache.paimon.table.Table;
 import org.apache.paimon.table.source.InnerTableRead;
@@ -37,6 +36,7 @@ import org.apache.paimon.table.source.ReadOnceTableScan;
 import org.apache.paimon.table.source.Split;
 import org.apache.paimon.types.DataField;
 import org.apache.paimon.types.RowType;
+import org.apache.paimon.utils.IteratorRecordReader;
 import org.apache.paimon.utils.ProjectedRow;
 
 import java.io.IOException;
@@ -47,7 +47,7 @@ import java.util.Map;
 import java.util.Objects;
 
 import static org.apache.paimon.catalog.Catalog.SYSTEM_TABLE_SPLITTER;
-import static org.apache.paimon.file.utils.SerializationUtils.newStringType;
+import static org.apache.paimon.utils.SerializationUtils.newStringType;
 
 /** A {@link Table} for showing options of table. */
 public class OptionsTable implements ReadonlyTable {
diff --git a/paimon-core/src/main/java/org/apache/paimon/table/system/SchemasTable.java b/paimon-core/src/main/java/org/apache/paimon/table/system/SchemasTable.java
index f26bc9299..ec529e661 100644
--- a/paimon-core/src/main/java/org/apache/paimon/table/system/SchemasTable.java
+++ b/paimon-core/src/main/java/org/apache/paimon/table/system/SchemasTable.java
@@ -23,15 +23,12 @@ import org.apache.flink.shaded.guava30.com.google.common.collect.Iterators;
 import org.apache.paimon.data.BinaryString;
 import org.apache.paimon.data.GenericRow;
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.predicate.Predicate;
-import org.apache.paimon.schema.SchemaManager;
-import org.apache.paimon.schema.TableSchema;
-import org.apache.paimon.file.utils.IteratorRecordReader;
-import org.apache.paimon.file.utils.JsonSerdeUtil;
-import org.apache.paimon.file.utils.SerializationUtils;
 import org.apache.paimon.fs.FileIO;
 import org.apache.paimon.fs.Path;
+import org.apache.paimon.predicate.Predicate;
 import org.apache.paimon.reader.RecordReader;
+import org.apache.paimon.schema.SchemaManager;
+import org.apache.paimon.schema.TableSchema;
 import org.apache.paimon.table.ReadonlyTable;
 import org.apache.paimon.table.Table;
 import org.apache.paimon.table.source.InnerTableRead;
@@ -42,7 +39,10 @@ import org.apache.paimon.table.source.TableRead;
 import org.apache.paimon.types.BigIntType;
 import org.apache.paimon.types.DataField;
 import org.apache.paimon.types.RowType;
+import org.apache.paimon.utils.IteratorRecordReader;
+import org.apache.paimon.utils.JsonSerdeUtil;
 import org.apache.paimon.utils.ProjectedRow;
+import org.apache.paimon.utils.SerializationUtils;
 
 import java.io.IOException;
 import java.util.Arrays;
diff --git a/paimon-core/src/main/java/org/apache/paimon/table/system/SnapshotsTable.java b/paimon-core/src/main/java/org/apache/paimon/table/system/SnapshotsTable.java
index 424a760b0..210b6b238 100644
--- a/paimon-core/src/main/java/org/apache/paimon/table/system/SnapshotsTable.java
+++ b/paimon-core/src/main/java/org/apache/paimon/table/system/SnapshotsTable.java
@@ -20,17 +20,14 @@ package org.apache.paimon.table.system;
 
 import org.apache.flink.shaded.guava30.com.google.common.collect.Iterators;
 
+import org.apache.paimon.Snapshot;
 import org.apache.paimon.data.BinaryString;
 import org.apache.paimon.data.GenericRow;
 import org.apache.paimon.data.InternalRow;
 import org.apache.paimon.data.Timestamp;
-import org.apache.paimon.file.Snapshot;
-import org.apache.paimon.predicate.Predicate;
-import org.apache.paimon.file.utils.IteratorRecordReader;
-import org.apache.paimon.file.utils.SerializationUtils;
-import org.apache.paimon.file.utils.SnapshotManager;
 import org.apache.paimon.fs.FileIO;
 import org.apache.paimon.fs.Path;
+import org.apache.paimon.predicate.Predicate;
 import org.apache.paimon.reader.RecordReader;
 import org.apache.paimon.table.ReadonlyTable;
 import org.apache.paimon.table.Table;
@@ -42,7 +39,10 @@ import org.apache.paimon.types.BigIntType;
 import org.apache.paimon.types.DataField;
 import org.apache.paimon.types.RowType;
 import org.apache.paimon.types.TimestampType;
+import org.apache.paimon.utils.IteratorRecordReader;
 import org.apache.paimon.utils.ProjectedRow;
+import org.apache.paimon.utils.SerializationUtils;
+import org.apache.paimon.utils.SnapshotManager;
 
 import java.io.IOException;
 import java.time.Instant;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/utils/BulkFormatMapping.java b/paimon-core/src/main/java/org/apache/paimon/utils/BulkFormatMapping.java
similarity index 98%
rename from paimon-core/src/main/java/org/apache/paimon/file/utils/BulkFormatMapping.java
rename to paimon-core/src/main/java/org/apache/paimon/utils/BulkFormatMapping.java
index 73114f7b9..3b6488c6c 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/utils/BulkFormatMapping.java
+++ b/paimon-core/src/main/java/org/apache/paimon/utils/BulkFormatMapping.java
@@ -16,20 +16,19 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.utils;
+package org.apache.paimon.utils;
 
-import org.apache.paimon.file.KeyValue;
+import org.apache.paimon.KeyValue;
 import org.apache.paimon.casting.CastFieldGetter;
+import org.apache.paimon.format.FileFormatDiscover;
+import org.apache.paimon.format.FormatReaderFactory;
 import org.apache.paimon.predicate.Predicate;
 import org.apache.paimon.schema.IndexCastMapping;
 import org.apache.paimon.schema.KeyValueFieldsExtractor;
 import org.apache.paimon.schema.SchemaEvolutionUtil;
 import org.apache.paimon.schema.TableSchema;
-import org.apache.paimon.format.FileFormatDiscover;
-import org.apache.paimon.format.FormatReaderFactory;
 import org.apache.paimon.types.DataField;
 import org.apache.paimon.types.RowType;
-import org.apache.paimon.utils.Projection;
 
 import javax.annotation.Nullable;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/utils/CommitIncrement.java b/paimon-core/src/main/java/org/apache/paimon/utils/CommitIncrement.java
similarity index 97%
rename from paimon-core/src/main/java/org/apache/paimon/file/utils/CommitIncrement.java
rename to paimon-core/src/main/java/org/apache/paimon/utils/CommitIncrement.java
index 6f647c949..da94eec17 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/utils/CommitIncrement.java
+++ b/paimon-core/src/main/java/org/apache/paimon/utils/CommitIncrement.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.utils;
+package org.apache.paimon.utils;
 
 import org.apache.paimon.io.CompactIncrement;
 import org.apache.paimon.io.NewFilesIncrement;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/utils/ExecutorThreadFactory.java b/paimon-core/src/main/java/org/apache/paimon/utils/ExecutorThreadFactory.java
similarity index 99%
rename from paimon-core/src/main/java/org/apache/paimon/file/utils/ExecutorThreadFactory.java
rename to paimon-core/src/main/java/org/apache/paimon/utils/ExecutorThreadFactory.java
index d04395204..d4b2261ea 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/utils/ExecutorThreadFactory.java
+++ b/paimon-core/src/main/java/org/apache/paimon/utils/ExecutorThreadFactory.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.utils;
+package org.apache.paimon.utils;
 
 import javax.annotation.Nullable;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/utils/FatalExitExceptionHandler.java b/paimon-core/src/main/java/org/apache/paimon/utils/FatalExitExceptionHandler.java
similarity index 97%
rename from paimon-core/src/main/java/org/apache/paimon/file/utils/FatalExitExceptionHandler.java
rename to paimon-core/src/main/java/org/apache/paimon/utils/FatalExitExceptionHandler.java
index c84d0a48c..095d0819c 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/utils/FatalExitExceptionHandler.java
+++ b/paimon-core/src/main/java/org/apache/paimon/utils/FatalExitExceptionHandler.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.utils;
+package org.apache.paimon.utils;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/utils/FileStorePathFactory.java b/paimon-core/src/main/java/org/apache/paimon/utils/FileStorePathFactory.java
similarity index 98%
rename from paimon-core/src/main/java/org/apache/paimon/file/utils/FileStorePathFactory.java
rename to paimon-core/src/main/java/org/apache/paimon/utils/FileStorePathFactory.java
index 32bff8b65..6482ac839 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/utils/FileStorePathFactory.java
+++ b/paimon-core/src/main/java/org/apache/paimon/utils/FileStorePathFactory.java
@@ -16,16 +16,15 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.utils;
+package org.apache.paimon.utils;
 
 import org.apache.paimon.CoreOptions;
 import org.apache.paimon.annotation.VisibleForTesting;
 import org.apache.paimon.data.BinaryRow;
-import org.apache.paimon.io.DataFilePathFactory;
 import org.apache.paimon.fs.Path;
+import org.apache.paimon.io.DataFilePathFactory;
 import org.apache.paimon.options.ConfigOption;
 import org.apache.paimon.types.RowType;
-import org.apache.paimon.utils.Preconditions;
 
 import javax.annotation.concurrent.ThreadSafe;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/utils/FileUtils.java b/paimon-core/src/main/java/org/apache/paimon/utils/FileUtils.java
similarity index 99%
rename from paimon-core/src/main/java/org/apache/paimon/file/utils/FileUtils.java
rename to paimon-core/src/main/java/org/apache/paimon/utils/FileUtils.java
index 1e6a6c05f..3c12aa85f 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/utils/FileUtils.java
+++ b/paimon-core/src/main/java/org/apache/paimon/utils/FileUtils.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.utils;
+package org.apache.paimon.utils;
 
 import org.apache.paimon.data.InternalRow;
 import org.apache.paimon.format.FormatReaderFactory;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/utils/IteratorRecordReader.java b/paimon-core/src/main/java/org/apache/paimon/utils/IteratorRecordReader.java
similarity index 98%
rename from paimon-core/src/main/java/org/apache/paimon/file/utils/IteratorRecordReader.java
rename to paimon-core/src/main/java/org/apache/paimon/utils/IteratorRecordReader.java
index 795794c5b..20b95c9c6 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/utils/IteratorRecordReader.java
+++ b/paimon-core/src/main/java/org/apache/paimon/utils/IteratorRecordReader.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.utils;
+package org.apache.paimon.utils;
 
 import org.apache.paimon.reader.RecordReader;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/utils/JsonDeserializer.java b/paimon-core/src/main/java/org/apache/paimon/utils/JsonDeserializer.java
similarity index 96%
rename from paimon-core/src/main/java/org/apache/paimon/file/utils/JsonDeserializer.java
rename to paimon-core/src/main/java/org/apache/paimon/utils/JsonDeserializer.java
index 50a679120..365be6467 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/utils/JsonDeserializer.java
+++ b/paimon-core/src/main/java/org/apache/paimon/utils/JsonDeserializer.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.utils;
+package org.apache.paimon.utils;
 
 import org.apache.flink.shaded.jackson2.com.fasterxml.jackson.databind.JsonNode;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/utils/JsonSerdeUtil.java b/paimon-core/src/main/java/org/apache/paimon/utils/JsonSerdeUtil.java
similarity index 99%
rename from paimon-core/src/main/java/org/apache/paimon/file/utils/JsonSerdeUtil.java
rename to paimon-core/src/main/java/org/apache/paimon/utils/JsonSerdeUtil.java
index 9c64554ed..d088ea060 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/utils/JsonSerdeUtil.java
+++ b/paimon-core/src/main/java/org/apache/paimon/utils/JsonSerdeUtil.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.utils;
+package org.apache.paimon.utils;
 
 import org.apache.flink.shaded.jackson2.com.fasterxml.jackson.core.JsonGenerator;
 import org.apache.flink.shaded.jackson2.com.fasterxml.jackson.core.JsonParser;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/utils/JsonSerializer.java b/paimon-core/src/main/java/org/apache/paimon/utils/JsonSerializer.java
similarity index 96%
rename from paimon-core/src/main/java/org/apache/paimon/file/utils/JsonSerializer.java
rename to paimon-core/src/main/java/org/apache/paimon/utils/JsonSerializer.java
index 24de81007..f7112c693 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/utils/JsonSerializer.java
+++ b/paimon-core/src/main/java/org/apache/paimon/utils/JsonSerializer.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.utils;
+package org.apache.paimon.utils;
 
 import org.apache.flink.shaded.jackson2.com.fasterxml.jackson.core.JsonGenerator;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/utils/KeyComparatorSupplier.java b/paimon-core/src/main/java/org/apache/paimon/utils/KeyComparatorSupplier.java
similarity index 97%
rename from paimon-core/src/main/java/org/apache/paimon/file/utils/KeyComparatorSupplier.java
rename to paimon-core/src/main/java/org/apache/paimon/utils/KeyComparatorSupplier.java
index aa4ddfdbb..88589cc81 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/utils/KeyComparatorSupplier.java
+++ b/paimon-core/src/main/java/org/apache/paimon/utils/KeyComparatorSupplier.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.utils;
+package org.apache.paimon.utils;
 
 import org.apache.paimon.codegen.CodeGenUtils;
 import org.apache.paimon.codegen.GeneratedClass;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/utils/MutableObjectIterator.java b/paimon-core/src/main/java/org/apache/paimon/utils/MutableObjectIterator.java
similarity index 98%
rename from paimon-core/src/main/java/org/apache/paimon/file/utils/MutableObjectIterator.java
rename to paimon-core/src/main/java/org/apache/paimon/utils/MutableObjectIterator.java
index 30de0f8fc..8aec5e1a8 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/utils/MutableObjectIterator.java
+++ b/paimon-core/src/main/java/org/apache/paimon/utils/MutableObjectIterator.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.utils;
+package org.apache.paimon.utils;
 
 import java.io.IOException;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/utils/ObjectSerializer.java b/paimon-core/src/main/java/org/apache/paimon/utils/ObjectSerializer.java
similarity index 99%
rename from paimon-core/src/main/java/org/apache/paimon/file/utils/ObjectSerializer.java
rename to paimon-core/src/main/java/org/apache/paimon/utils/ObjectSerializer.java
index c31f77c3a..77644ab74 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/utils/ObjectSerializer.java
+++ b/paimon-core/src/main/java/org/apache/paimon/utils/ObjectSerializer.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.utils;
+package org.apache.paimon.utils;
 
 import org.apache.paimon.data.InternalRow;
 import org.apache.paimon.data.serializer.InternalRowSerializer;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/utils/OffsetRow.java b/paimon-core/src/main/java/org/apache/paimon/utils/OffsetRow.java
similarity index 98%
rename from paimon-core/src/main/java/org/apache/paimon/file/utils/OffsetRow.java
rename to paimon-core/src/main/java/org/apache/paimon/utils/OffsetRow.java
index 50085b7a2..4078e2b92 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/utils/OffsetRow.java
+++ b/paimon-core/src/main/java/org/apache/paimon/utils/OffsetRow.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.utils;
+package org.apache.paimon.utils;
 
 import org.apache.paimon.data.BinaryString;
 import org.apache.paimon.data.Decimal;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/utils/PartitionPathUtils.java b/paimon-core/src/main/java/org/apache/paimon/utils/PartitionPathUtils.java
similarity index 99%
rename from paimon-core/src/main/java/org/apache/paimon/file/utils/PartitionPathUtils.java
rename to paimon-core/src/main/java/org/apache/paimon/utils/PartitionPathUtils.java
index 0b99bbc43..113c15daa 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/utils/PartitionPathUtils.java
+++ b/paimon-core/src/main/java/org/apache/paimon/utils/PartitionPathUtils.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.utils;
+package org.apache.paimon.utils;
 
 import org.apache.paimon.fs.Path;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/utils/RecordWriter.java b/paimon-core/src/main/java/org/apache/paimon/utils/RecordWriter.java
similarity index 98%
rename from paimon-core/src/main/java/org/apache/paimon/file/utils/RecordWriter.java
rename to paimon-core/src/main/java/org/apache/paimon/utils/RecordWriter.java
index f912e1b96..0c3b93a76 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/utils/RecordWriter.java
+++ b/paimon-core/src/main/java/org/apache/paimon/utils/RecordWriter.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.utils;
+package org.apache.paimon.utils;
 
 import org.apache.paimon.io.DataFileMeta;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/utils/Restorable.java b/paimon-core/src/main/java/org/apache/paimon/utils/Restorable.java
similarity index 96%
rename from paimon-core/src/main/java/org/apache/paimon/file/utils/Restorable.java
rename to paimon-core/src/main/java/org/apache/paimon/utils/Restorable.java
index 349074315..4ca8b7637 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/utils/Restorable.java
+++ b/paimon-core/src/main/java/org/apache/paimon/utils/Restorable.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.utils;
+package org.apache.paimon.utils;
 
 /**
  * Operations implementing this interface can checkpoint and restore their states between different
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/utils/RowDataPartitionComputer.java b/paimon-core/src/main/java/org/apache/paimon/utils/RowDataPartitionComputer.java
similarity index 95%
rename from paimon-core/src/main/java/org/apache/paimon/file/utils/RowDataPartitionComputer.java
rename to paimon-core/src/main/java/org/apache/paimon/utils/RowDataPartitionComputer.java
index 10aebfb52..33e49851e 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/utils/RowDataPartitionComputer.java
+++ b/paimon-core/src/main/java/org/apache/paimon/utils/RowDataPartitionComputer.java
@@ -16,12 +16,10 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.utils;
+package org.apache.paimon.utils;
 
 import org.apache.paimon.data.InternalRow;
 import org.apache.paimon.types.RowType;
-import org.apache.paimon.utils.RowDataUtils;
-import org.apache.paimon.utils.StringUtils;
 
 import java.util.Arrays;
 import java.util.LinkedHashMap;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/utils/SerializableSupplier.java b/paimon-core/src/main/java/org/apache/paimon/utils/SerializableSupplier.java
similarity index 96%
rename from paimon-core/src/main/java/org/apache/paimon/file/utils/SerializableSupplier.java
rename to paimon-core/src/main/java/org/apache/paimon/utils/SerializableSupplier.java
index 34bbde1b6..b482aa301 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/utils/SerializableSupplier.java
+++ b/paimon-core/src/main/java/org/apache/paimon/utils/SerializableSupplier.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.utils;
+package org.apache.paimon.utils;
 
 import java.io.Serializable;
 import java.util.function.Supplier;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/utils/SerializationUtils.java b/paimon-core/src/main/java/org/apache/paimon/utils/SerializationUtils.java
similarity index 99%
rename from paimon-core/src/main/java/org/apache/paimon/file/utils/SerializationUtils.java
rename to paimon-core/src/main/java/org/apache/paimon/utils/SerializationUtils.java
index 98c483337..f4b43c519 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/utils/SerializationUtils.java
+++ b/paimon-core/src/main/java/org/apache/paimon/utils/SerializationUtils.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.utils;
+package org.apache.paimon.utils;
 
 import org.apache.paimon.data.BinaryRow;
 import org.apache.paimon.io.DataInputView;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/utils/SnapshotManager.java b/paimon-core/src/main/java/org/apache/paimon/utils/SnapshotManager.java
similarity index 97%
rename from paimon-core/src/main/java/org/apache/paimon/file/utils/SnapshotManager.java
rename to paimon-core/src/main/java/org/apache/paimon/utils/SnapshotManager.java
index efd34894f..c0bf6a73f 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/utils/SnapshotManager.java
+++ b/paimon-core/src/main/java/org/apache/paimon/utils/SnapshotManager.java
@@ -16,12 +16,11 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.utils;
+package org.apache.paimon.utils;
 
-import org.apache.paimon.file.Snapshot;
+import org.apache.paimon.Snapshot;
 import org.apache.paimon.fs.FileIO;
 import org.apache.paimon.fs.Path;
-import org.apache.paimon.utils.Preconditions;
 
 import javax.annotation.Nullable;
 
@@ -32,7 +31,7 @@ import java.util.Optional;
 import java.util.concurrent.TimeUnit;
 import java.util.function.BinaryOperator;
 
-import static org.apache.paimon.file.utils.FileUtils.listVersionedFiles;
+import static org.apache.paimon.utils.FileUtils.listVersionedFiles;
 
 /** Manager for {@link Snapshot}, providing utility methods related to paths and snapshot hints. */
 public class SnapshotManager implements Serializable {
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/utils/VersionedObjectSerializer.java b/paimon-core/src/main/java/org/apache/paimon/utils/VersionedObjectSerializer.java
similarity index 98%
rename from paimon-core/src/main/java/org/apache/paimon/file/utils/VersionedObjectSerializer.java
rename to paimon-core/src/main/java/org/apache/paimon/utils/VersionedObjectSerializer.java
index 377b05bbf..30047afdf 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/utils/VersionedObjectSerializer.java
+++ b/paimon-core/src/main/java/org/apache/paimon/utils/VersionedObjectSerializer.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.utils;
+package org.apache.paimon.utils;
 
 import org.apache.paimon.data.GenericRow;
 import org.apache.paimon.data.InternalRow;
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/FileFormatTest.java b/paimon-core/src/test/java/org/apache/paimon/FileFormatTest.java
similarity index 98%
rename from paimon-core/src/test/java/org/apache/paimon/file/FileFormatTest.java
rename to paimon-core/src/test/java/org/apache/paimon/FileFormatTest.java
index b611f4636..558f581e5 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/FileFormatTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/FileFormatTest.java
@@ -16,9 +16,8 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file;
+package org.apache.paimon;
 
-import org.apache.paimon.CoreOptions;
 import org.apache.paimon.data.GenericRow;
 import org.apache.paimon.data.InternalRow;
 import org.apache.paimon.format.FileFormat;
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/KeyValueSerializerTest.java b/paimon-core/src/test/java/org/apache/paimon/KeyValueSerializerTest.java
similarity index 94%
rename from paimon-core/src/test/java/org/apache/paimon/file/KeyValueSerializerTest.java
rename to paimon-core/src/test/java/org/apache/paimon/KeyValueSerializerTest.java
index 231a2a31e..6618edd5c 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/KeyValueSerializerTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/KeyValueSerializerTest.java
@@ -16,11 +16,11 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file;
+package org.apache.paimon;
 
 import org.apache.paimon.data.serializer.InternalRowSerializer;
-import org.apache.paimon.file.utils.ObjectSerializer;
-import org.apache.paimon.file.utils.ObjectSerializerTestBase;
+import org.apache.paimon.utils.ObjectSerializer;
+import org.apache.paimon.utils.ObjectSerializerTestBase;
 
 import static org.assertj.core.api.Assertions.assertThat;
 
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/TestFileStore.java b/paimon-core/src/test/java/org/apache/paimon/TestFileStore.java
similarity index 98%
rename from paimon-core/src/test/java/org/apache/paimon/file/TestFileStore.java
rename to paimon-core/src/test/java/org/apache/paimon/TestFileStore.java
index 8288c0649..ac08fd7ff 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/TestFileStore.java
+++ b/paimon-core/src/test/java/org/apache/paimon/TestFileStore.java
@@ -16,11 +16,13 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file;
+package org.apache.paimon;
 
-import org.apache.paimon.CoreOptions;
 import org.apache.paimon.data.BinaryRow;
 import org.apache.paimon.data.serializer.InternalRowSerializer;
+import org.apache.paimon.fs.FileIO;
+import org.apache.paimon.fs.FileIOFinder;
+import org.apache.paimon.fs.Path;
 import org.apache.paimon.io.DataFileMeta;
 import org.apache.paimon.manifest.ManifestCommittable;
 import org.apache.paimon.manifest.ManifestEntry;
@@ -36,21 +38,18 @@ import org.apache.paimon.operation.FileStoreExpireImpl;
 import org.apache.paimon.operation.FileStoreRead;
 import org.apache.paimon.operation.FileStoreScan;
 import org.apache.paimon.operation.ScanKind;
-import org.apache.paimon.schema.KeyValueFieldsExtractor;
-import org.apache.paimon.schema.SchemaManager;
-import org.apache.paimon.file.utils.CommitIncrement;
-import org.apache.paimon.file.utils.FileStorePathFactory;
-import org.apache.paimon.file.utils.RecordWriter;
-import org.apache.paimon.file.utils.SnapshotManager;
-import org.apache.paimon.fs.FileIO;
-import org.apache.paimon.fs.FileIOFinder;
-import org.apache.paimon.fs.Path;
 import org.apache.paimon.options.MemorySize;
 import org.apache.paimon.options.Options;
 import org.apache.paimon.reader.RecordReaderIterator;
+import org.apache.paimon.schema.KeyValueFieldsExtractor;
+import org.apache.paimon.schema.SchemaManager;
 import org.apache.paimon.table.sink.CommitMessageImpl;
 import org.apache.paimon.table.source.DataSplit;
 import org.apache.paimon.types.RowType;
+import org.apache.paimon.utils.CommitIncrement;
+import org.apache.paimon.utils.FileStorePathFactory;
+import org.apache.paimon.utils.RecordWriter;
+import org.apache.paimon.utils.SnapshotManager;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/TestKeyValueGenerator.java b/paimon-core/src/test/java/org/apache/paimon/TestKeyValueGenerator.java
similarity index 97%
rename from paimon-core/src/test/java/org/apache/paimon/file/TestKeyValueGenerator.java
rename to paimon-core/src/test/java/org/apache/paimon/TestKeyValueGenerator.java
index f97cc9590..eb5590679 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/TestKeyValueGenerator.java
+++ b/paimon-core/src/test/java/org/apache/paimon/TestKeyValueGenerator.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file;
+package org.apache.paimon;
 
 import org.apache.paimon.codegen.RecordComparator;
 import org.apache.paimon.data.BinaryRow;
@@ -25,10 +25,10 @@ import org.apache.paimon.data.GenericArray;
 import org.apache.paimon.data.GenericRow;
 import org.apache.paimon.data.InternalRow;
 import org.apache.paimon.data.serializer.InternalRowSerializer;
+import org.apache.paimon.fs.Path;
 import org.apache.paimon.schema.KeyValueFieldsExtractor;
 import org.apache.paimon.schema.SchemaManager;
 import org.apache.paimon.schema.TableSchema;
-import org.apache.paimon.fs.Path;
 import org.apache.paimon.table.SchemaEvolutionTableTestBase;
 import org.apache.paimon.types.ArrayType;
 import org.apache.paimon.types.BigIntType;
@@ -50,9 +50,9 @@ import java.util.Map;
 import java.util.Random;
 import java.util.stream.Collectors;
 
-import static org.apache.paimon.file.TestKeyValueGenerator.GeneratorMode.MULTI_PARTITIONED;
-import static org.apache.paimon.file.TestKeyValueGenerator.GeneratorMode.NON_PARTITIONED;
-import static org.apache.paimon.file.TestKeyValueGenerator.GeneratorMode.SINGLE_PARTITIONED;
+import static org.apache.paimon.TestKeyValueGenerator.GeneratorMode.MULTI_PARTITIONED;
+import static org.apache.paimon.TestKeyValueGenerator.GeneratorMode.NON_PARTITIONED;
+import static org.apache.paimon.TestKeyValueGenerator.GeneratorMode.SINGLE_PARTITIONED;
 
 /** Random {@link KeyValue} generator. */
 public class TestKeyValueGenerator {
diff --git a/paimon-core/src/test/java/org/apache/paimon/append/AppendOnlyCompactManagerTest.java b/paimon-core/src/test/java/org/apache/paimon/append/AppendOnlyCompactManagerTest.java
index 4f9753749..a61ffb2af 100644
--- a/paimon-core/src/test/java/org/apache/paimon/append/AppendOnlyCompactManagerTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/append/AppendOnlyCompactManagerTest.java
@@ -18,8 +18,8 @@
 
 package org.apache.paimon.append;
 
-import org.apache.paimon.io.DataFileMeta;
 import org.apache.paimon.fs.local.LocalFileIO;
+import org.apache.paimon.io.DataFileMeta;
 import org.junit.jupiter.api.Test;
 
 import java.util.Arrays;
diff --git a/paimon-core/src/test/java/org/apache/paimon/append/AppendOnlyWriterTest.java b/paimon-core/src/test/java/org/apache/paimon/append/AppendOnlyWriterTest.java
index 5f65670e4..7012a435e 100644
--- a/paimon-core/src/test/java/org/apache/paimon/append/AppendOnlyWriterTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/append/AppendOnlyWriterTest.java
@@ -24,22 +24,22 @@ import org.apache.paimon.data.BinaryRow;
 import org.apache.paimon.data.BinaryString;
 import org.apache.paimon.data.GenericRow;
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.io.DataFileMeta;
-import org.apache.paimon.io.DataFilePathFactory;
-import org.apache.paimon.file.stats.FieldStatsArraySerializer;
-import org.apache.paimon.file.utils.CommitIncrement;
-import org.apache.paimon.file.utils.ExecutorThreadFactory;
-import org.apache.paimon.file.utils.RecordWriter;
 import org.apache.paimon.format.FieldStats;
 import org.apache.paimon.format.FileFormat;
 import org.apache.paimon.fs.Path;
 import org.apache.paimon.fs.local.LocalFileIO;
+import org.apache.paimon.io.DataFileMeta;
+import org.apache.paimon.io.DataFilePathFactory;
 import org.apache.paimon.options.Options;
+import org.apache.paimon.stats.FieldStatsArraySerializer;
 import org.apache.paimon.types.DataType;
 import org.apache.paimon.types.IntType;
 import org.apache.paimon.types.RowType;
 import org.apache.paimon.types.VarCharType;
+import org.apache.paimon.utils.CommitIncrement;
+import org.apache.paimon.utils.ExecutorThreadFactory;
 import org.apache.paimon.utils.Pair;
+import org.apache.paimon.utils.RecordWriter;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.io.TempDir;
diff --git a/paimon-core/src/test/java/org/apache/paimon/append/IterativeCompactTaskTest.java b/paimon-core/src/test/java/org/apache/paimon/append/IterativeCompactTaskTest.java
index e896ea5c3..3d1aab8c7 100644
--- a/paimon-core/src/test/java/org/apache/paimon/append/IterativeCompactTaskTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/append/IterativeCompactTaskTest.java
@@ -19,8 +19,8 @@
 package org.apache.paimon.append;
 
 import org.apache.paimon.compact.CompactResult;
-import org.apache.paimon.io.DataFileMeta;
 import org.apache.paimon.fs.local.LocalFileIO;
+import org.apache.paimon.io.DataFileMeta;
 import org.junit.jupiter.api.Test;
 
 import java.util.ArrayList;
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/format/FileFormatSuffixTest.java b/paimon-core/src/test/java/org/apache/paimon/format/FileFormatSuffixTest.java
similarity index 96%
rename from paimon-core/src/test/java/org/apache/paimon/file/format/FileFormatSuffixTest.java
rename to paimon-core/src/test/java/org/apache/paimon/format/FileFormatSuffixTest.java
index 0519a7b36..6c2e4b272 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/format/FileFormatSuffixTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/format/FileFormatSuffixTest.java
@@ -16,25 +16,24 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.format;
+package org.apache.paimon.format;
 
-import org.apache.paimon.data.BinaryString;
-import org.apache.paimon.data.GenericRow;
 import org.apache.paimon.append.AppendOnlyCompactManager;
 import org.apache.paimon.append.AppendOnlyWriter;
+import org.apache.paimon.data.BinaryString;
+import org.apache.paimon.data.GenericRow;
+import org.apache.paimon.fs.Path;
+import org.apache.paimon.fs.local.LocalFileIO;
 import org.apache.paimon.io.DataFileMeta;
 import org.apache.paimon.io.DataFilePathFactory;
 import org.apache.paimon.io.KeyValueFileReadWriteTest;
 import org.apache.paimon.io.KeyValueFileWriterFactory;
-import org.apache.paimon.file.utils.CommitIncrement;
-import org.apache.paimon.format.FileFormat;
-import org.apache.paimon.fs.Path;
-import org.apache.paimon.fs.local.LocalFileIO;
 import org.apache.paimon.options.Options;
 import org.apache.paimon.types.DataType;
 import org.apache.paimon.types.IntType;
 import org.apache.paimon.types.RowType;
 import org.apache.paimon.types.VarCharType;
+import org.apache.paimon.utils.CommitIncrement;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.io.TempDir;
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/format/FileStatsExtractingAvroFormat.java b/paimon-core/src/test/java/org/apache/paimon/format/FileStatsExtractingAvroFormat.java
similarity index 86%
rename from paimon-core/src/test/java/org/apache/paimon/file/format/FileStatsExtractingAvroFormat.java
rename to paimon-core/src/test/java/org/apache/paimon/format/FileStatsExtractingAvroFormat.java
index 3ddc2c5ab..6d219990c 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/format/FileStatsExtractingAvroFormat.java
+++ b/paimon-core/src/test/java/org/apache/paimon/format/FileStatsExtractingAvroFormat.java
@@ -16,15 +16,11 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.format;
+package org.apache.paimon.format;
 
-import org.apache.paimon.predicate.Predicate;
-import org.apache.paimon.file.stats.TestFileStatsExtractor;
-import org.apache.paimon.format.FileFormat;
-import org.apache.paimon.format.FileStatsExtractor;
-import org.apache.paimon.format.FormatReaderFactory;
-import org.apache.paimon.format.FormatWriterFactory;
 import org.apache.paimon.options.Options;
+import org.apache.paimon.predicate.Predicate;
+import org.apache.paimon.stats.TestFileStatsExtractor;
 import org.apache.paimon.types.RowType;
 
 import javax.annotation.Nullable;
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/format/FileStatsExtractingAvroFormatFactory.java b/paimon-core/src/test/java/org/apache/paimon/format/FileStatsExtractingAvroFormatFactory.java
similarity index 90%
rename from paimon-core/src/test/java/org/apache/paimon/file/format/FileStatsExtractingAvroFormatFactory.java
rename to paimon-core/src/test/java/org/apache/paimon/format/FileStatsExtractingAvroFormatFactory.java
index 14787aef6..db9c3b0aa 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/format/FileStatsExtractingAvroFormatFactory.java
+++ b/paimon-core/src/test/java/org/apache/paimon/format/FileStatsExtractingAvroFormatFactory.java
@@ -16,10 +16,8 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.format;
+package org.apache.paimon.format;
 
-import org.apache.paimon.format.FileFormat;
-import org.apache.paimon.format.FileFormatFactory;
 import org.apache.paimon.options.Options;
 
 /** Factory to create {@link FileStatsExtractingAvroFormat}. */
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/format/FlushingFileFormat.java b/paimon-core/src/test/java/org/apache/paimon/format/FlushingFileFormat.java
similarity index 91%
rename from paimon-core/src/test/java/org/apache/paimon/file/format/FlushingFileFormat.java
rename to paimon-core/src/test/java/org/apache/paimon/format/FlushingFileFormat.java
index e0044d977..b63396cac 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/format/FlushingFileFormat.java
+++ b/paimon-core/src/test/java/org/apache/paimon/format/FlushingFileFormat.java
@@ -16,15 +16,11 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.format;
+package org.apache.paimon.format;
 
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.predicate.Predicate;
-import org.apache.paimon.format.FileFormat;
-import org.apache.paimon.format.FormatReaderFactory;
-import org.apache.paimon.format.FormatWriter;
-import org.apache.paimon.format.FormatWriterFactory;
 import org.apache.paimon.options.Options;
+import org.apache.paimon.predicate.Predicate;
 import org.apache.paimon.types.RowType;
 
 import javax.annotation.Nullable;
diff --git a/paimon-core/src/test/java/org/apache/paimon/io/DataFileMetaSerializerTest.java b/paimon-core/src/test/java/org/apache/paimon/io/DataFileMetaSerializerTest.java
index e5686d875..715a4ac51 100644
--- a/paimon-core/src/test/java/org/apache/paimon/io/DataFileMetaSerializerTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/io/DataFileMetaSerializerTest.java
@@ -18,7 +18,7 @@
 
 package org.apache.paimon.io;
 
-import org.apache.paimon.file.utils.ObjectSerializerTestBase;
+import org.apache.paimon.utils.ObjectSerializerTestBase;
 
 import java.util.Arrays;
 
diff --git a/paimon-core/src/test/java/org/apache/paimon/io/DataFileTestDataGenerator.java b/paimon-core/src/test/java/org/apache/paimon/io/DataFileTestDataGenerator.java
index 579335aa4..0765be376 100644
--- a/paimon-core/src/test/java/org/apache/paimon/io/DataFileTestDataGenerator.java
+++ b/paimon-core/src/test/java/org/apache/paimon/io/DataFileTestDataGenerator.java
@@ -18,11 +18,11 @@
 
 package org.apache.paimon.io;
 
+import org.apache.paimon.KeyValue;
+import org.apache.paimon.TestKeyValueGenerator;
 import org.apache.paimon.data.BinaryRow;
-import org.apache.paimon.file.KeyValue;
-import org.apache.paimon.file.TestKeyValueGenerator;
-import org.apache.paimon.file.stats.FieldStatsArraySerializer;
 import org.apache.paimon.format.FieldStatsCollector;
+import org.apache.paimon.stats.FieldStatsArraySerializer;
 
 import java.util.ArrayList;
 import java.util.HashMap;
diff --git a/paimon-core/src/test/java/org/apache/paimon/io/DataFileTestUtils.java b/paimon-core/src/test/java/org/apache/paimon/io/DataFileTestUtils.java
index 57eb7a597..062c3384a 100644
--- a/paimon-core/src/test/java/org/apache/paimon/io/DataFileTestUtils.java
+++ b/paimon-core/src/test/java/org/apache/paimon/io/DataFileTestUtils.java
@@ -21,7 +21,7 @@ package org.apache.paimon.io;
 import org.apache.paimon.data.BinaryRow;
 import org.apache.paimon.data.BinaryRowWriter;
 import org.apache.paimon.data.Timestamp;
-import org.apache.paimon.file.stats.StatsTestUtils;
+import org.apache.paimon.stats.StatsTestUtils;
 
 import java.util.Collections;
 
diff --git a/paimon-core/src/test/java/org/apache/paimon/io/KeyValueFileReadWriteTest.java b/paimon-core/src/test/java/org/apache/paimon/io/KeyValueFileReadWriteTest.java
index 8fffcb5bc..dfe1fc961 100644
--- a/paimon-core/src/test/java/org/apache/paimon/io/KeyValueFileReadWriteTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/io/KeyValueFileReadWriteTest.java
@@ -19,29 +19,29 @@
 package org.apache.paimon.io;
 
 import org.apache.paimon.CoreOptions;
+import org.apache.paimon.KeyValue;
+import org.apache.paimon.KeyValueSerializerTest;
+import org.apache.paimon.TestKeyValueGenerator;
 import org.apache.paimon.data.BinaryRow;
 import org.apache.paimon.data.GenericRow;
 import org.apache.paimon.data.serializer.InternalRowSerializer;
-import org.apache.paimon.file.KeyValue;
-import org.apache.paimon.file.KeyValueSerializerTest;
-import org.apache.paimon.file.TestKeyValueGenerator;
-import org.apache.paimon.file.format.FlushingFileFormat;
-import org.apache.paimon.file.stats.FieldStatsArraySerializer;
-import org.apache.paimon.file.stats.StatsTestUtils;
-import org.apache.paimon.file.utils.FailingFileIO;
-import org.apache.paimon.file.utils.FileStorePathFactory;
+import org.apache.paimon.format.FlushingFileFormat;
 import org.apache.paimon.fs.FileIO;
 import org.apache.paimon.fs.FileIOFinder;
 import org.apache.paimon.fs.FileStatus;
 import org.apache.paimon.fs.Path;
 import org.apache.paimon.fs.local.LocalFileIO;
 import org.apache.paimon.reader.RecordReaderIterator;
+import org.apache.paimon.stats.FieldStatsArraySerializer;
+import org.apache.paimon.stats.StatsTestUtils;
 import org.apache.paimon.types.BigIntType;
 import org.apache.paimon.types.DataType;
 import org.apache.paimon.types.IntType;
 import org.apache.paimon.types.RowType;
 import org.apache.paimon.types.VarCharType;
 import org.apache.paimon.utils.CloseableIterator;
+import org.apache.paimon.utils.FailingFileIO;
+import org.apache.paimon.utils.FileStorePathFactory;
 import org.junit.jupiter.api.RepeatedTest;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.io.TempDir;
@@ -53,7 +53,7 @@ import java.util.UUID;
 import java.util.concurrent.ThreadLocalRandom;
 import java.util.function.Function;
 
-import static org.apache.paimon.file.TestKeyValueGenerator.createTestSchemaManager;
+import static org.apache.paimon.TestKeyValueGenerator.createTestSchemaManager;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.assertThatThrownBy;
 
diff --git a/paimon-core/src/test/java/org/apache/paimon/manifest/ManifestCommittableSerializerTest.java b/paimon-core/src/test/java/org/apache/paimon/manifest/ManifestCommittableSerializerTest.java
index 1edf0b1f0..e78af68ad 100644
--- a/paimon-core/src/test/java/org/apache/paimon/manifest/ManifestCommittableSerializerTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/manifest/ManifestCommittableSerializerTest.java
@@ -34,7 +34,7 @@ import java.util.concurrent.ThreadLocalRandom;
 import java.util.concurrent.atomic.AtomicInteger;
 
 import static org.apache.paimon.mergetree.compact.MergeTreeCompactManagerTest.row;
-import static org.apache.paimon.file.stats.StatsTestUtils.newTableStats;
+import static org.apache.paimon.stats.StatsTestUtils.newTableStats;
 import static org.assertj.core.api.Assertions.assertThat;
 
 /** Test for {@link ManifestCommittableSerializer}. */
diff --git a/paimon-core/src/test/java/org/apache/paimon/manifest/ManifestEntrySerializerTest.java b/paimon-core/src/test/java/org/apache/paimon/manifest/ManifestEntrySerializerTest.java
index dbaf43e25..5609b9e21 100644
--- a/paimon-core/src/test/java/org/apache/paimon/manifest/ManifestEntrySerializerTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/manifest/ManifestEntrySerializerTest.java
@@ -18,8 +18,8 @@
 
 package org.apache.paimon.manifest;
 
-import org.apache.paimon.file.utils.ObjectSerializer;
-import org.apache.paimon.file.utils.ObjectSerializerTestBase;
+import org.apache.paimon.utils.ObjectSerializer;
+import org.apache.paimon.utils.ObjectSerializerTestBase;
 
 /** Tests for {@link ManifestEntrySerializerTest}. */
 public class ManifestEntrySerializerTest extends ObjectSerializerTestBase<ManifestEntry> {
diff --git a/paimon-core/src/test/java/org/apache/paimon/manifest/ManifestFileMetaSerializerTest.java b/paimon-core/src/test/java/org/apache/paimon/manifest/ManifestFileMetaSerializerTest.java
index 7f7b8925d..cbcd5b62a 100644
--- a/paimon-core/src/test/java/org/apache/paimon/manifest/ManifestFileMetaSerializerTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/manifest/ManifestFileMetaSerializerTest.java
@@ -18,8 +18,8 @@
 
 package org.apache.paimon.manifest;
 
-import org.apache.paimon.file.utils.ObjectSerializer;
-import org.apache.paimon.file.utils.ObjectSerializerTestBase;
+import org.apache.paimon.utils.ObjectSerializer;
+import org.apache.paimon.utils.ObjectSerializerTestBase;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/paimon-core/src/test/java/org/apache/paimon/manifest/ManifestFileMetaTest.java b/paimon-core/src/test/java/org/apache/paimon/manifest/ManifestFileMetaTest.java
index ce66f5fbc..8f8dadc3b 100644
--- a/paimon-core/src/test/java/org/apache/paimon/manifest/ManifestFileMetaTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/manifest/ManifestFileMetaTest.java
@@ -22,19 +22,19 @@ import org.apache.paimon.CoreOptions;
 import org.apache.paimon.data.BinaryRow;
 import org.apache.paimon.data.BinaryRowWriter;
 import org.apache.paimon.data.Timestamp;
-import org.apache.paimon.io.DataFileMeta;
-import org.apache.paimon.schema.SchemaManager;
-import org.apache.paimon.file.stats.StatsTestUtils;
-import org.apache.paimon.file.utils.FailingFileIO;
-import org.apache.paimon.file.utils.FileStorePathFactory;
 import org.apache.paimon.format.FileFormat;
 import org.apache.paimon.fs.FileIO;
 import org.apache.paimon.fs.FileIOFinder;
 import org.apache.paimon.fs.Path;
 import org.apache.paimon.fs.local.LocalFileIO;
+import org.apache.paimon.io.DataFileMeta;
 import org.apache.paimon.options.Options;
+import org.apache.paimon.schema.SchemaManager;
+import org.apache.paimon.stats.StatsTestUtils;
 import org.apache.paimon.types.IntType;
 import org.apache.paimon.types.RowType;
+import org.apache.paimon.utils.FailingFileIO;
+import org.apache.paimon.utils.FileStorePathFactory;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.RepeatedTest;
 import org.junit.jupiter.api.io.TempDir;
diff --git a/paimon-core/src/test/java/org/apache/paimon/manifest/ManifestFileTest.java b/paimon-core/src/test/java/org/apache/paimon/manifest/ManifestFileTest.java
index d5b01e12d..85d9fdeb8 100644
--- a/paimon-core/src/test/java/org/apache/paimon/manifest/ManifestFileTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/manifest/ManifestFileTest.java
@@ -19,16 +19,16 @@
 package org.apache.paimon.manifest;
 
 import org.apache.paimon.CoreOptions;
-import org.apache.paimon.schema.SchemaManager;
-import org.apache.paimon.file.stats.StatsTestUtils;
-import org.apache.paimon.file.utils.FailingFileIO;
-import org.apache.paimon.file.utils.FileStorePathFactory;
 import org.apache.paimon.format.FileFormat;
 import org.apache.paimon.fs.FileIO;
 import org.apache.paimon.fs.FileIOFinder;
 import org.apache.paimon.fs.Path;
 import org.apache.paimon.fs.local.LocalFileIO;
 import org.apache.paimon.options.Options;
+import org.apache.paimon.schema.SchemaManager;
+import org.apache.paimon.stats.StatsTestUtils;
+import org.apache.paimon.utils.FailingFileIO;
+import org.apache.paimon.utils.FileStorePathFactory;
 import org.junit.jupiter.api.RepeatedTest;
 import org.junit.jupiter.api.io.TempDir;
 
@@ -39,7 +39,7 @@ import java.util.UUID;
 import java.util.concurrent.ThreadLocalRandom;
 import java.util.stream.Collectors;
 
-import static org.apache.paimon.file.TestKeyValueGenerator.DEFAULT_PART_TYPE;
+import static org.apache.paimon.TestKeyValueGenerator.DEFAULT_PART_TYPE;
 import static org.assertj.core.api.Assertions.assertThat;
 
 /** Tests for {@link ManifestFile}. */
diff --git a/paimon-core/src/test/java/org/apache/paimon/manifest/ManifestListTest.java b/paimon-core/src/test/java/org/apache/paimon/manifest/ManifestListTest.java
index c32cff3c2..bfa11c5ad 100644
--- a/paimon-core/src/test/java/org/apache/paimon/manifest/ManifestListTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/manifest/ManifestListTest.java
@@ -19,14 +19,14 @@
 package org.apache.paimon.manifest;
 
 import org.apache.paimon.CoreOptions;
-import org.apache.paimon.file.TestKeyValueGenerator;
-import org.apache.paimon.file.utils.FailingFileIO;
-import org.apache.paimon.file.utils.FileStorePathFactory;
+import org.apache.paimon.TestKeyValueGenerator;
 import org.apache.paimon.format.FileFormat;
 import org.apache.paimon.fs.FileIOFinder;
 import org.apache.paimon.fs.Path;
 import org.apache.paimon.fs.local.LocalFileIO;
 import org.apache.paimon.options.Options;
+import org.apache.paimon.utils.FailingFileIO;
+import org.apache.paimon.utils.FileStorePathFactory;
 import org.junit.jupiter.api.RepeatedTest;
 import org.junit.jupiter.api.io.TempDir;
 
diff --git a/paimon-core/src/test/java/org/apache/paimon/manifest/ManifestTestDataGenerator.java b/paimon-core/src/test/java/org/apache/paimon/manifest/ManifestTestDataGenerator.java
index 301d6603c..260fcfad5 100644
--- a/paimon-core/src/test/java/org/apache/paimon/manifest/ManifestTestDataGenerator.java
+++ b/paimon-core/src/test/java/org/apache/paimon/manifest/ManifestTestDataGenerator.java
@@ -18,12 +18,12 @@
 
 package org.apache.paimon.manifest;
 
+import org.apache.paimon.KeyValue;
+import org.apache.paimon.TestKeyValueGenerator;
 import org.apache.paimon.data.BinaryRow;
-import org.apache.paimon.file.KeyValue;
-import org.apache.paimon.file.TestKeyValueGenerator;
-import org.apache.paimon.io.DataFileTestDataGenerator;
-import org.apache.paimon.file.stats.FieldStatsArraySerializer;
 import org.apache.paimon.format.FieldStatsCollector;
+import org.apache.paimon.io.DataFileTestDataGenerator;
+import org.apache.paimon.stats.FieldStatsArraySerializer;
 import org.apache.paimon.utils.Preconditions;
 
 import java.util.ArrayList;
diff --git a/paimon-core/src/test/java/org/apache/paimon/mergetree/LookupLevelsTest.java b/paimon-core/src/test/java/org/apache/paimon/mergetree/LookupLevelsTest.java
index 4853a15e4..ee4088056 100644
--- a/paimon-core/src/test/java/org/apache/paimon/mergetree/LookupLevelsTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/mergetree/LookupLevelsTest.java
@@ -18,29 +18,29 @@
 
 package org.apache.paimon.mergetree;
 
+import org.apache.paimon.KeyValue;
 import org.apache.paimon.data.BinaryRow;
 import org.apache.paimon.data.GenericRow;
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.file.KeyValue;
-import org.apache.paimon.file.format.FlushingFileFormat;
+import org.apache.paimon.format.FlushingFileFormat;
+import org.apache.paimon.fs.FileIOFinder;
+import org.apache.paimon.fs.Path;
 import org.apache.paimon.io.DataFileMeta;
 import org.apache.paimon.io.KeyValueFileReaderFactory;
 import org.apache.paimon.io.KeyValueFileWriterFactory;
 import org.apache.paimon.io.RollingFileWriter;
-import org.apache.paimon.schema.KeyValueFieldsExtractor;
-import org.apache.paimon.schema.SchemaManager;
-import org.apache.paimon.schema.TableSchema;
-import org.apache.paimon.file.utils.FileStorePathFactory;
-import org.apache.paimon.fs.FileIOFinder;
-import org.apache.paimon.fs.Path;
 import org.apache.paimon.io.cache.CacheManager;
 import org.apache.paimon.lookup.hash.HashLookupStoreFactory;
 import org.apache.paimon.options.MemorySize;
+import org.apache.paimon.schema.KeyValueFieldsExtractor;
+import org.apache.paimon.schema.SchemaManager;
+import org.apache.paimon.schema.TableSchema;
 import org.apache.paimon.table.SchemaEvolutionTableTestBase;
 import org.apache.paimon.types.DataField;
 import org.apache.paimon.types.DataTypes;
 import org.apache.paimon.types.RowKind;
 import org.apache.paimon.types.RowType;
+import org.apache.paimon.utils.FileStorePathFactory;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.io.TempDir;
 
@@ -57,7 +57,7 @@ import java.util.Map;
 import java.util.UUID;
 
 import static org.apache.paimon.CoreOptions.TARGET_FILE_SIZE;
-import static org.apache.paimon.file.KeyValue.UNKNOWN_SEQUENCE;
+import static org.apache.paimon.KeyValue.UNKNOWN_SEQUENCE;
 import static org.apache.paimon.io.DataFileTestUtils.row;
 import static org.assertj.core.api.Assertions.assertThat;
 
diff --git a/paimon-core/src/test/java/org/apache/paimon/mergetree/MergeTreeTest.java b/paimon-core/src/test/java/org/apache/paimon/mergetree/MergeTreeTest.java
index 03d546da7..d541791c0 100644
--- a/paimon-core/src/test/java/org/apache/paimon/mergetree/MergeTreeTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/mergetree/MergeTreeTest.java
@@ -20,12 +20,16 @@ package org.apache.paimon.mergetree;
 
 import org.apache.paimon.CoreOptions;
 import org.apache.paimon.CoreOptions.ChangelogProducer;
+import org.apache.paimon.KeyValue;
+import org.apache.paimon.compact.CompactResult;
 import org.apache.paimon.data.BinaryRow;
 import org.apache.paimon.data.GenericRow;
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.file.KeyValue;
-import org.apache.paimon.compact.CompactResult;
-import org.apache.paimon.file.format.FlushingFileFormat;
+import org.apache.paimon.format.FileFormat;
+import org.apache.paimon.format.FlushingFileFormat;
+import org.apache.paimon.fs.FileStatus;
+import org.apache.paimon.fs.Path;
+import org.apache.paimon.fs.local.LocalFileIO;
 import org.apache.paimon.io.DataFileMeta;
 import org.apache.paimon.io.KeyValueFileReaderFactory;
 import org.apache.paimon.io.KeyValueFileWriterFactory;
@@ -37,25 +41,21 @@ import org.apache.paimon.mergetree.compact.DeduplicateMergeFunction;
 import org.apache.paimon.mergetree.compact.IntervalPartition;
 import org.apache.paimon.mergetree.compact.MergeTreeCompactManager;
 import org.apache.paimon.mergetree.compact.UniversalCompaction;
-import org.apache.paimon.schema.KeyValueFieldsExtractor;
-import org.apache.paimon.schema.SchemaManager;
-import org.apache.paimon.schema.TableSchema;
-import org.apache.paimon.file.utils.CommitIncrement;
-import org.apache.paimon.file.utils.FileStorePathFactory;
-import org.apache.paimon.file.utils.RecordWriter;
-import org.apache.paimon.format.FileFormat;
-import org.apache.paimon.fs.FileStatus;
-import org.apache.paimon.fs.Path;
-import org.apache.paimon.fs.local.LocalFileIO;
 import org.apache.paimon.options.MemorySize;
 import org.apache.paimon.options.Options;
 import org.apache.paimon.reader.RecordReader;
 import org.apache.paimon.reader.RecordReaderIterator;
+import org.apache.paimon.schema.KeyValueFieldsExtractor;
+import org.apache.paimon.schema.SchemaManager;
+import org.apache.paimon.schema.TableSchema;
 import org.apache.paimon.table.SchemaEvolutionTableTestBase;
 import org.apache.paimon.types.DataField;
 import org.apache.paimon.types.IntType;
 import org.apache.paimon.types.RowKind;
 import org.apache.paimon.types.RowType;
+import org.apache.paimon.utils.CommitIncrement;
+import org.apache.paimon.utils.FileStorePathFactory;
+import org.apache.paimon.utils.RecordWriter;
 import org.junit.jupiter.api.AfterAll;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/paimon-core/src/test/java/org/apache/paimon/mergetree/SortBufferWriteBufferTestBase.java b/paimon-core/src/test/java/org/apache/paimon/mergetree/SortBufferWriteBufferTestBase.java
index 4ff7c1aec..6dce21239 100644
--- a/paimon-core/src/test/java/org/apache/paimon/mergetree/SortBufferWriteBufferTestBase.java
+++ b/paimon-core/src/test/java/org/apache/paimon/mergetree/SortBufferWriteBufferTestBase.java
@@ -18,20 +18,20 @@
 
 package org.apache.paimon.mergetree;
 
+import org.apache.paimon.KeyValue;
 import org.apache.paimon.codegen.RecordComparator;
-import org.apache.paimon.file.KeyValue;
 import org.apache.paimon.memory.HeapMemorySegmentPool;
 import org.apache.paimon.mergetree.compact.DeduplicateMergeFunction;
 import org.apache.paimon.mergetree.compact.MergeFunction;
 import org.apache.paimon.mergetree.compact.MergeFunctionTestUtils;
 import org.apache.paimon.mergetree.compact.ValueCountMergeFunction;
-import org.apache.paimon.file.sort.BinaryInMemorySortBuffer;
-import org.apache.paimon.file.utils.ReusingKeyValue;
-import org.apache.paimon.file.utils.ReusingTestData;
+import org.apache.paimon.sort.BinaryInMemorySortBuffer;
 import org.apache.paimon.types.BigIntType;
 import org.apache.paimon.types.DataField;
 import org.apache.paimon.types.IntType;
 import org.apache.paimon.types.RowType;
+import org.apache.paimon.utils.ReusingKeyValue;
+import org.apache.paimon.utils.ReusingTestData;
 import org.junit.jupiter.api.Test;
 
 import java.io.EOFException;
diff --git a/paimon-core/src/test/java/org/apache/paimon/mergetree/compact/CombiningRecordReaderTestBase.java b/paimon-core/src/test/java/org/apache/paimon/mergetree/compact/CombiningRecordReaderTestBase.java
index 62a345259..44ac2b087 100644
--- a/paimon-core/src/test/java/org/apache/paimon/mergetree/compact/CombiningRecordReaderTestBase.java
+++ b/paimon-core/src/test/java/org/apache/paimon/mergetree/compact/CombiningRecordReaderTestBase.java
@@ -18,11 +18,11 @@
 
 package org.apache.paimon.mergetree.compact;
 
+import org.apache.paimon.KeyValue;
 import org.apache.paimon.codegen.RecordComparator;
-import org.apache.paimon.file.KeyValue;
-import org.apache.paimon.file.utils.ReusingTestData;
-import org.apache.paimon.file.utils.TestReusingRecordReader;
 import org.apache.paimon.reader.RecordReader;
+import org.apache.paimon.utils.ReusingTestData;
+import org.apache.paimon.utils.TestReusingRecordReader;
 import org.junit.jupiter.api.RepeatedTest;
 
 import java.io.IOException;
diff --git a/paimon-core/src/test/java/org/apache/paimon/mergetree/compact/ConcatRecordReaderTest.java b/paimon-core/src/test/java/org/apache/paimon/mergetree/compact/ConcatRecordReaderTest.java
index e04dcdb75..573334cef 100644
--- a/paimon-core/src/test/java/org/apache/paimon/mergetree/compact/ConcatRecordReaderTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/mergetree/compact/ConcatRecordReaderTest.java
@@ -18,10 +18,10 @@
 
 package org.apache.paimon.mergetree.compact;
 
-import org.apache.paimon.file.KeyValue;
-import org.apache.paimon.file.utils.ReusingTestData;
-import org.apache.paimon.file.utils.TestReusingRecordReader;
+import org.apache.paimon.KeyValue;
 import org.apache.paimon.reader.RecordReader;
+import org.apache.paimon.utils.ReusingTestData;
+import org.apache.paimon.utils.TestReusingRecordReader;
 import org.junit.jupiter.api.Test;
 
 import java.io.IOException;
diff --git a/paimon-core/src/test/java/org/apache/paimon/mergetree/compact/FullChangelogMergeFunctionWrapperTestBase.java b/paimon-core/src/test/java/org/apache/paimon/mergetree/compact/FullChangelogMergeFunctionWrapperTestBase.java
index 88a1975ed..cae850c05 100644
--- a/paimon-core/src/test/java/org/apache/paimon/mergetree/compact/FullChangelogMergeFunctionWrapperTestBase.java
+++ b/paimon-core/src/test/java/org/apache/paimon/mergetree/compact/FullChangelogMergeFunctionWrapperTestBase.java
@@ -18,7 +18,7 @@
 
 package org.apache.paimon.mergetree.compact;
 
-import org.apache.paimon.file.KeyValue;
+import org.apache.paimon.KeyValue;
 import org.apache.paimon.types.RowKind;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/paimon-core/src/test/java/org/apache/paimon/mergetree/compact/IntervalPartitionTest.java b/paimon-core/src/test/java/org/apache/paimon/mergetree/compact/IntervalPartitionTest.java
index 1065e77b9..750b770e6 100644
--- a/paimon-core/src/test/java/org/apache/paimon/mergetree/compact/IntervalPartitionTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/mergetree/compact/IntervalPartitionTest.java
@@ -24,7 +24,7 @@ import org.apache.paimon.data.BinaryRowWriter;
 import org.apache.paimon.data.Timestamp;
 import org.apache.paimon.io.DataFileMeta;
 import org.apache.paimon.mergetree.SortedRun;
-import org.apache.paimon.file.stats.StatsTestUtils;
+import org.apache.paimon.stats.StatsTestUtils;
 import org.junit.jupiter.api.RepeatedTest;
 import org.junit.jupiter.api.Test;
 
@@ -40,7 +40,7 @@ import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 
-import static org.apache.paimon.file.stats.StatsTestUtils.newTableStats;
+import static org.apache.paimon.stats.StatsTestUtils.newTableStats;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
diff --git a/paimon-core/src/test/java/org/apache/paimon/mergetree/compact/LookupChangelogMergeFunctionWrapperTest.java b/paimon-core/src/test/java/org/apache/paimon/mergetree/compact/LookupChangelogMergeFunctionWrapperTest.java
index 7e3fb6b2d..e4187a5e3 100644
--- a/paimon-core/src/test/java/org/apache/paimon/mergetree/compact/LookupChangelogMergeFunctionWrapperTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/mergetree/compact/LookupChangelogMergeFunctionWrapperTest.java
@@ -18,9 +18,9 @@
 
 package org.apache.paimon.mergetree.compact;
 
+import org.apache.paimon.KeyValue;
 import org.apache.paimon.data.InternalRow;
 import org.apache.paimon.data.InternalRow.FieldGetter;
-import org.apache.paimon.file.KeyValue;
 import org.apache.paimon.mergetree.compact.aggregate.AggregateMergeFunction;
 import org.apache.paimon.mergetree.compact.aggregate.FieldAggregator;
 import org.apache.paimon.mergetree.compact.aggregate.FieldSumAgg;
diff --git a/paimon-core/src/test/java/org/apache/paimon/mergetree/compact/MergeFunctionTestUtils.java b/paimon-core/src/test/java/org/apache/paimon/mergetree/compact/MergeFunctionTestUtils.java
index d1a898461..813f16ee3 100644
--- a/paimon-core/src/test/java/org/apache/paimon/mergetree/compact/MergeFunctionTestUtils.java
+++ b/paimon-core/src/test/java/org/apache/paimon/mergetree/compact/MergeFunctionTestUtils.java
@@ -18,10 +18,10 @@
 
 package org.apache.paimon.mergetree.compact;
 
-import org.apache.paimon.file.KeyValue;
-import org.apache.paimon.file.utils.ReusingTestData;
+import org.apache.paimon.KeyValue;
 import org.apache.paimon.types.RowKind;
 import org.apache.paimon.utils.Preconditions;
+import org.apache.paimon.utils.ReusingTestData;
 
 import java.util.ArrayList;
 import java.util.Collections;
diff --git a/paimon-core/src/test/java/org/apache/paimon/mergetree/compact/MergeTreeCompactManagerTest.java b/paimon-core/src/test/java/org/apache/paimon/mergetree/compact/MergeTreeCompactManagerTest.java
index 12c445060..f51cf3c75 100644
--- a/paimon-core/src/test/java/org/apache/paimon/mergetree/compact/MergeTreeCompactManagerTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/mergetree/compact/MergeTreeCompactManagerTest.java
@@ -18,10 +18,10 @@
 
 package org.apache.paimon.mergetree.compact;
 
-import org.apache.paimon.data.BinaryRow;
-import org.apache.paimon.data.InternalRow;
 import org.apache.paimon.compact.CompactResult;
 import org.apache.paimon.compact.CompactUnit;
+import org.apache.paimon.data.BinaryRow;
+import org.apache.paimon.data.InternalRow;
 import org.apache.paimon.io.DataFileMeta;
 import org.apache.paimon.io.DataFileTestUtils;
 import org.apache.paimon.mergetree.Levels;
diff --git a/paimon-core/src/test/java/org/apache/paimon/mergetree/compact/ReducerMergeFunctionWrapperTestBase.java b/paimon-core/src/test/java/org/apache/paimon/mergetree/compact/ReducerMergeFunctionWrapperTestBase.java
index 6add9da8a..e1c7f8c7e 100644
--- a/paimon-core/src/test/java/org/apache/paimon/mergetree/compact/ReducerMergeFunctionWrapperTestBase.java
+++ b/paimon-core/src/test/java/org/apache/paimon/mergetree/compact/ReducerMergeFunctionWrapperTestBase.java
@@ -18,8 +18,8 @@
 
 package org.apache.paimon.mergetree.compact;
 
+import org.apache.paimon.KeyValue;
 import org.apache.paimon.data.GenericRow;
-import org.apache.paimon.file.KeyValue;
 import org.apache.paimon.types.RowKind;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/paimon-core/src/test/java/org/apache/paimon/mergetree/compact/SortMergeReaderTestBase.java b/paimon-core/src/test/java/org/apache/paimon/mergetree/compact/SortMergeReaderTestBase.java
index d5971d7d9..5c6557381 100644
--- a/paimon-core/src/test/java/org/apache/paimon/mergetree/compact/SortMergeReaderTestBase.java
+++ b/paimon-core/src/test/java/org/apache/paimon/mergetree/compact/SortMergeReaderTestBase.java
@@ -18,10 +18,10 @@
 
 package org.apache.paimon.mergetree.compact;
 
-import org.apache.paimon.file.KeyValue;
-import org.apache.paimon.file.utils.ReusingTestData;
-import org.apache.paimon.file.utils.TestReusingRecordReader;
+import org.apache.paimon.KeyValue;
 import org.apache.paimon.reader.RecordReader;
+import org.apache.paimon.utils.ReusingTestData;
+import org.apache.paimon.utils.TestReusingRecordReader;
 import org.junit.jupiter.api.Test;
 
 import java.io.IOException;
diff --git a/paimon-core/src/test/java/org/apache/paimon/operation/CleanedFileStoreExpireTest.java b/paimon-core/src/test/java/org/apache/paimon/operation/CleanedFileStoreExpireTest.java
index 22426ce4b..cd46876e9 100644
--- a/paimon-core/src/test/java/org/apache/paimon/operation/CleanedFileStoreExpireTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/operation/CleanedFileStoreExpireTest.java
@@ -18,15 +18,15 @@
 
 package org.apache.paimon.operation;
 
+import org.apache.paimon.KeyValue;
 import org.apache.paimon.data.BinaryRow;
 import org.apache.paimon.data.Timestamp;
-import org.apache.paimon.file.KeyValue;
+import org.apache.paimon.fs.Path;
+import org.apache.paimon.fs.local.LocalFileIO;
 import org.apache.paimon.io.DataFileMeta;
 import org.apache.paimon.manifest.FileKind;
 import org.apache.paimon.manifest.ManifestEntry;
-import org.apache.paimon.file.utils.SnapshotManager;
-import org.apache.paimon.fs.Path;
-import org.apache.paimon.fs.local.LocalFileIO;
+import org.apache.paimon.utils.SnapshotManager;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.Test;
 
diff --git a/paimon-core/src/test/java/org/apache/paimon/operation/FileStoreCommitTest.java b/paimon-core/src/test/java/org/apache/paimon/operation/FileStoreCommitTest.java
index 413d3404a..9396c22ed 100644
--- a/paimon-core/src/test/java/org/apache/paimon/operation/FileStoreCommitTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/operation/FileStoreCommitTest.java
@@ -19,22 +19,22 @@
 package org.apache.paimon.operation;
 
 import org.apache.paimon.CoreOptions;
+import org.apache.paimon.KeyValue;
+import org.apache.paimon.Snapshot;
+import org.apache.paimon.TestFileStore;
+import org.apache.paimon.TestKeyValueGenerator;
 import org.apache.paimon.data.BinaryRow;
-import org.apache.paimon.file.KeyValue;
-import org.apache.paimon.file.Snapshot;
-import org.apache.paimon.file.TestFileStore;
-import org.apache.paimon.file.TestKeyValueGenerator;
+import org.apache.paimon.fs.Path;
+import org.apache.paimon.fs.local.LocalFileIO;
 import org.apache.paimon.manifest.ManifestCommittable;
 import org.apache.paimon.mergetree.compact.DeduplicateMergeFunction;
 import org.apache.paimon.schema.Schema;
 import org.apache.paimon.schema.SchemaManager;
 import org.apache.paimon.schema.SchemaUtils;
-import org.apache.paimon.file.utils.FailingFileIO;
-import org.apache.paimon.file.utils.SnapshotManager;
-import org.apache.paimon.file.utils.TraceableFileIO;
-import org.apache.paimon.fs.Path;
-import org.apache.paimon.fs.local.LocalFileIO;
 import org.apache.paimon.types.RowKind;
+import org.apache.paimon.utils.FailingFileIO;
+import org.apache.paimon.utils.SnapshotManager;
+import org.apache.paimon.utils.TraceableFileIO;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/paimon-core/src/test/java/org/apache/paimon/operation/FileStoreExpireTestBase.java b/paimon-core/src/test/java/org/apache/paimon/operation/FileStoreExpireTestBase.java
index af94ab019..06ca816ae 100644
--- a/paimon-core/src/test/java/org/apache/paimon/operation/FileStoreExpireTestBase.java
+++ b/paimon-core/src/test/java/org/apache/paimon/operation/FileStoreExpireTestBase.java
@@ -19,18 +19,18 @@
 package org.apache.paimon.operation;
 
 import org.apache.paimon.CoreOptions;
+import org.apache.paimon.KeyValue;
+import org.apache.paimon.Snapshot;
+import org.apache.paimon.TestFileStore;
+import org.apache.paimon.TestKeyValueGenerator;
 import org.apache.paimon.data.BinaryRow;
-import org.apache.paimon.file.KeyValue;
-import org.apache.paimon.file.Snapshot;
-import org.apache.paimon.file.TestFileStore;
-import org.apache.paimon.file.TestKeyValueGenerator;
-import org.apache.paimon.mergetree.compact.DeduplicateMergeFunction;
-import org.apache.paimon.schema.Schema;
-import org.apache.paimon.schema.SchemaManager;
-import org.apache.paimon.file.utils.SnapshotManager;
 import org.apache.paimon.fs.FileIO;
 import org.apache.paimon.fs.Path;
 import org.apache.paimon.fs.local.LocalFileIO;
+import org.apache.paimon.mergetree.compact.DeduplicateMergeFunction;
+import org.apache.paimon.schema.Schema;
+import org.apache.paimon.schema.SchemaManager;
+import org.apache.paimon.utils.SnapshotManager;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.io.TempDir;
 
diff --git a/paimon-core/src/test/java/org/apache/paimon/operation/KeyValueFileStoreReadTest.java b/paimon-core/src/test/java/org/apache/paimon/operation/KeyValueFileStoreReadTest.java
index 906b716e9..5621b6abc 100644
--- a/paimon-core/src/test/java/org/apache/paimon/operation/KeyValueFileStoreReadTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/operation/KeyValueFileStoreReadTest.java
@@ -18,24 +18,24 @@
 
 package org.apache.paimon.operation;
 
+import org.apache.paimon.KeyValue;
+import org.apache.paimon.TestFileStore;
+import org.apache.paimon.TestKeyValueGenerator;
 import org.apache.paimon.data.BinaryRow;
 import org.apache.paimon.data.GenericRow;
 import org.apache.paimon.data.serializer.InternalRowSerializer;
-import org.apache.paimon.file.KeyValue;
-import org.apache.paimon.file.TestFileStore;
-import org.apache.paimon.file.TestKeyValueGenerator;
+import org.apache.paimon.fs.FileIOFinder;
+import org.apache.paimon.fs.Path;
 import org.apache.paimon.manifest.ManifestEntry;
 import org.apache.paimon.mergetree.compact.DeduplicateMergeFunction;
 import org.apache.paimon.mergetree.compact.MergeFunctionFactory;
 import org.apache.paimon.mergetree.compact.ValueCountMergeFunction;
+import org.apache.paimon.reader.RecordReader;
+import org.apache.paimon.reader.RecordReaderIterator;
 import org.apache.paimon.schema.KeyValueFieldsExtractor;
 import org.apache.paimon.schema.Schema;
 import org.apache.paimon.schema.SchemaManager;
 import org.apache.paimon.schema.TableSchema;
-import org.apache.paimon.fs.FileIOFinder;
-import org.apache.paimon.fs.Path;
-import org.apache.paimon.reader.RecordReader;
-import org.apache.paimon.reader.RecordReaderIterator;
 import org.apache.paimon.table.source.DataSplit;
 import org.apache.paimon.types.BigIntType;
 import org.apache.paimon.types.DataField;
diff --git a/paimon-core/src/test/java/org/apache/paimon/operation/KeyValueFileStoreScanTest.java b/paimon-core/src/test/java/org/apache/paimon/operation/KeyValueFileStoreScanTest.java
index 4c3cd9102..f87ed8714 100644
--- a/paimon-core/src/test/java/org/apache/paimon/operation/KeyValueFileStoreScanTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/operation/KeyValueFileStoreScanTest.java
@@ -18,22 +18,22 @@
 
 package org.apache.paimon.operation;
 
+import org.apache.paimon.KeyValue;
+import org.apache.paimon.Snapshot;
+import org.apache.paimon.TestFileStore;
+import org.apache.paimon.TestKeyValueGenerator;
 import org.apache.paimon.data.BinaryRow;
-import org.apache.paimon.file.KeyValue;
-import org.apache.paimon.file.Snapshot;
-import org.apache.paimon.file.TestFileStore;
-import org.apache.paimon.file.TestKeyValueGenerator;
+import org.apache.paimon.fs.Path;
+import org.apache.paimon.fs.local.LocalFileIO;
 import org.apache.paimon.manifest.ManifestFileMeta;
 import org.apache.paimon.manifest.ManifestList;
 import org.apache.paimon.mergetree.compact.DeduplicateMergeFunction;
 import org.apache.paimon.predicate.PredicateBuilder;
 import org.apache.paimon.schema.Schema;
 import org.apache.paimon.schema.SchemaManager;
-import org.apache.paimon.file.utils.SnapshotManager;
-import org.apache.paimon.fs.Path;
-import org.apache.paimon.fs.local.LocalFileIO;
 import org.apache.paimon.types.IntType;
 import org.apache.paimon.types.RowType;
+import org.apache.paimon.utils.SnapshotManager;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.io.TempDir;
diff --git a/paimon-core/src/test/java/org/apache/paimon/operation/PartitionExpireTest.java b/paimon-core/src/test/java/org/apache/paimon/operation/PartitionExpireTest.java
index 0d0ed78ec..ee1389c31 100644
--- a/paimon-core/src/test/java/org/apache/paimon/operation/PartitionExpireTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/operation/PartitionExpireTest.java
@@ -21,10 +21,10 @@ package org.apache.paimon.operation;
 import org.apache.paimon.CoreOptions;
 import org.apache.paimon.data.BinaryString;
 import org.apache.paimon.data.GenericRow;
-import org.apache.paimon.schema.Schema;
-import org.apache.paimon.schema.SchemaManager;
 import org.apache.paimon.fs.Path;
 import org.apache.paimon.fs.local.LocalFileIO;
+import org.apache.paimon.schema.Schema;
+import org.apache.paimon.schema.SchemaManager;
 import org.apache.paimon.table.AbstractFileStoreTable;
 import org.apache.paimon.table.FileStoreTable;
 import org.apache.paimon.table.FileStoreTableFactory;
diff --git a/paimon-core/src/test/java/org/apache/paimon/operation/TestCommitThread.java b/paimon-core/src/test/java/org/apache/paimon/operation/TestCommitThread.java
index 501f322a3..592fbc703 100644
--- a/paimon-core/src/test/java/org/apache/paimon/operation/TestCommitThread.java
+++ b/paimon-core/src/test/java/org/apache/paimon/operation/TestCommitThread.java
@@ -18,16 +18,16 @@
 
 package org.apache.paimon.operation;
 
+import org.apache.paimon.KeyValue;
+import org.apache.paimon.TestFileStore;
+import org.apache.paimon.TestKeyValueGenerator;
 import org.apache.paimon.data.BinaryRow;
-import org.apache.paimon.file.KeyValue;
-import org.apache.paimon.file.TestFileStore;
-import org.apache.paimon.file.TestKeyValueGenerator;
 import org.apache.paimon.manifest.ManifestCommittable;
 import org.apache.paimon.memory.HeapMemorySegmentPool;
 import org.apache.paimon.mergetree.MergeTreeWriter;
-import org.apache.paimon.file.utils.CommitIncrement;
 import org.apache.paimon.table.sink.CommitMessageImpl;
 import org.apache.paimon.types.RowType;
+import org.apache.paimon.utils.CommitIncrement;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -43,10 +43,10 @@ import java.util.UUID;
 import java.util.concurrent.ThreadLocalRandom;
 import java.util.stream.Collectors;
 
-import static org.apache.paimon.file.TestFileStore.PAGE_SIZE;
-import static org.apache.paimon.file.TestFileStore.WRITE_BUFFER_SIZE;
-import static org.apache.paimon.file.TestKeyValueGenerator.GeneratorMode.MULTI_PARTITIONED;
-import static org.apache.paimon.file.utils.FailingFileIO.retryArtificialException;
+import static org.apache.paimon.TestFileStore.PAGE_SIZE;
+import static org.apache.paimon.TestFileStore.WRITE_BUFFER_SIZE;
+import static org.apache.paimon.TestKeyValueGenerator.GeneratorMode.MULTI_PARTITIONED;
+import static org.apache.paimon.utils.FailingFileIO.retryArtificialException;
 
 /** Testing {@link Thread}s to perform concurrent commits. */
 public class TestCommitThread extends Thread {
diff --git a/paimon-core/src/test/java/org/apache/paimon/operation/UncleanedFileStoreExpireTest.java b/paimon-core/src/test/java/org/apache/paimon/operation/UncleanedFileStoreExpireTest.java
index ea8755051..61302ef8c 100644
--- a/paimon-core/src/test/java/org/apache/paimon/operation/UncleanedFileStoreExpireTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/operation/UncleanedFileStoreExpireTest.java
@@ -18,7 +18,7 @@
 
 package org.apache.paimon.operation;
 
-import org.apache.paimon.file.KeyValue;
+import org.apache.paimon.KeyValue;
 import org.apache.paimon.fs.Path;
 import org.junit.jupiter.api.Test;
 
diff --git a/paimon-core/src/test/java/org/apache/paimon/schema/DataTypeJsonParserTest.java b/paimon-core/src/test/java/org/apache/paimon/schema/DataTypeJsonParserTest.java
index 1b0ecaca9..0e1202680 100644
--- a/paimon-core/src/test/java/org/apache/paimon/schema/DataTypeJsonParserTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/schema/DataTypeJsonParserTest.java
@@ -18,7 +18,6 @@
 
 package org.apache.paimon.schema;
 
-import org.apache.paimon.file.utils.JsonSerdeUtil;
 import org.apache.paimon.types.ArrayType;
 import org.apache.paimon.types.BigIntType;
 import org.apache.paimon.types.BinaryType;
@@ -42,6 +41,7 @@ import org.apache.paimon.types.TimestampType;
 import org.apache.paimon.types.TinyIntType;
 import org.apache.paimon.types.VarBinaryType;
 import org.apache.paimon.types.VarCharType;
+import org.apache.paimon.utils.JsonSerdeUtil;
 import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.MethodSource;
 
diff --git a/paimon-core/src/test/java/org/apache/paimon/schema/SchemaManagerTest.java b/paimon-core/src/test/java/org/apache/paimon/schema/SchemaManagerTest.java
index a264bcebd..56569988a 100644
--- a/paimon-core/src/test/java/org/apache/paimon/schema/SchemaManagerTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/schema/SchemaManagerTest.java
@@ -19,8 +19,7 @@
 package org.apache.paimon.schema;
 
 import org.apache.paimon.CoreOptions;
-import org.apache.paimon.file.WriteMode;
-import org.apache.paimon.file.utils.FailingFileIO;
+import org.apache.paimon.WriteMode;
 import org.apache.paimon.fs.FileIOFinder;
 import org.apache.paimon.fs.Path;
 import org.apache.paimon.fs.local.LocalFileIO;
@@ -31,6 +30,7 @@ import org.apache.paimon.types.IntType;
 import org.apache.paimon.types.MapType;
 import org.apache.paimon.types.RowType;
 import org.apache.paimon.types.VarCharType;
+import org.apache.paimon.utils.FailingFileIO;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
@@ -51,7 +51,7 @@ import java.util.concurrent.ThreadLocalRandom;
 import java.util.stream.Collectors;
 import java.util.stream.IntStream;
 
-import static org.apache.paimon.file.utils.FailingFileIO.retryArtificialException;
+import static org.apache.paimon.utils.FailingFileIO.retryArtificialException;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.assertThatThrownBy;
 
diff --git a/paimon-core/src/test/java/org/apache/paimon/schema/TableSchemaSerializationTest.java b/paimon-core/src/test/java/org/apache/paimon/schema/TableSchemaSerializationTest.java
index 9b66536a0..8e38f7efc 100644
--- a/paimon-core/src/test/java/org/apache/paimon/schema/TableSchemaSerializationTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/schema/TableSchemaSerializationTest.java
@@ -18,12 +18,12 @@
 
 package org.apache.paimon.schema;
 
-import org.apache.paimon.file.utils.JsonSerdeUtil;
 import org.apache.paimon.types.ArrayType;
 import org.apache.paimon.types.DataField;
 import org.apache.paimon.types.IntType;
 import org.apache.paimon.types.MapType;
 import org.apache.paimon.types.MultisetType;
+import org.apache.paimon.utils.JsonSerdeUtil;
 import org.junit.jupiter.api.Test;
 
 import java.util.Arrays;
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/sort/BinaryExternalSortBufferTest.java b/paimon-core/src/test/java/org/apache/paimon/sort/BinaryExternalSortBufferTest.java
similarity index 99%
rename from paimon-core/src/test/java/org/apache/paimon/file/sort/BinaryExternalSortBufferTest.java
rename to paimon-core/src/test/java/org/apache/paimon/sort/BinaryExternalSortBufferTest.java
index 005865a23..e3c53f2cb 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/sort/BinaryExternalSortBufferTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/sort/BinaryExternalSortBufferTest.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.sort;
+package org.apache.paimon.sort;
 
 import org.apache.paimon.data.BinaryRow;
 import org.apache.paimon.data.BinaryRowWriter;
@@ -26,7 +26,7 @@ import org.apache.paimon.data.serializer.BinaryRowSerializer;
 import org.apache.paimon.disk.IOManager;
 import org.apache.paimon.memory.HeapMemorySegmentPool;
 import org.apache.paimon.memory.MemorySegmentPool;
-import org.apache.paimon.file.utils.MutableObjectIterator;
+import org.apache.paimon.utils.MutableObjectIterator;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/sort/IntNormalizedKeyComputer.java b/paimon-core/src/test/java/org/apache/paimon/sort/IntNormalizedKeyComputer.java
similarity index 98%
rename from paimon-core/src/test/java/org/apache/paimon/file/sort/IntNormalizedKeyComputer.java
rename to paimon-core/src/test/java/org/apache/paimon/sort/IntNormalizedKeyComputer.java
index 406f9f545..8bc17bde2 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/sort/IntNormalizedKeyComputer.java
+++ b/paimon-core/src/test/java/org/apache/paimon/sort/IntNormalizedKeyComputer.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.sort;
+package org.apache.paimon.sort;
 
 import org.apache.paimon.codegen.NormalizedKeyComputer;
 import org.apache.paimon.data.InternalRow;
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/sort/IntRecordComparator.java b/paimon-core/src/test/java/org/apache/paimon/sort/IntRecordComparator.java
similarity index 97%
rename from paimon-core/src/test/java/org/apache/paimon/file/sort/IntRecordComparator.java
rename to paimon-core/src/test/java/org/apache/paimon/sort/IntRecordComparator.java
index 91d8fcbb2..7fb49f50b 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/sort/IntRecordComparator.java
+++ b/paimon-core/src/test/java/org/apache/paimon/sort/IntRecordComparator.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.sort;
+package org.apache.paimon.sort;
 
 import org.apache.paimon.codegen.RecordComparator;
 import org.apache.paimon.data.InternalRow;
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/stats/BinaryTableStatsTest.java b/paimon-core/src/test/java/org/apache/paimon/stats/BinaryTableStatsTest.java
similarity index 99%
rename from paimon-core/src/test/java/org/apache/paimon/file/stats/BinaryTableStatsTest.java
rename to paimon-core/src/test/java/org/apache/paimon/stats/BinaryTableStatsTest.java
index 37cd59d7e..0613c4072 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/stats/BinaryTableStatsTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/stats/BinaryTableStatsTest.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.stats;
+package org.apache.paimon.stats;
 
 import org.apache.paimon.data.BinaryRow;
 import org.apache.paimon.data.BinaryRowWriter;
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/stats/FieldStatsArraySerializerTest.java b/paimon-core/src/test/java/org/apache/paimon/stats/FieldStatsArraySerializerTest.java
similarity index 99%
rename from paimon-core/src/test/java/org/apache/paimon/file/stats/FieldStatsArraySerializerTest.java
rename to paimon-core/src/test/java/org/apache/paimon/stats/FieldStatsArraySerializerTest.java
index 6bdf2ebfe..c56796b24 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/stats/FieldStatsArraySerializerTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/stats/FieldStatsArraySerializerTest.java
@@ -16,13 +16,13 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.stats;
+package org.apache.paimon.stats;
 
-import org.apache.paimon.data.BinaryRow;
 import org.apache.paimon.casting.CastExecutor;
+import org.apache.paimon.data.BinaryRow;
+import org.apache.paimon.format.FieldStats;
 import org.apache.paimon.schema.SchemaEvolutionUtil;
 import org.apache.paimon.schema.TableSchema;
-import org.apache.paimon.format.FieldStats;
 import org.apache.paimon.types.DataField;
 import org.apache.paimon.types.IntType;
 import org.junit.jupiter.api.Test;
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/stats/FieldStatsCollectorTest.java b/paimon-core/src/test/java/org/apache/paimon/stats/FieldStatsCollectorTest.java
similarity index 99%
rename from paimon-core/src/test/java/org/apache/paimon/file/stats/FieldStatsCollectorTest.java
rename to paimon-core/src/test/java/org/apache/paimon/stats/FieldStatsCollectorTest.java
index 50349ba37..3e7d8a4be 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/stats/FieldStatsCollectorTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/stats/FieldStatsCollectorTest.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.stats;
+package org.apache.paimon.stats;
 
 import org.apache.paimon.data.BinaryString;
 import org.apache.paimon.data.GenericArray;
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/stats/StatsTestUtils.java b/paimon-core/src/test/java/org/apache/paimon/stats/StatsTestUtils.java
similarity index 98%
rename from paimon-core/src/test/java/org/apache/paimon/file/stats/StatsTestUtils.java
rename to paimon-core/src/test/java/org/apache/paimon/stats/StatsTestUtils.java
index b12eade03..d3ccceb56 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/stats/StatsTestUtils.java
+++ b/paimon-core/src/test/java/org/apache/paimon/stats/StatsTestUtils.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.stats;
+package org.apache.paimon.stats;
 
 import org.apache.paimon.format.FieldStats;
 import org.apache.paimon.types.IntType;
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/stats/TestFileStatsExtractor.java b/paimon-core/src/test/java/org/apache/paimon/stats/TestFileStatsExtractor.java
similarity index 95%
rename from paimon-core/src/test/java/org/apache/paimon/file/stats/TestFileStatsExtractor.java
rename to paimon-core/src/test/java/org/apache/paimon/stats/TestFileStatsExtractor.java
index 129bac309..c77a30610 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/stats/TestFileStatsExtractor.java
+++ b/paimon-core/src/test/java/org/apache/paimon/stats/TestFileStatsExtractor.java
@@ -16,11 +16,9 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.stats;
+package org.apache.paimon.stats;
 
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.file.utils.FileUtils;
-import org.apache.paimon.file.utils.ObjectSerializer;
 import org.apache.paimon.format.FieldStats;
 import org.apache.paimon.format.FieldStatsCollector;
 import org.apache.paimon.format.FileFormat;
@@ -29,6 +27,8 @@ import org.apache.paimon.format.FormatReaderFactory;
 import org.apache.paimon.fs.FileIO;
 import org.apache.paimon.fs.Path;
 import org.apache.paimon.types.RowType;
+import org.apache.paimon.utils.FileUtils;
+import org.apache.paimon.utils.ObjectSerializer;
 
 import java.io.IOException;
 import java.util.List;
diff --git a/paimon-core/src/test/java/org/apache/paimon/table/AppendOnlyFileDataTableTest.java b/paimon-core/src/test/java/org/apache/paimon/table/AppendOnlyFileDataTableTest.java
index 8a98fd042..93854e766 100644
--- a/paimon-core/src/test/java/org/apache/paimon/table/AppendOnlyFileDataTableTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/table/AppendOnlyFileDataTableTest.java
@@ -18,9 +18,9 @@
 
 package org.apache.paimon.table;
 
+import org.apache.paimon.fs.FileIOFinder;
 import org.apache.paimon.schema.SchemaManager;
 import org.apache.paimon.schema.TableSchema;
-import org.apache.paimon.fs.FileIOFinder;
 
 import java.util.Map;
 
diff --git a/paimon-core/src/test/java/org/apache/paimon/table/AppendOnlyFileStoreTableTest.java b/paimon-core/src/test/java/org/apache/paimon/table/AppendOnlyFileStoreTableTest.java
index c983d2445..06812b09e 100644
--- a/paimon-core/src/test/java/org/apache/paimon/table/AppendOnlyFileStoreTableTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/table/AppendOnlyFileStoreTableTest.java
@@ -19,19 +19,19 @@
 package org.apache.paimon.table;
 
 import org.apache.paimon.CoreOptions;
+import org.apache.paimon.WriteMode;
 import org.apache.paimon.data.BinaryRow;
 import org.apache.paimon.data.InternalRow;
 import org.apache.paimon.data.serializer.InternalRowSerializer;
-import org.apache.paimon.file.WriteMode;
+import org.apache.paimon.fs.local.LocalFileIO;
 import org.apache.paimon.operation.ScanKind;
+import org.apache.paimon.options.Options;
 import org.apache.paimon.predicate.Predicate;
 import org.apache.paimon.predicate.PredicateBuilder;
 import org.apache.paimon.schema.Schema;
 import org.apache.paimon.schema.SchemaManager;
 import org.apache.paimon.schema.SchemaUtils;
 import org.apache.paimon.schema.TableSchema;
-import org.apache.paimon.fs.local.LocalFileIO;
-import org.apache.paimon.options.Options;
 import org.apache.paimon.table.sink.StreamTableCommit;
 import org.apache.paimon.table.sink.StreamTableWrite;
 import org.apache.paimon.table.source.DataSplit;
diff --git a/paimon-core/src/test/java/org/apache/paimon/table/AppendOnlyTableColumnTypeFileDataTest.java b/paimon-core/src/test/java/org/apache/paimon/table/AppendOnlyTableColumnTypeFileDataTest.java
index 6a8d5729e..ce02e8788 100644
--- a/paimon-core/src/test/java/org/apache/paimon/table/AppendOnlyTableColumnTypeFileDataTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/table/AppendOnlyTableColumnTypeFileDataTest.java
@@ -19,7 +19,7 @@
 package org.apache.paimon.table;
 
 import org.apache.paimon.CoreOptions;
-import org.apache.paimon.file.WriteMode;
+import org.apache.paimon.WriteMode;
 import org.apache.paimon.schema.SchemaManager;
 import org.apache.paimon.schema.TableSchema;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/paimon-core/src/test/java/org/apache/paimon/table/AppendOnlyTableColumnTypeFileMetaTest.java b/paimon-core/src/test/java/org/apache/paimon/table/AppendOnlyTableColumnTypeFileMetaTest.java
index 92e82246a..50ef145cc 100644
--- a/paimon-core/src/test/java/org/apache/paimon/table/AppendOnlyTableColumnTypeFileMetaTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/table/AppendOnlyTableColumnTypeFileMetaTest.java
@@ -19,11 +19,11 @@
 package org.apache.paimon.table;
 
 import org.apache.paimon.CoreOptions;
-import org.apache.paimon.file.WriteMode;
+import org.apache.paimon.WriteMode;
 import org.apache.paimon.io.DataFileMeta;
 import org.apache.paimon.schema.SchemaManager;
 import org.apache.paimon.schema.TableSchema;
-import org.apache.paimon.file.stats.BinaryTableStats;
+import org.apache.paimon.stats.BinaryTableStats;
 import org.junit.jupiter.api.BeforeEach;
 
 import java.util.Map;
diff --git a/paimon-core/src/test/java/org/apache/paimon/table/AppendOnlyTableFileMetaFilterTest.java b/paimon-core/src/test/java/org/apache/paimon/table/AppendOnlyTableFileMetaFilterTest.java
index 581f78881..e3ca22659 100644
--- a/paimon-core/src/test/java/org/apache/paimon/table/AppendOnlyTableFileMetaFilterTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/table/AppendOnlyTableFileMetaFilterTest.java
@@ -19,11 +19,11 @@
 package org.apache.paimon.table;
 
 import org.apache.paimon.CoreOptions;
-import org.apache.paimon.file.WriteMode;
+import org.apache.paimon.WriteMode;
 import org.apache.paimon.io.DataFileMeta;
 import org.apache.paimon.schema.SchemaManager;
 import org.apache.paimon.schema.TableSchema;
-import org.apache.paimon.file.stats.BinaryTableStats;
+import org.apache.paimon.stats.BinaryTableStats;
 import org.junit.jupiter.api.BeforeEach;
 
 import java.util.Map;
diff --git a/paimon-core/src/test/java/org/apache/paimon/table/ChangelogValueCountColumnTypeFileDataTest.java b/paimon-core/src/test/java/org/apache/paimon/table/ChangelogValueCountColumnTypeFileDataTest.java
index 0797bb374..fb193d0a6 100644
--- a/paimon-core/src/test/java/org/apache/paimon/table/ChangelogValueCountColumnTypeFileDataTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/table/ChangelogValueCountColumnTypeFileDataTest.java
@@ -19,7 +19,7 @@
 package org.apache.paimon.table;
 
 import org.apache.paimon.CoreOptions;
-import org.apache.paimon.file.WriteMode;
+import org.apache.paimon.WriteMode;
 import org.apache.paimon.schema.SchemaManager;
 import org.apache.paimon.schema.TableSchema;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/paimon-core/src/test/java/org/apache/paimon/table/ChangelogValueCountColumnTypeFileMetaTest.java b/paimon-core/src/test/java/org/apache/paimon/table/ChangelogValueCountColumnTypeFileMetaTest.java
index fb4b02c48..3b3c96331 100644
--- a/paimon-core/src/test/java/org/apache/paimon/table/ChangelogValueCountColumnTypeFileMetaTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/table/ChangelogValueCountColumnTypeFileMetaTest.java
@@ -19,11 +19,11 @@
 package org.apache.paimon.table;
 
 import org.apache.paimon.CoreOptions;
-import org.apache.paimon.file.WriteMode;
+import org.apache.paimon.WriteMode;
 import org.apache.paimon.io.DataFileMeta;
 import org.apache.paimon.schema.SchemaManager;
 import org.apache.paimon.schema.TableSchema;
-import org.apache.paimon.file.stats.BinaryTableStats;
+import org.apache.paimon.stats.BinaryTableStats;
 import org.junit.jupiter.api.BeforeEach;
 
 import java.util.Collections;
diff --git a/paimon-core/src/test/java/org/apache/paimon/table/ChangelogValueCountFileDataTableTest.java b/paimon-core/src/test/java/org/apache/paimon/table/ChangelogValueCountFileDataTableTest.java
index 80a5985e6..5070e5d29 100644
--- a/paimon-core/src/test/java/org/apache/paimon/table/ChangelogValueCountFileDataTableTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/table/ChangelogValueCountFileDataTableTest.java
@@ -19,7 +19,7 @@
 package org.apache.paimon.table;
 
 import org.apache.paimon.CoreOptions;
-import org.apache.paimon.file.WriteMode;
+import org.apache.paimon.WriteMode;
 import org.apache.paimon.schema.SchemaManager;
 import org.apache.paimon.schema.TableSchema;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/paimon-core/src/test/java/org/apache/paimon/table/ChangelogValueCountFileMetaFilterTest.java b/paimon-core/src/test/java/org/apache/paimon/table/ChangelogValueCountFileMetaFilterTest.java
index 0f87fd81f..157843d0b 100644
--- a/paimon-core/src/test/java/org/apache/paimon/table/ChangelogValueCountFileMetaFilterTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/table/ChangelogValueCountFileMetaFilterTest.java
@@ -19,11 +19,11 @@
 package org.apache.paimon.table;
 
 import org.apache.paimon.CoreOptions;
-import org.apache.paimon.file.WriteMode;
+import org.apache.paimon.WriteMode;
 import org.apache.paimon.io.DataFileMeta;
 import org.apache.paimon.schema.SchemaManager;
 import org.apache.paimon.schema.TableSchema;
-import org.apache.paimon.file.stats.BinaryTableStats;
+import org.apache.paimon.stats.BinaryTableStats;
 import org.junit.jupiter.api.BeforeEach;
 
 import java.util.Collections;
diff --git a/paimon-core/src/test/java/org/apache/paimon/table/ChangelogValueCountFileStoreTableTest.java b/paimon-core/src/test/java/org/apache/paimon/table/ChangelogValueCountFileStoreTableTest.java
index 42769bb89..7c48a2c6b 100644
--- a/paimon-core/src/test/java/org/apache/paimon/table/ChangelogValueCountFileStoreTableTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/table/ChangelogValueCountFileStoreTableTest.java
@@ -19,18 +19,18 @@
 package org.apache.paimon.table;
 
 import org.apache.paimon.CoreOptions;
-import org.apache.paimon.file.WriteMode;
+import org.apache.paimon.WriteMode;
+import org.apache.paimon.fs.Path;
+import org.apache.paimon.fs.local.LocalFileIO;
 import org.apache.paimon.io.DataFilePathFactory;
 import org.apache.paimon.operation.ScanKind;
+import org.apache.paimon.options.Options;
 import org.apache.paimon.predicate.Predicate;
 import org.apache.paimon.predicate.PredicateBuilder;
 import org.apache.paimon.schema.Schema;
 import org.apache.paimon.schema.SchemaManager;
 import org.apache.paimon.schema.SchemaUtils;
 import org.apache.paimon.schema.TableSchema;
-import org.apache.paimon.fs.Path;
-import org.apache.paimon.fs.local.LocalFileIO;
-import org.apache.paimon.options.Options;
 import org.apache.paimon.table.sink.StreamTableCommit;
 import org.apache.paimon.table.sink.StreamTableWrite;
 import org.apache.paimon.table.source.Split;
diff --git a/paimon-core/src/test/java/org/apache/paimon/table/ChangelogWithKeyColumnTypeFileDataTest.java b/paimon-core/src/test/java/org/apache/paimon/table/ChangelogWithKeyColumnTypeFileDataTest.java
index 8a14a491c..7f0870fe5 100644
--- a/paimon-core/src/test/java/org/apache/paimon/table/ChangelogWithKeyColumnTypeFileDataTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/table/ChangelogWithKeyColumnTypeFileDataTest.java
@@ -19,8 +19,8 @@
 package org.apache.paimon.table;
 
 import org.apache.paimon.CoreOptions;
+import org.apache.paimon.WriteMode;
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.file.WriteMode;
 import org.apache.paimon.predicate.Predicate;
 import org.apache.paimon.predicate.PredicateBuilder;
 import org.apache.paimon.schema.SchemaManager;
diff --git a/paimon-core/src/test/java/org/apache/paimon/table/ChangelogWithKeyFileDataTableTest.java b/paimon-core/src/test/java/org/apache/paimon/table/ChangelogWithKeyFileDataTableTest.java
index a2254633f..e8007c80e 100644
--- a/paimon-core/src/test/java/org/apache/paimon/table/ChangelogWithKeyFileDataTableTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/table/ChangelogWithKeyFileDataTableTest.java
@@ -19,7 +19,7 @@
 package org.apache.paimon.table;
 
 import org.apache.paimon.CoreOptions;
-import org.apache.paimon.file.WriteMode;
+import org.apache.paimon.WriteMode;
 import org.apache.paimon.operation.ScanKind;
 import org.apache.paimon.predicate.PredicateBuilder;
 import org.apache.paimon.schema.SchemaManager;
diff --git a/paimon-core/src/test/java/org/apache/paimon/table/ChangelogWithKeyFileMetaFilterTest.java b/paimon-core/src/test/java/org/apache/paimon/table/ChangelogWithKeyFileMetaFilterTest.java
index c9f2f1f40..ff3e2156c 100644
--- a/paimon-core/src/test/java/org/apache/paimon/table/ChangelogWithKeyFileMetaFilterTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/table/ChangelogWithKeyFileMetaFilterTest.java
@@ -19,13 +19,13 @@
 package org.apache.paimon.table;
 
 import org.apache.paimon.CoreOptions;
-import org.apache.paimon.file.WriteMode;
+import org.apache.paimon.WriteMode;
 import org.apache.paimon.io.DataFileMeta;
 import org.apache.paimon.predicate.Predicate;
 import org.apache.paimon.predicate.PredicateBuilder;
 import org.apache.paimon.schema.SchemaManager;
 import org.apache.paimon.schema.TableSchema;
-import org.apache.paimon.file.stats.BinaryTableStats;
+import org.apache.paimon.stats.BinaryTableStats;
 import org.apache.paimon.table.source.DataSplit;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/paimon-core/src/test/java/org/apache/paimon/table/ChangelogWithKeyFileStoreTableTest.java b/paimon-core/src/test/java/org/apache/paimon/table/ChangelogWithKeyFileStoreTableTest.java
index 527f482f5..51cfbd068 100644
--- a/paimon-core/src/test/java/org/apache/paimon/table/ChangelogWithKeyFileStoreTableTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/table/ChangelogWithKeyFileStoreTableTest.java
@@ -20,19 +20,19 @@ package org.apache.paimon.table;
 
 import org.apache.paimon.CoreOptions;
 import org.apache.paimon.CoreOptions.ChangelogProducer;
+import org.apache.paimon.WriteMode;
 import org.apache.paimon.data.BinaryString;
 import org.apache.paimon.data.GenericRow;
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.file.WriteMode;
+import org.apache.paimon.fs.local.LocalFileIO;
 import org.apache.paimon.operation.ScanKind;
+import org.apache.paimon.options.Options;
 import org.apache.paimon.predicate.Predicate;
 import org.apache.paimon.predicate.PredicateBuilder;
 import org.apache.paimon.schema.Schema;
 import org.apache.paimon.schema.SchemaManager;
 import org.apache.paimon.schema.SchemaUtils;
 import org.apache.paimon.schema.TableSchema;
-import org.apache.paimon.fs.local.LocalFileIO;
-import org.apache.paimon.options.Options;
 import org.apache.paimon.table.sink.BatchTableCommit;
 import org.apache.paimon.table.sink.BatchTableWrite;
 import org.apache.paimon.table.sink.BatchWriteBuilder;
diff --git a/paimon-core/src/test/java/org/apache/paimon/table/ChangelogWithKeyTableColumnTypeFileMetaTest.java b/paimon-core/src/test/java/org/apache/paimon/table/ChangelogWithKeyTableColumnTypeFileMetaTest.java
index 1f8296d69..2b22bdd00 100644
--- a/paimon-core/src/test/java/org/apache/paimon/table/ChangelogWithKeyTableColumnTypeFileMetaTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/table/ChangelogWithKeyTableColumnTypeFileMetaTest.java
@@ -19,15 +19,15 @@
 package org.apache.paimon.table;
 
 import org.apache.paimon.CoreOptions;
+import org.apache.paimon.WriteMode;
 import org.apache.paimon.data.BinaryString;
-import org.apache.paimon.file.WriteMode;
+import org.apache.paimon.format.FieldStats;
 import org.apache.paimon.io.DataFileMeta;
 import org.apache.paimon.predicate.Predicate;
 import org.apache.paimon.predicate.PredicateBuilder;
 import org.apache.paimon.schema.SchemaManager;
 import org.apache.paimon.schema.TableSchema;
-import org.apache.paimon.file.stats.BinaryTableStats;
-import org.apache.paimon.format.FieldStats;
+import org.apache.paimon.stats.BinaryTableStats;
 import org.apache.paimon.table.source.DataSplit;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/paimon-core/src/test/java/org/apache/paimon/table/ColumnTypeFileMetaTestBase.java b/paimon-core/src/test/java/org/apache/paimon/table/ColumnTypeFileMetaTestBase.java
index cee712fed..f448f8b0c 100644
--- a/paimon-core/src/test/java/org/apache/paimon/table/ColumnTypeFileMetaTestBase.java
+++ b/paimon-core/src/test/java/org/apache/paimon/table/ColumnTypeFileMetaTestBase.java
@@ -21,11 +21,11 @@ package org.apache.paimon.table;
 import org.apache.paimon.CoreOptions;
 import org.apache.paimon.data.BinaryString;
 import org.apache.paimon.data.Decimal;
+import org.apache.paimon.format.FieldStats;
 import org.apache.paimon.io.DataFileMeta;
 import org.apache.paimon.predicate.Predicate;
 import org.apache.paimon.predicate.PredicateBuilder;
-import org.apache.paimon.file.stats.BinaryTableStats;
-import org.apache.paimon.format.FieldStats;
+import org.apache.paimon.stats.BinaryTableStats;
 import org.apache.paimon.table.source.DataSplit;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/paimon-core/src/test/java/org/apache/paimon/table/FileMetaFilterTestBase.java b/paimon-core/src/test/java/org/apache/paimon/table/FileMetaFilterTestBase.java
index 9b61f0899..a1b052775 100644
--- a/paimon-core/src/test/java/org/apache/paimon/table/FileMetaFilterTestBase.java
+++ b/paimon-core/src/test/java/org/apache/paimon/table/FileMetaFilterTestBase.java
@@ -18,11 +18,11 @@
 
 package org.apache.paimon.table;
 
+import org.apache.paimon.format.FieldStats;
 import org.apache.paimon.io.DataFileMeta;
 import org.apache.paimon.predicate.Predicate;
 import org.apache.paimon.predicate.PredicateBuilder;
-import org.apache.paimon.file.stats.BinaryTableStats;
-import org.apache.paimon.format.FieldStats;
+import org.apache.paimon.stats.BinaryTableStats;
 import org.apache.paimon.table.source.DataSplit;
 import org.junit.jupiter.api.Test;
 
diff --git a/paimon-core/src/test/java/org/apache/paimon/table/FileStoreTableTestBase.java b/paimon-core/src/test/java/org/apache/paimon/table/FileStoreTableTestBase.java
index d86086df4..271ede502 100644
--- a/paimon-core/src/test/java/org/apache/paimon/table/FileStoreTableTestBase.java
+++ b/paimon-core/src/test/java/org/apache/paimon/table/FileStoreTableTestBase.java
@@ -18,6 +18,7 @@
 
 package org.apache.paimon.table;
 
+import org.apache.paimon.Snapshot;
 import org.apache.paimon.data.BinaryRow;
 import org.apache.paimon.data.BinaryRowWriter;
 import org.apache.paimon.data.BinaryString;
@@ -25,20 +26,17 @@ import org.apache.paimon.data.GenericMap;
 import org.apache.paimon.data.GenericRow;
 import org.apache.paimon.data.InternalRow;
 import org.apache.paimon.data.JoinedRow;
-import org.apache.paimon.file.Snapshot;
+import org.apache.paimon.fs.FileIOFinder;
+import org.apache.paimon.fs.Path;
 import org.apache.paimon.io.DataFileMeta;
 import org.apache.paimon.mergetree.compact.ConcatRecordReader;
 import org.apache.paimon.mergetree.compact.ConcatRecordReader.ReaderSupplier;
-import org.apache.paimon.predicate.PredicateBuilder;
-import org.apache.paimon.schema.SchemaChange;
-import org.apache.paimon.schema.SchemaManager;
-import org.apache.paimon.file.utils.SnapshotManager;
-import org.apache.paimon.file.utils.TraceableFileIO;
-import org.apache.paimon.fs.FileIOFinder;
-import org.apache.paimon.fs.Path;
 import org.apache.paimon.options.Options;
+import org.apache.paimon.predicate.PredicateBuilder;
 import org.apache.paimon.reader.RecordReader;
 import org.apache.paimon.reader.RecordReaderIterator;
+import org.apache.paimon.schema.SchemaChange;
+import org.apache.paimon.schema.SchemaManager;
 import org.apache.paimon.table.sink.CommitMessage;
 import org.apache.paimon.table.sink.CommitMessageImpl;
 import org.apache.paimon.table.sink.InnerTableCommit;
@@ -51,6 +49,8 @@ import org.apache.paimon.types.DataType;
 import org.apache.paimon.types.DataTypes;
 import org.apache.paimon.types.RowKind;
 import org.apache.paimon.types.RowType;
+import org.apache.paimon.utils.SnapshotManager;
+import org.apache.paimon.utils.TraceableFileIO;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/paimon-core/src/test/java/org/apache/paimon/table/SchemaEvolutionTableTestBase.java b/paimon-core/src/test/java/org/apache/paimon/table/SchemaEvolutionTableTestBase.java
index e0d315cf7..afa804949 100644
--- a/paimon-core/src/test/java/org/apache/paimon/table/SchemaEvolutionTableTestBase.java
+++ b/paimon-core/src/test/java/org/apache/paimon/table/SchemaEvolutionTableTestBase.java
@@ -24,19 +24,18 @@ import org.apache.paimon.data.Decimal;
 import org.apache.paimon.data.GenericRow;
 import org.apache.paimon.data.InternalRow;
 import org.apache.paimon.data.Timestamp;
-import org.apache.paimon.io.DataFileMeta;
-import org.apache.paimon.mergetree.compact.ConcatRecordReader;
-import org.apache.paimon.schema.Schema;
-import org.apache.paimon.schema.SchemaChange;
-import org.apache.paimon.schema.SchemaManager;
-import org.apache.paimon.schema.TableSchema;
-import org.apache.paimon.file.utils.TraceableFileIO;
 import org.apache.paimon.fs.FileIO;
 import org.apache.paimon.fs.FileIOFinder;
 import org.apache.paimon.fs.Path;
+import org.apache.paimon.io.DataFileMeta;
+import org.apache.paimon.mergetree.compact.ConcatRecordReader;
 import org.apache.paimon.options.Options;
 import org.apache.paimon.reader.RecordReader;
 import org.apache.paimon.reader.RecordReaderIterator;
+import org.apache.paimon.schema.Schema;
+import org.apache.paimon.schema.SchemaChange;
+import org.apache.paimon.schema.SchemaManager;
+import org.apache.paimon.schema.TableSchema;
 import org.apache.paimon.table.sink.StreamTableCommit;
 import org.apache.paimon.table.sink.StreamTableWrite;
 import org.apache.paimon.table.source.DataSplit;
@@ -56,6 +55,7 @@ import org.apache.paimon.types.TimestampType;
 import org.apache.paimon.types.VarBinaryType;
 import org.apache.paimon.types.VarCharType;
 import org.apache.paimon.utils.StringUtils;
+import org.apache.paimon.utils.TraceableFileIO;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.io.TempDir;
diff --git a/paimon-core/src/test/java/org/apache/paimon/table/SchemaEvolutionTest.java b/paimon-core/src/test/java/org/apache/paimon/table/SchemaEvolutionTest.java
index d249fc1a5..500c52da1 100644
--- a/paimon-core/src/test/java/org/apache/paimon/table/SchemaEvolutionTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/table/SchemaEvolutionTest.java
@@ -21,13 +21,13 @@ package org.apache.paimon.table;
 import org.apache.paimon.data.DataFormatTestUtil;
 import org.apache.paimon.data.GenericRow;
 import org.apache.paimon.data.InternalRow;
+import org.apache.paimon.fs.Path;
+import org.apache.paimon.fs.local.LocalFileIO;
 import org.apache.paimon.predicate.Predicate;
 import org.apache.paimon.predicate.PredicateBuilder;
 import org.apache.paimon.schema.Schema;
 import org.apache.paimon.schema.SchemaChange;
 import org.apache.paimon.schema.SchemaManager;
-import org.apache.paimon.fs.Path;
-import org.apache.paimon.fs.local.LocalFileIO;
 import org.apache.paimon.table.sink.StreamTableWrite;
 import org.apache.paimon.table.source.InnerTableRead;
 import org.apache.paimon.table.source.Split;
diff --git a/paimon-core/src/test/java/org/apache/paimon/table/WritePreemptMemoryTest.java b/paimon-core/src/test/java/org/apache/paimon/table/WritePreemptMemoryTest.java
index e33580fbc..ddf5a8044 100644
--- a/paimon-core/src/test/java/org/apache/paimon/table/WritePreemptMemoryTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/table/WritePreemptMemoryTest.java
@@ -19,15 +19,15 @@
 package org.apache.paimon.table;
 
 import org.apache.paimon.CoreOptions;
+import org.apache.paimon.WriteMode;
 import org.apache.paimon.data.GenericRow;
-import org.apache.paimon.file.WriteMode;
+import org.apache.paimon.fs.local.LocalFileIO;
+import org.apache.paimon.options.MemorySize;
+import org.apache.paimon.options.Options;
 import org.apache.paimon.schema.Schema;
 import org.apache.paimon.schema.SchemaManager;
 import org.apache.paimon.schema.SchemaUtils;
 import org.apache.paimon.schema.TableSchema;
-import org.apache.paimon.fs.local.LocalFileIO;
-import org.apache.paimon.options.MemorySize;
-import org.apache.paimon.options.Options;
 import org.apache.paimon.table.sink.StreamTableCommit;
 import org.apache.paimon.table.sink.StreamTableWrite;
 import org.apache.paimon.table.source.Split;
diff --git a/paimon-core/src/test/java/org/apache/paimon/table/sink/TableWriteTest.java b/paimon-core/src/test/java/org/apache/paimon/table/sink/TableWriteTest.java
index c7964c5e7..c456c026c 100644
--- a/paimon-core/src/test/java/org/apache/paimon/table/sink/TableWriteTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/table/sink/TableWriteTest.java
@@ -21,23 +21,23 @@ package org.apache.paimon.table.sink;
 import org.apache.paimon.CoreOptions;
 import org.apache.paimon.data.GenericRow;
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.operation.AbstractFileStoreWrite;
-import org.apache.paimon.schema.Schema;
-import org.apache.paimon.schema.SchemaManager;
-import org.apache.paimon.schema.SchemaUtils;
-import org.apache.paimon.schema.TableSchema;
-import org.apache.paimon.file.utils.TraceableFileIO;
 import org.apache.paimon.fs.Path;
 import org.apache.paimon.fs.local.LocalFileIO;
+import org.apache.paimon.operation.AbstractFileStoreWrite;
 import org.apache.paimon.options.MemorySize;
 import org.apache.paimon.options.Options;
 import org.apache.paimon.reader.RecordReaderIterator;
+import org.apache.paimon.schema.Schema;
+import org.apache.paimon.schema.SchemaManager;
+import org.apache.paimon.schema.SchemaUtils;
+import org.apache.paimon.schema.TableSchema;
 import org.apache.paimon.table.FileStoreTable;
 import org.apache.paimon.table.FileStoreTableFactory;
 import org.apache.paimon.table.source.TableScan;
 import org.apache.paimon.types.DataType;
 import org.apache.paimon.types.DataTypes;
 import org.apache.paimon.types.RowType;
+import org.apache.paimon.utils.TraceableFileIO;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/paimon-core/src/test/java/org/apache/paimon/table/source/BatchDataTableScanTest.java b/paimon-core/src/test/java/org/apache/paimon/table/source/BatchDataTableScanTest.java
index 4461cdcc6..870801e45 100644
--- a/paimon-core/src/test/java/org/apache/paimon/table/source/BatchDataTableScanTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/table/source/BatchDataTableScanTest.java
@@ -18,11 +18,11 @@
 
 package org.apache.paimon.table.source;
 
-import org.apache.paimon.file.utils.SnapshotManager;
 import org.apache.paimon.table.sink.StreamTableCommit;
 import org.apache.paimon.table.sink.StreamTableWrite;
 import org.apache.paimon.table.source.snapshot.ScannerTestBase;
 import org.apache.paimon.types.RowKind;
+import org.apache.paimon.utils.SnapshotManager;
 import org.junit.jupiter.api.Test;
 
 import java.util.Arrays;
diff --git a/paimon-core/src/test/java/org/apache/paimon/table/source/RowDataRecordIteratorTestBase.java b/paimon-core/src/test/java/org/apache/paimon/table/source/RowDataRecordIteratorTestBase.java
index dc3f14608..648ee1169 100644
--- a/paimon-core/src/test/java/org/apache/paimon/table/source/RowDataRecordIteratorTestBase.java
+++ b/paimon-core/src/test/java/org/apache/paimon/table/source/RowDataRecordIteratorTestBase.java
@@ -18,12 +18,12 @@
 
 package org.apache.paimon.table.source;
 
+import org.apache.paimon.KeyValue;
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.file.KeyValue;
-import org.apache.paimon.file.utils.ReusingTestData;
-import org.apache.paimon.file.utils.TestReusingRecordReader;
 import org.apache.paimon.reader.RecordReader;
 import org.apache.paimon.types.RowKind;
+import org.apache.paimon.utils.ReusingTestData;
+import org.apache.paimon.utils.TestReusingRecordReader;
 
 import java.io.IOException;
 import java.util.List;
diff --git a/paimon-core/src/test/java/org/apache/paimon/table/source/ValueContentRowDataRecordIteratorTest.java b/paimon-core/src/test/java/org/apache/paimon/table/source/ValueContentRowDataRecordIteratorTest.java
index 18270c25c..e8f495bfe 100644
--- a/paimon-core/src/test/java/org/apache/paimon/table/source/ValueContentRowDataRecordIteratorTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/table/source/ValueContentRowDataRecordIteratorTest.java
@@ -18,8 +18,8 @@
 
 package org.apache.paimon.table.source;
 
-import org.apache.paimon.file.utils.ReusingTestData;
 import org.apache.paimon.types.RowKind;
+import org.apache.paimon.utils.ReusingTestData;
 import org.junit.jupiter.api.Test;
 
 import java.util.Arrays;
diff --git a/paimon-core/src/test/java/org/apache/paimon/table/source/ValueCountRowDataRecordIteratorTest.java b/paimon-core/src/test/java/org/apache/paimon/table/source/ValueCountRowDataRecordIteratorTest.java
index 091ce76c2..074ce3e10 100644
--- a/paimon-core/src/test/java/org/apache/paimon/table/source/ValueCountRowDataRecordIteratorTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/table/source/ValueCountRowDataRecordIteratorTest.java
@@ -18,9 +18,9 @@
 
 package org.apache.paimon.table.source;
 
-import org.apache.paimon.file.utils.ReusingTestData;
 import org.apache.paimon.types.RowKind;
 import org.apache.paimon.utils.ProjectedRow;
+import org.apache.paimon.utils.ReusingTestData;
 import org.junit.jupiter.api.Test;
 
 import java.util.Arrays;
diff --git a/paimon-core/src/test/java/org/apache/paimon/table/source/snapshot/BoundedWatermarkFollowUpScannerTest.java b/paimon-core/src/test/java/org/apache/paimon/table/source/snapshot/BoundedWatermarkFollowUpScannerTest.java
index 6d860d696..b613722c4 100644
--- a/paimon-core/src/test/java/org/apache/paimon/table/source/snapshot/BoundedWatermarkFollowUpScannerTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/table/source/snapshot/BoundedWatermarkFollowUpScannerTest.java
@@ -18,10 +18,10 @@
 
 package org.apache.paimon.table.source.snapshot;
 
-import org.apache.paimon.file.Snapshot;
+import org.apache.paimon.Snapshot;
 import org.apache.paimon.manifest.ManifestCommittable;
-import org.apache.paimon.file.utils.SnapshotManager;
 import org.apache.paimon.table.sink.TableCommitImpl;
+import org.apache.paimon.utils.SnapshotManager;
 import org.junit.jupiter.api.Test;
 
 import static org.assertj.core.api.Assertions.assertThat;
diff --git a/paimon-core/src/test/java/org/apache/paimon/table/source/snapshot/CompactedStartingScannerTest.java b/paimon-core/src/test/java/org/apache/paimon/table/source/snapshot/CompactedStartingScannerTest.java
index 34fcc24b7..17bd37d72 100644
--- a/paimon-core/src/test/java/org/apache/paimon/table/source/snapshot/CompactedStartingScannerTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/table/source/snapshot/CompactedStartingScannerTest.java
@@ -18,11 +18,11 @@
 
 package org.apache.paimon.table.source.snapshot;
 
-import org.apache.paimon.file.utils.SnapshotManager;
 import org.apache.paimon.table.sink.StreamTableCommit;
 import org.apache.paimon.table.sink.StreamTableWrite;
 import org.apache.paimon.table.source.DataTableScan;
 import org.apache.paimon.types.RowKind;
+import org.apache.paimon.utils.SnapshotManager;
 import org.junit.jupiter.api.Test;
 
 import java.util.Arrays;
diff --git a/paimon-core/src/test/java/org/apache/paimon/table/source/snapshot/CompactionChangelogFollowUpScannerTest.java b/paimon-core/src/test/java/org/apache/paimon/table/source/snapshot/CompactionChangelogFollowUpScannerTest.java
index 7156dbc09..f73be02f6 100644
--- a/paimon-core/src/test/java/org/apache/paimon/table/source/snapshot/CompactionChangelogFollowUpScannerTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/table/source/snapshot/CompactionChangelogFollowUpScannerTest.java
@@ -19,8 +19,7 @@
 package org.apache.paimon.table.source.snapshot;
 
 import org.apache.paimon.CoreOptions;
-import org.apache.paimon.file.Snapshot;
-import org.apache.paimon.file.utils.SnapshotManager;
+import org.apache.paimon.Snapshot;
 import org.apache.paimon.options.Options;
 import org.apache.paimon.table.FileStoreTable;
 import org.apache.paimon.table.sink.StreamTableCommit;
@@ -28,6 +27,7 @@ import org.apache.paimon.table.sink.StreamTableWrite;
 import org.apache.paimon.table.source.DataTableScan;
 import org.apache.paimon.table.source.TableRead;
 import org.apache.paimon.types.RowKind;
+import org.apache.paimon.utils.SnapshotManager;
 import org.junit.jupiter.api.Test;
 
 import java.util.Arrays;
diff --git a/paimon-core/src/test/java/org/apache/paimon/table/source/snapshot/ContinuousCompactorFollowUpScannerTest.java b/paimon-core/src/test/java/org/apache/paimon/table/source/snapshot/ContinuousCompactorFollowUpScannerTest.java
index ad6712986..5122bba92 100644
--- a/paimon-core/src/test/java/org/apache/paimon/table/source/snapshot/ContinuousCompactorFollowUpScannerTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/table/source/snapshot/ContinuousCompactorFollowUpScannerTest.java
@@ -18,16 +18,16 @@
 
 package org.apache.paimon.table.source.snapshot;
 
+import org.apache.paimon.Snapshot;
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.file.Snapshot;
 import org.apache.paimon.io.DataFileMetaSerializer;
-import org.apache.paimon.file.utils.SnapshotManager;
 import org.apache.paimon.table.sink.StreamTableCommit;
 import org.apache.paimon.table.sink.StreamTableWrite;
 import org.apache.paimon.table.source.DataTableScan;
 import org.apache.paimon.table.source.TableRead;
 import org.apache.paimon.table.system.BucketsTable;
 import org.apache.paimon.types.RowKind;
+import org.apache.paimon.utils.SnapshotManager;
 import org.junit.jupiter.api.Test;
 
 import java.io.IOException;
diff --git a/paimon-core/src/test/java/org/apache/paimon/table/source/snapshot/ContinuousCompactorStartingScannerTest.java b/paimon-core/src/test/java/org/apache/paimon/table/source/snapshot/ContinuousCompactorStartingScannerTest.java
index 670cc1aea..acf66aa64 100644
--- a/paimon-core/src/test/java/org/apache/paimon/table/source/snapshot/ContinuousCompactorStartingScannerTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/table/source/snapshot/ContinuousCompactorStartingScannerTest.java
@@ -18,11 +18,11 @@
 
 package org.apache.paimon.table.source.snapshot;
 
-import org.apache.paimon.file.utils.SnapshotManager;
 import org.apache.paimon.table.sink.StreamTableCommit;
 import org.apache.paimon.table.sink.StreamTableWrite;
 import org.apache.paimon.table.source.DataTableScan;
 import org.apache.paimon.types.RowKind;
+import org.apache.paimon.utils.SnapshotManager;
 import org.junit.jupiter.api.Test;
 
 import static org.assertj.core.api.Assertions.assertThat;
diff --git a/paimon-core/src/test/java/org/apache/paimon/table/source/snapshot/ContinuousFromTimestampStartingScannerTest.java b/paimon-core/src/test/java/org/apache/paimon/table/source/snapshot/ContinuousFromTimestampStartingScannerTest.java
index 92ea088cc..2d2bbafac 100644
--- a/paimon-core/src/test/java/org/apache/paimon/table/source/snapshot/ContinuousFromTimestampStartingScannerTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/table/source/snapshot/ContinuousFromTimestampStartingScannerTest.java
@@ -18,11 +18,11 @@
 
 package org.apache.paimon.table.source.snapshot;
 
-import org.apache.paimon.file.utils.SnapshotManager;
 import org.apache.paimon.table.sink.StreamTableCommit;
 import org.apache.paimon.table.sink.StreamTableWrite;
 import org.apache.paimon.table.source.DataTableScan;
 import org.apache.paimon.types.RowKind;
+import org.apache.paimon.utils.SnapshotManager;
 import org.junit.jupiter.api.Test;
 
 import static org.assertj.core.api.Assertions.assertThat;
diff --git a/paimon-core/src/test/java/org/apache/paimon/table/source/snapshot/ContinuousLatestStartingScannerTest.java b/paimon-core/src/test/java/org/apache/paimon/table/source/snapshot/ContinuousLatestStartingScannerTest.java
index cc8427ff3..28ce7a8a3 100644
--- a/paimon-core/src/test/java/org/apache/paimon/table/source/snapshot/ContinuousLatestStartingScannerTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/table/source/snapshot/ContinuousLatestStartingScannerTest.java
@@ -18,11 +18,11 @@
 
 package org.apache.paimon.table.source.snapshot;
 
-import org.apache.paimon.file.utils.SnapshotManager;
 import org.apache.paimon.table.sink.StreamTableCommit;
 import org.apache.paimon.table.sink.StreamTableWrite;
 import org.apache.paimon.table.source.DataTableScan;
 import org.apache.paimon.types.RowKind;
+import org.apache.paimon.utils.SnapshotManager;
 import org.junit.jupiter.api.Test;
 
 import static org.assertj.core.api.Assertions.assertThat;
diff --git a/paimon-core/src/test/java/org/apache/paimon/table/source/snapshot/DeltaFollowUpScannerTest.java b/paimon-core/src/test/java/org/apache/paimon/table/source/snapshot/DeltaFollowUpScannerTest.java
index cb8542a27..bbc3db9d0 100644
--- a/paimon-core/src/test/java/org/apache/paimon/table/source/snapshot/DeltaFollowUpScannerTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/table/source/snapshot/DeltaFollowUpScannerTest.java
@@ -18,13 +18,13 @@
 
 package org.apache.paimon.table.source.snapshot;
 
-import org.apache.paimon.file.Snapshot;
-import org.apache.paimon.file.utils.SnapshotManager;
+import org.apache.paimon.Snapshot;
 import org.apache.paimon.table.sink.StreamTableCommit;
 import org.apache.paimon.table.sink.StreamTableWrite;
 import org.apache.paimon.table.source.DataTableScan;
 import org.apache.paimon.table.source.TableRead;
 import org.apache.paimon.types.RowKind;
+import org.apache.paimon.utils.SnapshotManager;
 import org.junit.jupiter.api.Test;
 
 import java.util.Arrays;
diff --git a/paimon-core/src/test/java/org/apache/paimon/table/source/snapshot/FullStartingScannerTest.java b/paimon-core/src/test/java/org/apache/paimon/table/source/snapshot/FullStartingScannerTest.java
index 9f7136977..8b80622b9 100644
--- a/paimon-core/src/test/java/org/apache/paimon/table/source/snapshot/FullStartingScannerTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/table/source/snapshot/FullStartingScannerTest.java
@@ -18,11 +18,11 @@
 
 package org.apache.paimon.table.source.snapshot;
 
-import org.apache.paimon.file.utils.SnapshotManager;
 import org.apache.paimon.table.sink.StreamTableCommit;
 import org.apache.paimon.table.sink.StreamTableWrite;
 import org.apache.paimon.table.source.DataTableScan;
 import org.apache.paimon.types.RowKind;
+import org.apache.paimon.utils.SnapshotManager;
 import org.junit.jupiter.api.Test;
 
 import java.util.Arrays;
diff --git a/paimon-core/src/test/java/org/apache/paimon/table/source/snapshot/InputChangelogFollowUpScannerTest.java b/paimon-core/src/test/java/org/apache/paimon/table/source/snapshot/InputChangelogFollowUpScannerTest.java
index 944f8a3f8..56053aaa3 100644
--- a/paimon-core/src/test/java/org/apache/paimon/table/source/snapshot/InputChangelogFollowUpScannerTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/table/source/snapshot/InputChangelogFollowUpScannerTest.java
@@ -19,8 +19,7 @@
 package org.apache.paimon.table.source.snapshot;
 
 import org.apache.paimon.CoreOptions;
-import org.apache.paimon.file.Snapshot;
-import org.apache.paimon.file.utils.SnapshotManager;
+import org.apache.paimon.Snapshot;
 import org.apache.paimon.options.Options;
 import org.apache.paimon.table.FileStoreTable;
 import org.apache.paimon.table.sink.StreamTableCommit;
@@ -28,6 +27,7 @@ import org.apache.paimon.table.sink.StreamTableWrite;
 import org.apache.paimon.table.source.DataTableScan;
 import org.apache.paimon.table.source.TableRead;
 import org.apache.paimon.types.RowKind;
+import org.apache.paimon.utils.SnapshotManager;
 import org.junit.jupiter.api.Test;
 
 import java.util.Arrays;
diff --git a/paimon-core/src/test/java/org/apache/paimon/table/source/snapshot/ScannerTestBase.java b/paimon-core/src/test/java/org/apache/paimon/table/source/snapshot/ScannerTestBase.java
index 11bdea810..748102071 100644
--- a/paimon-core/src/test/java/org/apache/paimon/table/source/snapshot/ScannerTestBase.java
+++ b/paimon-core/src/test/java/org/apache/paimon/table/source/snapshot/ScannerTestBase.java
@@ -22,17 +22,16 @@ import org.apache.paimon.data.BinaryRow;
 import org.apache.paimon.data.BinaryRowWriter;
 import org.apache.paimon.data.GenericRow;
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.mergetree.compact.ConcatRecordReader;
-import org.apache.paimon.schema.Schema;
-import org.apache.paimon.schema.SchemaManager;
-import org.apache.paimon.schema.TableSchema;
-import org.apache.paimon.file.utils.TraceableFileIO;
 import org.apache.paimon.fs.FileIO;
 import org.apache.paimon.fs.FileIOFinder;
 import org.apache.paimon.fs.Path;
+import org.apache.paimon.mergetree.compact.ConcatRecordReader;
 import org.apache.paimon.options.Options;
 import org.apache.paimon.reader.RecordReader;
 import org.apache.paimon.reader.RecordReaderIterator;
+import org.apache.paimon.schema.Schema;
+import org.apache.paimon.schema.SchemaManager;
+import org.apache.paimon.schema.TableSchema;
 import org.apache.paimon.table.FileStoreTable;
 import org.apache.paimon.table.FileStoreTableFactory;
 import org.apache.paimon.table.source.Split;
@@ -41,6 +40,7 @@ import org.apache.paimon.types.DataType;
 import org.apache.paimon.types.DataTypes;
 import org.apache.paimon.types.RowKind;
 import org.apache.paimon.types.RowType;
+import org.apache.paimon.utils.TraceableFileIO;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.io.TempDir;
 
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/utils/BlockingIterator.java b/paimon-core/src/test/java/org/apache/paimon/utils/BlockingIterator.java
similarity index 99%
rename from paimon-core/src/test/java/org/apache/paimon/file/utils/BlockingIterator.java
rename to paimon-core/src/test/java/org/apache/paimon/utils/BlockingIterator.java
index 517b429e5..a87e47d86 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/utils/BlockingIterator.java
+++ b/paimon-core/src/test/java/org/apache/paimon/utils/BlockingIterator.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.utils;
+package org.apache.paimon.utils;
 
 import java.util.ArrayList;
 import java.util.Iterator;
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/utils/FailingFileIO.java b/paimon-core/src/test/java/org/apache/paimon/utils/FailingFileIO.java
similarity index 98%
rename from paimon-core/src/test/java/org/apache/paimon/file/utils/FailingFileIO.java
rename to paimon-core/src/test/java/org/apache/paimon/utils/FailingFileIO.java
index 4f9955d2c..022b03eef 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/utils/FailingFileIO.java
+++ b/paimon-core/src/test/java/org/apache/paimon/utils/FailingFileIO.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.utils;
+package org.apache.paimon.utils;
 
 import org.apache.paimon.fs.FileIO;
 import org.apache.paimon.fs.FileIOLoader;
@@ -27,7 +27,6 @@ import org.apache.paimon.fs.PositionOutputStreamWrapper;
 import org.apache.paimon.fs.SeekableInputStream;
 import org.apache.paimon.fs.SeekableInputStreamWrapper;
 import org.apache.paimon.fs.local.LocalFileIO;
-import org.apache.paimon.utils.ExceptionUtils;
 
 import java.io.File;
 import java.io.FileNotFoundException;
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/utils/FileStorePathFactoryTest.java b/paimon-core/src/test/java/org/apache/paimon/utils/FileStorePathFactoryTest.java
similarity index 99%
rename from paimon-core/src/test/java/org/apache/paimon/file/utils/FileStorePathFactoryTest.java
rename to paimon-core/src/test/java/org/apache/paimon/utils/FileStorePathFactoryTest.java
index 80a2cf0de..02140089c 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/utils/FileStorePathFactoryTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/utils/FileStorePathFactoryTest.java
@@ -16,14 +16,14 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.utils;
+package org.apache.paimon.utils;
 
 import org.apache.paimon.CoreOptions;
 import org.apache.paimon.data.BinaryRow;
 import org.apache.paimon.data.BinaryRowWriter;
 import org.apache.paimon.data.BinaryString;
-import org.apache.paimon.io.DataFilePathFactory;
 import org.apache.paimon.fs.Path;
+import org.apache.paimon.io.DataFilePathFactory;
 import org.apache.paimon.types.DataType;
 import org.apache.paimon.types.IntType;
 import org.apache.paimon.types.RowType;
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/utils/ObjectSerializerTestBase.java b/paimon-core/src/test/java/org/apache/paimon/utils/ObjectSerializerTestBase.java
similarity index 98%
rename from paimon-core/src/test/java/org/apache/paimon/file/utils/ObjectSerializerTestBase.java
rename to paimon-core/src/test/java/org/apache/paimon/utils/ObjectSerializerTestBase.java
index 208605da9..83a002b2b 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/utils/ObjectSerializerTestBase.java
+++ b/paimon-core/src/test/java/org/apache/paimon/utils/ObjectSerializerTestBase.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.utils;
+package org.apache.paimon.utils;
 
 import org.apache.paimon.io.DataInputDeserializer;
 import org.apache.paimon.io.DataOutputSerializer;
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/utils/OffsetRowTest.java b/paimon-core/src/test/java/org/apache/paimon/utils/OffsetRowTest.java
similarity index 99%
rename from paimon-core/src/test/java/org/apache/paimon/file/utils/OffsetRowTest.java
rename to paimon-core/src/test/java/org/apache/paimon/utils/OffsetRowTest.java
index 1e286487e..9f7fed237 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/utils/OffsetRowTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/utils/OffsetRowTest.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.utils;
+package org.apache.paimon.utils;
 
 import org.apache.paimon.data.BinaryArray;
 import org.apache.paimon.data.BinaryArrayWriter;
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/utils/ReusingKeyValue.java b/paimon-core/src/test/java/org/apache/paimon/utils/ReusingKeyValue.java
similarity index 95%
rename from paimon-core/src/test/java/org/apache/paimon/file/utils/ReusingKeyValue.java
rename to paimon-core/src/test/java/org/apache/paimon/utils/ReusingKeyValue.java
index 0ef5ce88f..2e37c6b9a 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/utils/ReusingKeyValue.java
+++ b/paimon-core/src/test/java/org/apache/paimon/utils/ReusingKeyValue.java
@@ -16,11 +16,11 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.utils;
+package org.apache.paimon.utils;
 
+import org.apache.paimon.KeyValue;
 import org.apache.paimon.data.BinaryRow;
 import org.apache.paimon.data.BinaryRowWriter;
-import org.apache.paimon.file.KeyValue;
 
 /**
  * Util class which reuses a {@link KeyValue} to test if other components handle reuse correctly.
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/utils/ReusingTestData.java b/paimon-core/src/test/java/org/apache/paimon/utils/ReusingTestData.java
similarity index 97%
rename from paimon-core/src/test/java/org/apache/paimon/file/utils/ReusingTestData.java
rename to paimon-core/src/test/java/org/apache/paimon/utils/ReusingTestData.java
index 549128241..b96eef5ba 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/utils/ReusingTestData.java
+++ b/paimon-core/src/test/java/org/apache/paimon/utils/ReusingTestData.java
@@ -16,11 +16,10 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.utils;
+package org.apache.paimon.utils;
 
-import org.apache.paimon.file.KeyValue;
+import org.apache.paimon.KeyValue;
 import org.apache.paimon.types.RowKind;
-import org.apache.paimon.utils.Preconditions;
 
 import java.util.ArrayList;
 import java.util.HashSet;
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/utils/SnapshotManagerTest.java b/paimon-core/src/test/java/org/apache/paimon/utils/SnapshotManagerTest.java
similarity index 97%
rename from paimon-core/src/test/java/org/apache/paimon/file/utils/SnapshotManagerTest.java
rename to paimon-core/src/test/java/org/apache/paimon/utils/SnapshotManagerTest.java
index 1fbba27f9..99c785b8f 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/utils/SnapshotManagerTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/utils/SnapshotManagerTest.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.utils;
+package org.apache.paimon.utils;
 
 import org.apache.paimon.fs.Path;
 import org.apache.paimon.fs.local.LocalFileIO;
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/utils/TestReusingRecordReader.java b/paimon-core/src/test/java/org/apache/paimon/utils/TestReusingRecordReader.java
similarity index 97%
rename from paimon-core/src/test/java/org/apache/paimon/file/utils/TestReusingRecordReader.java
rename to paimon-core/src/test/java/org/apache/paimon/utils/TestReusingRecordReader.java
index 0320bbeec..dd4fd441e 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/utils/TestReusingRecordReader.java
+++ b/paimon-core/src/test/java/org/apache/paimon/utils/TestReusingRecordReader.java
@@ -16,9 +16,9 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.utils;
+package org.apache.paimon.utils;
 
-import org.apache.paimon.file.KeyValue;
+import org.apache.paimon.KeyValue;
 import org.apache.paimon.reader.RecordReader;
 
 import javax.annotation.Nullable;
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/utils/TraceableFileIO.java b/paimon-core/src/test/java/org/apache/paimon/utils/TraceableFileIO.java
similarity index 99%
rename from paimon-core/src/test/java/org/apache/paimon/file/utils/TraceableFileIO.java
rename to paimon-core/src/test/java/org/apache/paimon/utils/TraceableFileIO.java
index df2f26b49..4418fdd10 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/utils/TraceableFileIO.java
+++ b/paimon-core/src/test/java/org/apache/paimon/utils/TraceableFileIO.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.utils;
+package org.apache.paimon.utils;
 
 import org.apache.flink.table.store.catalog.CatalogContext;
 
@@ -29,7 +29,6 @@ import org.apache.paimon.fs.PositionOutputStreamWrapper;
 import org.apache.paimon.fs.SeekableInputStream;
 import org.apache.paimon.fs.SeekableInputStreamWrapper;
 import org.apache.paimon.fs.local.LocalFileIO;
-import org.apache.paimon.utils.ThreadUtils;
 
 import javax.annotation.concurrent.GuardedBy;
 
diff --git a/paimon-core/src/test/resources/META-INF/services/org.apache.paimon.format.FileFormatFactory b/paimon-core/src/test/resources/META-INF/services/org.apache.paimon.format.FileFormatFactory
index eca7d57a4..2f39cb34a 100644
--- a/paimon-core/src/test/resources/META-INF/services/org.apache.paimon.format.FileFormatFactory
+++ b/paimon-core/src/test/resources/META-INF/services/org.apache.paimon.format.FileFormatFactory
@@ -13,4 +13,4 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-org.apache.paimon.file.format.FileStatsExtractingAvroFormatFactory
\ No newline at end of file
+org.apache.paimon.format.FileStatsExtractingAvroFormatFactory
\ No newline at end of file
diff --git a/paimon-core/src/test/resources/META-INF/services/org.apache.paimon.fs.FileIOLoader b/paimon-core/src/test/resources/META-INF/services/org.apache.paimon.fs.FileIOLoader
index 7e3ef65e3..677f3394c 100644
--- a/paimon-core/src/test/resources/META-INF/services/org.apache.paimon.fs.FileIOLoader
+++ b/paimon-core/src/test/resources/META-INF/services/org.apache.paimon.fs.FileIOLoader
@@ -13,5 +13,5 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-org.apache.paimon.file.utils.FailingFileIO$Loader
-org.apache.paimon.file.utils.TraceableFileIO$Loader
+org.apache.paimon.utils.FailingFileIO$Loader
+org.apache.paimon.utils.TraceableFileIO$Loader
diff --git a/paimon-flink/paimon-flink-1.14/src/test/java/org/apache/paimon/connector/CatalogITCaseBase.java b/paimon-flink/paimon-flink-1.14/src/test/java/org/apache/paimon/connector/CatalogITCaseBase.java
index 3f6f8393e..c820ab302 100644
--- a/paimon-flink/paimon-flink-1.14/src/test/java/org/apache/paimon/connector/CatalogITCaseBase.java
+++ b/paimon-flink/paimon-flink-1.14/src/test/java/org/apache/paimon/connector/CatalogITCaseBase.java
@@ -36,10 +36,10 @@ import org.apache.flink.util.CloseableIterator;
 
 import org.apache.flink.shaded.guava30.com.google.common.collect.ImmutableList;
 
-import org.apache.paimon.file.Snapshot;
-import org.apache.paimon.file.utils.SnapshotManager;
+import org.apache.paimon.Snapshot;
 import org.apache.paimon.fs.Path;
 import org.apache.paimon.fs.local.LocalFileIO;
+import org.apache.paimon.utils.SnapshotManager;
 import org.junit.Before;
 
 import javax.annotation.Nullable;
diff --git a/paimon-flink/paimon-flink-1.14/src/test/java/org/apache/paimon/connector/ContinuousFileStoreITCase.java b/paimon-flink/paimon-flink-1.14/src/test/java/org/apache/paimon/connector/ContinuousFileStoreITCase.java
index f8221003f..1eb637033 100644
--- a/paimon-flink/paimon-flink-1.14/src/test/java/org/apache/paimon/connector/ContinuousFileStoreITCase.java
+++ b/paimon-flink/paimon-flink-1.14/src/test/java/org/apache/paimon/connector/ContinuousFileStoreITCase.java
@@ -22,10 +22,10 @@ import org.apache.flink.types.Row;
 
 import org.apache.flink.shaded.guava30.com.google.common.collect.ImmutableList;
 
-import org.apache.paimon.file.Snapshot;
-import org.apache.paimon.file.utils.BlockingIterator;
-import org.apache.paimon.file.utils.SnapshotManager;
+import org.apache.paimon.Snapshot;
 import org.apache.paimon.fs.local.LocalFileIO;
+import org.apache.paimon.utils.BlockingIterator;
+import org.apache.paimon.utils.SnapshotManager;
 import org.junit.Test;
 
 import java.util.ArrayList;
diff --git a/paimon-flink/paimon-flink-1.14/src/test/java/org/apache/paimon/connector/FlinkActionITCase.java b/paimon-flink/paimon-flink-1.14/src/test/java/org/apache/paimon/connector/FlinkActionITCase.java
index 4771be850..20fdf6a86 100644
--- a/paimon-flink/paimon-flink-1.14/src/test/java/org/apache/paimon/connector/FlinkActionITCase.java
+++ b/paimon-flink/paimon-flink-1.14/src/test/java/org/apache/paimon/connector/FlinkActionITCase.java
@@ -21,7 +21,7 @@ package org.apache.paimon.connector;
 import org.apache.flink.types.Row;
 
 import org.apache.paimon.connector.action.DeleteAction;
-import org.apache.paimon.file.utils.BlockingIterator;
+import org.apache.paimon.utils.BlockingIterator;
 import org.junit.Test;
 
 import java.util.Collections;
diff --git a/paimon-flink/paimon-flink-1.14/src/test/java/org/apache/paimon/connector/LookupJoinITCase.java b/paimon-flink/paimon-flink-1.14/src/test/java/org/apache/paimon/connector/LookupJoinITCase.java
index 105e7ee6d..c64159dc6 100644
--- a/paimon-flink/paimon-flink-1.14/src/test/java/org/apache/paimon/connector/LookupJoinITCase.java
+++ b/paimon-flink/paimon-flink-1.14/src/test/java/org/apache/paimon/connector/LookupJoinITCase.java
@@ -20,7 +20,7 @@ package org.apache.paimon.connector;
 
 import org.apache.flink.types.Row;
 
-import org.apache.paimon.file.utils.BlockingIterator;
+import org.apache.paimon.utils.BlockingIterator;
 import org.junit.Test;
 
 import java.util.Arrays;
diff --git a/paimon-flink/paimon-flink-1.15/src/test/java/org/apache/paimon/connector/CatalogITCaseBase.java b/paimon-flink/paimon-flink-1.15/src/test/java/org/apache/paimon/connector/CatalogITCaseBase.java
index 3f6f8393e..c820ab302 100644
--- a/paimon-flink/paimon-flink-1.15/src/test/java/org/apache/paimon/connector/CatalogITCaseBase.java
+++ b/paimon-flink/paimon-flink-1.15/src/test/java/org/apache/paimon/connector/CatalogITCaseBase.java
@@ -36,10 +36,10 @@ import org.apache.flink.util.CloseableIterator;
 
 import org.apache.flink.shaded.guava30.com.google.common.collect.ImmutableList;
 
-import org.apache.paimon.file.Snapshot;
-import org.apache.paimon.file.utils.SnapshotManager;
+import org.apache.paimon.Snapshot;
 import org.apache.paimon.fs.Path;
 import org.apache.paimon.fs.local.LocalFileIO;
+import org.apache.paimon.utils.SnapshotManager;
 import org.junit.Before;
 
 import javax.annotation.Nullable;
diff --git a/paimon-flink/paimon-flink-1.15/src/test/java/org/apache/paimon/connector/ContinuousFileStoreITCase.java b/paimon-flink/paimon-flink-1.15/src/test/java/org/apache/paimon/connector/ContinuousFileStoreITCase.java
index f8221003f..1eb637033 100644
--- a/paimon-flink/paimon-flink-1.15/src/test/java/org/apache/paimon/connector/ContinuousFileStoreITCase.java
+++ b/paimon-flink/paimon-flink-1.15/src/test/java/org/apache/paimon/connector/ContinuousFileStoreITCase.java
@@ -22,10 +22,10 @@ import org.apache.flink.types.Row;
 
 import org.apache.flink.shaded.guava30.com.google.common.collect.ImmutableList;
 
-import org.apache.paimon.file.Snapshot;
-import org.apache.paimon.file.utils.BlockingIterator;
-import org.apache.paimon.file.utils.SnapshotManager;
+import org.apache.paimon.Snapshot;
 import org.apache.paimon.fs.local.LocalFileIO;
+import org.apache.paimon.utils.BlockingIterator;
+import org.apache.paimon.utils.SnapshotManager;
 import org.junit.Test;
 
 import java.util.ArrayList;
diff --git a/paimon-flink/paimon-flink-1.15/src/test/java/org/apache/paimon/connector/FlinkActionITCase.java b/paimon-flink/paimon-flink-1.15/src/test/java/org/apache/paimon/connector/FlinkActionITCase.java
index 4771be850..20fdf6a86 100644
--- a/paimon-flink/paimon-flink-1.15/src/test/java/org/apache/paimon/connector/FlinkActionITCase.java
+++ b/paimon-flink/paimon-flink-1.15/src/test/java/org/apache/paimon/connector/FlinkActionITCase.java
@@ -21,7 +21,7 @@ package org.apache.paimon.connector;
 import org.apache.flink.types.Row;
 
 import org.apache.paimon.connector.action.DeleteAction;
-import org.apache.paimon.file.utils.BlockingIterator;
+import org.apache.paimon.utils.BlockingIterator;
 import org.junit.Test;
 
 import java.util.Collections;
diff --git a/paimon-flink/paimon-flink-1.15/src/test/java/org/apache/paimon/connector/LookupJoinITCase.java b/paimon-flink/paimon-flink-1.15/src/test/java/org/apache/paimon/connector/LookupJoinITCase.java
index 105e7ee6d..c64159dc6 100644
--- a/paimon-flink/paimon-flink-1.15/src/test/java/org/apache/paimon/connector/LookupJoinITCase.java
+++ b/paimon-flink/paimon-flink-1.15/src/test/java/org/apache/paimon/connector/LookupJoinITCase.java
@@ -20,7 +20,7 @@ package org.apache.paimon.connector;
 
 import org.apache.flink.types.Row;
 
-import org.apache.paimon.file.utils.BlockingIterator;
+import org.apache.paimon.utils.BlockingIterator;
 import org.junit.Test;
 
 import java.util.Arrays;
diff --git a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/AbstractTableStoreFactory.java b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/AbstractTableStoreFactory.java
index 61a288df2..e1da476aa 100644
--- a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/AbstractTableStoreFactory.java
+++ b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/AbstractTableStoreFactory.java
@@ -38,9 +38,9 @@ import org.apache.paimon.connector.log.LogStoreTableFactory;
 import org.apache.paimon.connector.sink.TableStoreSink;
 import org.apache.paimon.connector.source.SystemTableSource;
 import org.apache.paimon.connector.source.TableStoreSource;
+import org.apache.paimon.options.Options;
 import org.apache.paimon.schema.Schema;
 import org.apache.paimon.schema.TableSchema;
-import org.apache.paimon.options.Options;
 import org.apache.paimon.table.FileStoreTable;
 import org.apache.paimon.table.FileStoreTableFactory;
 import org.apache.paimon.utils.Preconditions;
diff --git a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/TableStoreConnectorFactory.java b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/TableStoreConnectorFactory.java
index 6ed238933..a78e38c52 100644
--- a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/TableStoreConnectorFactory.java
+++ b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/TableStoreConnectorFactory.java
@@ -25,12 +25,12 @@ import org.apache.flink.table.factories.DynamicTableFactory;
 import org.apache.flink.table.factories.FactoryUtil;
 
 import org.apache.paimon.CoreOptions;
-import org.apache.paimon.connector.sink.TableStoreSink;
 import org.apache.paimon.catalog.CatalogLock;
-import org.apache.paimon.schema.SchemaManager;
+import org.apache.paimon.connector.sink.TableStoreSink;
 import org.apache.paimon.fs.FileIO;
 import org.apache.paimon.fs.Path;
 import org.apache.paimon.options.Options;
+import org.apache.paimon.schema.SchemaManager;
 
 import javax.annotation.Nullable;
 
diff --git a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/action/ActionBase.java b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/action/ActionBase.java
index d028a06c5..10481a7e2 100644
--- a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/action/ActionBase.java
+++ b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/action/ActionBase.java
@@ -27,13 +27,13 @@ import org.apache.flink.table.data.RowData;
 import org.apache.flink.table.store.catalog.CatalogContext;
 import org.apache.flink.table.types.logical.LogicalType;
 
+import org.apache.paimon.catalog.Catalog;
+import org.apache.paimon.catalog.CatalogFactory;
+import org.apache.paimon.catalog.Identifier;
 import org.apache.paimon.connector.FlinkCatalog;
 import org.apache.paimon.connector.LogicalTypeConversion;
 import org.apache.paimon.connector.sink.FlinkSinkBuilder;
 import org.apache.paimon.connector.utils.TableEnvironmentUtils;
-import org.apache.paimon.catalog.Catalog;
-import org.apache.paimon.catalog.CatalogFactory;
-import org.apache.paimon.catalog.Identifier;
 import org.apache.paimon.operation.Lock;
 import org.apache.paimon.options.CatalogOptions;
 import org.apache.paimon.options.Options;
diff --git a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/lookup/FileStoreLookupFunction.java b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/lookup/FileStoreLookupFunction.java
index 9a8a03f4b..2502d5de8 100644
--- a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/lookup/FileStoreLookupFunction.java
+++ b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/lookup/FileStoreLookupFunction.java
@@ -29,10 +29,10 @@ import org.apache.paimon.CoreOptions;
 import org.apache.paimon.connector.FlinkRowData;
 import org.apache.paimon.connector.FlinkRowWrapper;
 import org.apache.paimon.data.InternalRow;
+import org.apache.paimon.options.Options;
 import org.apache.paimon.predicate.Predicate;
 import org.apache.paimon.predicate.PredicateFilter;
 import org.apache.paimon.schema.TableSchema;
-import org.apache.paimon.options.Options;
 import org.apache.paimon.table.FileStoreTable;
 import org.apache.paimon.table.source.StreamDataTableScan;
 import org.apache.paimon.table.source.TableStreamingReader;
diff --git a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/sink/FullChangelogStoreSinkWrite.java b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/sink/FullChangelogStoreSinkWrite.java
index e3cbe14c5..ebc03fe54 100644
--- a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/sink/FullChangelogStoreSinkWrite.java
+++ b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/sink/FullChangelogStoreSinkWrite.java
@@ -31,13 +31,13 @@ import org.apache.flink.runtime.state.StateInitializationContext;
 import org.apache.flink.runtime.state.StateSnapshotContext;
 
 import org.apache.paimon.CoreOptions;
+import org.apache.paimon.Snapshot;
 import org.apache.paimon.connector.BinaryRowTypeSerializer;
 import org.apache.paimon.data.BinaryRow;
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.file.Snapshot;
-import org.apache.paimon.file.utils.SnapshotManager;
 import org.apache.paimon.table.FileStoreTable;
 import org.apache.paimon.table.sink.SinkRecord;
+import org.apache.paimon.utils.SnapshotManager;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/sink/OffsetRowDataHashStreamPartitioner.java b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/sink/OffsetRowDataHashStreamPartitioner.java
index cd27e2d6d..5690fef1f 100644
--- a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/sink/OffsetRowDataHashStreamPartitioner.java
+++ b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/sink/OffsetRowDataHashStreamPartitioner.java
@@ -26,8 +26,8 @@ import org.apache.flink.table.data.RowData;
 
 import org.apache.paimon.connector.FlinkRowWrapper;
 import org.apache.paimon.data.serializer.InternalRowSerializer;
-import org.apache.paimon.file.utils.OffsetRow;
 import org.apache.paimon.types.RowType;
+import org.apache.paimon.utils.OffsetRow;
 
 /**
  * {@link StreamPartitioner} to partition {@link RowData} according to its hash value from an {@link
diff --git a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/sink/RestoreAndFailCommittableStateManager.java b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/sink/RestoreAndFailCommittableStateManager.java
index f5c558679..c95d177f1 100644
--- a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/sink/RestoreAndFailCommittableStateManager.java
+++ b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/sink/RestoreAndFailCommittableStateManager.java
@@ -26,7 +26,7 @@ import org.apache.flink.runtime.state.StateSnapshotContext;
 import org.apache.flink.streaming.api.operators.util.SimpleVersionedListState;
 
 import org.apache.paimon.manifest.ManifestCommittable;
-import org.apache.paimon.file.utils.SerializableSupplier;
+import org.apache.paimon.utils.SerializableSupplier;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/sink/StoreCompactOperator.java b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/sink/StoreCompactOperator.java
index e9145e119..988885f71 100644
--- a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/sink/StoreCompactOperator.java
+++ b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/sink/StoreCompactOperator.java
@@ -28,8 +28,8 @@ import org.apache.paimon.data.BinaryRow;
 import org.apache.paimon.data.serializer.InternalRowSerializer;
 import org.apache.paimon.io.DataFileMeta;
 import org.apache.paimon.io.DataFileMetaSerializer;
-import org.apache.paimon.file.utils.OffsetRow;
 import org.apache.paimon.table.FileStoreTable;
+import org.apache.paimon.utils.OffsetRow;
 import org.apache.paimon.utils.Preconditions;
 
 import java.io.IOException;
diff --git a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/sink/TableStoreSink.java b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/sink/TableStoreSink.java
index 8d9d42812..f88f94745 100644
--- a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/sink/TableStoreSink.java
+++ b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/sink/TableStoreSink.java
@@ -30,12 +30,12 @@ import org.apache.flink.types.RowKind;
 import org.apache.paimon.CoreOptions.ChangelogProducer;
 import org.apache.paimon.CoreOptions.LogChangelogMode;
 import org.apache.paimon.CoreOptions.MergeEngine;
+import org.apache.paimon.catalog.CatalogLock;
 import org.apache.paimon.connector.FlinkCatalog;
 import org.apache.paimon.connector.FlinkConnectorOptions;
 import org.apache.paimon.connector.TableStoreDataStreamSinkProvider;
 import org.apache.paimon.connector.log.LogSinkProvider;
 import org.apache.paimon.connector.log.LogStoreTableFactory;
-import org.apache.paimon.catalog.CatalogLock;
 import org.apache.paimon.operation.Lock;
 import org.apache.paimon.options.Options;
 import org.apache.paimon.table.AppendOnlyFileStoreTable;
diff --git a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/source/FlinkSourceBuilder.java b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/source/FlinkSourceBuilder.java
index 4c3e98a60..08d42f068 100644
--- a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/source/FlinkSourceBuilder.java
+++ b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/source/FlinkSourceBuilder.java
@@ -34,8 +34,8 @@ import org.apache.paimon.CoreOptions;
 import org.apache.paimon.CoreOptions.StartupMode;
 import org.apache.paimon.connector.Projection;
 import org.apache.paimon.connector.log.LogSourceProvider;
-import org.apache.paimon.predicate.Predicate;
 import org.apache.paimon.options.Options;
+import org.apache.paimon.predicate.Predicate;
 import org.apache.paimon.table.FileStoreTable;
 import org.apache.paimon.table.source.StreamDataTableScan;
 
diff --git a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/source/LogHybridSourceFactory.java b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/source/LogHybridSourceFactory.java
index 5cd456fa7..c921b5367 100644
--- a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/source/LogHybridSourceFactory.java
+++ b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/source/LogHybridSourceFactory.java
@@ -23,8 +23,8 @@ import org.apache.flink.connector.base.source.hybrid.HybridSource;
 import org.apache.flink.connector.base.source.hybrid.HybridSource.SourceFactory;
 import org.apache.flink.table.data.RowData;
 
+import org.apache.paimon.Snapshot;
 import org.apache.paimon.connector.log.LogSourceProvider;
-import org.apache.paimon.file.Snapshot;
 
 import java.util.Map;
 
diff --git a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/source/StaticFileStoreSource.java b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/source/StaticFileStoreSource.java
index b67d83f62..b7dcfb562 100644
--- a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/source/StaticFileStoreSource.java
+++ b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/source/StaticFileStoreSource.java
@@ -22,12 +22,12 @@ import org.apache.flink.api.connector.source.Boundedness;
 import org.apache.flink.api.connector.source.SplitEnumerator;
 import org.apache.flink.api.connector.source.SplitEnumeratorContext;
 
-import org.apache.paimon.file.Snapshot;
+import org.apache.paimon.Snapshot;
 import org.apache.paimon.predicate.Predicate;
-import org.apache.paimon.file.utils.SnapshotManager;
 import org.apache.paimon.table.DataTable;
 import org.apache.paimon.table.source.BatchDataTableScan;
 import org.apache.paimon.table.source.DataTableScan;
+import org.apache.paimon.utils.SnapshotManager;
 
 import javax.annotation.Nullable;
 
diff --git a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/source/StaticFileStoreSplitEnumerator.java b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/source/StaticFileStoreSplitEnumerator.java
index 2895d18c9..6ac65fad0 100644
--- a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/source/StaticFileStoreSplitEnumerator.java
+++ b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/source/StaticFileStoreSplitEnumerator.java
@@ -22,7 +22,7 @@ import org.apache.flink.api.connector.source.SplitEnumerator;
 import org.apache.flink.api.connector.source.SplitEnumeratorContext;
 import org.apache.flink.api.connector.source.SplitsAssignment;
 
-import org.apache.paimon.file.Snapshot;
+import org.apache.paimon.Snapshot;
 
 import javax.annotation.Nullable;
 
diff --git a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/source/TableStoreSource.java b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/source/TableStoreSource.java
index 9a378f33e..1fe21f5cc 100644
--- a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/source/TableStoreSource.java
+++ b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/source/TableStoreSource.java
@@ -36,8 +36,8 @@ import org.apache.paimon.connector.log.LogSourceProvider;
 import org.apache.paimon.connector.log.LogStoreTableFactory;
 import org.apache.paimon.connector.lookup.FileStoreLookupFunction;
 import org.apache.paimon.connector.lookup.LookupRuntimeProviderFactory;
-import org.apache.paimon.predicate.Predicate;
 import org.apache.paimon.options.Options;
+import org.apache.paimon.predicate.Predicate;
 import org.apache.paimon.table.AppendOnlyFileStoreTable;
 import org.apache.paimon.table.ChangelogValueCountFileStoreTable;
 import org.apache.paimon.table.ChangelogWithKeyFileStoreTable;
diff --git a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/AppendOnlyTableITCase.java b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/AppendOnlyTableITCase.java
index 862e0e7cc..f8e5357c0 100644
--- a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/AppendOnlyTableITCase.java
+++ b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/AppendOnlyTableITCase.java
@@ -22,7 +22,7 @@ import org.apache.flink.table.planner.factories.TestValuesTableFactory;
 import org.apache.flink.types.Row;
 import org.apache.flink.types.RowKind;
 
-import org.apache.paimon.file.Snapshot;
+import org.apache.paimon.Snapshot;
 import org.junit.jupiter.api.Test;
 
 import java.util.Arrays;
diff --git a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/CatalogITCaseBase.java b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/CatalogITCaseBase.java
index fae356494..e783877a6 100644
--- a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/CatalogITCaseBase.java
+++ b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/CatalogITCaseBase.java
@@ -35,12 +35,12 @@ import org.apache.flink.util.CloseableIterator;
 
 import org.apache.flink.shaded.guava30.com.google.common.collect.ImmutableList;
 
+import org.apache.paimon.Snapshot;
 import org.apache.paimon.connector.util.AbstractTestBase;
-import org.apache.paimon.file.Snapshot;
-import org.apache.paimon.file.utils.BlockingIterator;
-import org.apache.paimon.file.utils.SnapshotManager;
 import org.apache.paimon.fs.Path;
 import org.apache.paimon.fs.local.LocalFileIO;
+import org.apache.paimon.utils.BlockingIterator;
+import org.apache.paimon.utils.SnapshotManager;
 import org.junit.jupiter.api.BeforeEach;
 
 import javax.annotation.Nullable;
diff --git a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/CatalogTableITCase.java b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/CatalogTableITCase.java
index 34a52a7b6..f8b6acd97 100644
--- a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/CatalogTableITCase.java
+++ b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/CatalogTableITCase.java
@@ -21,10 +21,10 @@ package org.apache.paimon.connector;
 import org.apache.flink.types.Row;
 
 import org.apache.commons.lang3.StringUtils;
-import org.apache.paimon.schema.SchemaChange;
-import org.apache.paimon.schema.SchemaManager;
 import org.apache.paimon.fs.Path;
 import org.apache.paimon.fs.local.LocalFileIO;
+import org.apache.paimon.schema.SchemaChange;
+import org.apache.paimon.schema.SchemaManager;
 import org.apache.paimon.types.IntType;
 import org.junit.jupiter.api.Test;
 
diff --git a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/ChangelogModeTest.java b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/ChangelogModeTest.java
index d2d9d399b..51fc0a735 100644
--- a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/ChangelogModeTest.java
+++ b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/ChangelogModeTest.java
@@ -26,11 +26,11 @@ import org.apache.paimon.connector.kafka.KafkaLogStoreFactory;
 import org.apache.paimon.connector.log.LogStoreTableFactory;
 import org.apache.paimon.connector.sink.TableStoreSink;
 import org.apache.paimon.connector.source.TableStoreSource;
-import org.apache.paimon.schema.Schema;
-import org.apache.paimon.schema.SchemaManager;
 import org.apache.paimon.fs.Path;
 import org.apache.paimon.fs.local.LocalFileIO;
 import org.apache.paimon.options.Options;
+import org.apache.paimon.schema.Schema;
+import org.apache.paimon.schema.SchemaManager;
 import org.apache.paimon.table.FileStoreTable;
 import org.apache.paimon.table.FileStoreTableFactory;
 import org.apache.paimon.types.IntType;
diff --git a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/ChangelogWithKeyFileStoreTableITCase.java b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/ChangelogWithKeyFileStoreTableITCase.java
index 2aa70fadd..68c58c97a 100644
--- a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/ChangelogWithKeyFileStoreTableITCase.java
+++ b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/ChangelogWithKeyFileStoreTableITCase.java
@@ -33,8 +33,8 @@ import org.apache.flink.util.CloseableIterator;
 
 import org.apache.paimon.connector.action.FlinkActions;
 import org.apache.paimon.connector.util.AbstractTestBase;
-import org.apache.paimon.file.utils.FailingFileIO;
 import org.apache.paimon.fs.Path;
+import org.apache.paimon.utils.FailingFileIO;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.Timeout;
diff --git a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/CompositePkAndMultiPartitionedTableWIthKafkaLogITCase.java b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/CompositePkAndMultiPartitionedTableWIthKafkaLogITCase.java
index e0eb2f0e1..aa246a724 100644
--- a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/CompositePkAndMultiPartitionedTableWIthKafkaLogITCase.java
+++ b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/CompositePkAndMultiPartitionedTableWIthKafkaLogITCase.java
@@ -21,7 +21,7 @@ package org.apache.paimon.connector;
 import org.apache.flink.types.Row;
 
 import org.apache.paimon.connector.kafka.KafkaTableTestBase;
-import org.apache.paimon.file.utils.BlockingIterator;
+import org.apache.paimon.utils.BlockingIterator;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
diff --git a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/ContinuousFileStoreITCase.java b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/ContinuousFileStoreITCase.java
index 9a617df7f..42b63b96c 100644
--- a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/ContinuousFileStoreITCase.java
+++ b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/ContinuousFileStoreITCase.java
@@ -25,10 +25,10 @@ import org.apache.flink.types.Row;
 
 import org.apache.flink.shaded.guava30.com.google.common.collect.ImmutableList;
 
-import org.apache.paimon.file.Snapshot;
-import org.apache.paimon.file.utils.BlockingIterator;
-import org.apache.paimon.file.utils.SnapshotManager;
+import org.apache.paimon.Snapshot;
 import org.apache.paimon.fs.local.LocalFileIO;
+import org.apache.paimon.utils.BlockingIterator;
+import org.apache.paimon.utils.SnapshotManager;
 import org.junit.jupiter.api.TestTemplate;
 import org.junit.jupiter.api.extension.ExtendWith;
 
diff --git a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/FileStoreITCase.java b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/FileStoreITCase.java
index 4ad44eb91..2df4eac94 100644
--- a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/FileStoreITCase.java
+++ b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/FileStoreITCase.java
@@ -49,15 +49,15 @@ import org.apache.paimon.connector.source.ContinuousFileStoreSource;
 import org.apache.paimon.connector.source.FlinkSourceBuilder;
 import org.apache.paimon.connector.source.StaticFileStoreSource;
 import org.apache.paimon.connector.util.AbstractTestBase;
-import org.apache.paimon.schema.Schema;
-import org.apache.paimon.schema.SchemaManager;
-import org.apache.paimon.file.utils.BlockingIterator;
-import org.apache.paimon.file.utils.FailingFileIO;
 import org.apache.paimon.fs.Path;
 import org.apache.paimon.fs.local.LocalFileIO;
 import org.apache.paimon.options.Options;
+import org.apache.paimon.schema.Schema;
+import org.apache.paimon.schema.SchemaManager;
 import org.apache.paimon.table.FileStoreTable;
 import org.apache.paimon.table.FileStoreTableFactory;
+import org.apache.paimon.utils.BlockingIterator;
+import org.apache.paimon.utils.FailingFileIO;
 import org.junit.jupiter.api.TestTemplate;
 import org.junit.jupiter.api.extension.ExtendWith;
 
@@ -77,7 +77,7 @@ import static org.apache.paimon.CoreOptions.BUCKET;
 import static org.apache.paimon.CoreOptions.FILE_FORMAT;
 import static org.apache.paimon.CoreOptions.PATH;
 import static org.apache.paimon.connector.LogicalTypeConversion.toDataType;
-import static org.apache.paimon.file.utils.FailingFileIO.retryArtificialException;
+import static org.apache.paimon.utils.FailingFileIO.retryArtificialException;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.junit.jupiter.api.Assumptions.assumeFalse;
 import static org.junit.jupiter.api.Assumptions.assumeTrue;
diff --git a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/FileSystemCatalogITCase.java b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/FileSystemCatalogITCase.java
index 9ea31e956..6191165bd 100644
--- a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/FileSystemCatalogITCase.java
+++ b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/FileSystemCatalogITCase.java
@@ -21,12 +21,12 @@ package org.apache.paimon.connector;
 import org.apache.flink.types.Row;
 import org.apache.flink.util.CloseableIterator;
 
-import org.apache.paimon.connector.kafka.KafkaTableTestBase;
 import org.apache.paimon.catalog.AbstractCatalog;
 import org.apache.paimon.catalog.Catalog;
 import org.apache.paimon.catalog.Identifier;
-import org.apache.paimon.file.utils.BlockingIterator;
+import org.apache.paimon.connector.kafka.KafkaTableTestBase;
 import org.apache.paimon.fs.Path;
+import org.apache.paimon.utils.BlockingIterator;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
diff --git a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/ForceCompactionITCase.java b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/ForceCompactionITCase.java
index f249f99e2..5d6321711 100644
--- a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/ForceCompactionITCase.java
+++ b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/ForceCompactionITCase.java
@@ -19,17 +19,17 @@
 package org.apache.paimon.connector;
 
 import org.apache.paimon.CoreOptions;
-import org.apache.paimon.file.Snapshot;
-import org.apache.paimon.manifest.ManifestFileMeta;
-import org.apache.paimon.manifest.ManifestList;
-import org.apache.paimon.file.stats.BinaryTableStats;
-import org.apache.paimon.file.utils.FileStorePathFactory;
+import org.apache.paimon.Snapshot;
 import org.apache.paimon.format.FileFormat;
 import org.apache.paimon.fs.local.LocalFileIO;
+import org.apache.paimon.manifest.ManifestFileMeta;
+import org.apache.paimon.manifest.ManifestList;
 import org.apache.paimon.options.Options;
+import org.apache.paimon.stats.BinaryTableStats;
 import org.apache.paimon.types.DataType;
 import org.apache.paimon.types.RowType;
 import org.apache.paimon.types.VarCharType;
+import org.apache.paimon.utils.FileStorePathFactory;
 import org.junit.jupiter.api.Test;
 
 import java.util.Arrays;
diff --git a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/FullCompactionFileStoreITCase.java b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/FullCompactionFileStoreITCase.java
index f115aecd1..683f220a5 100644
--- a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/FullCompactionFileStoreITCase.java
+++ b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/FullCompactionFileStoreITCase.java
@@ -21,7 +21,7 @@ package org.apache.paimon.connector;
 import org.apache.flink.types.Row;
 import org.apache.flink.types.RowKind;
 
-import org.apache.paimon.file.utils.BlockingIterator;
+import org.apache.paimon.utils.BlockingIterator;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
diff --git a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/LogSystemITCase.java b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/LogSystemITCase.java
index d444ff21c..56cea1a9c 100644
--- a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/LogSystemITCase.java
+++ b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/LogSystemITCase.java
@@ -22,7 +22,7 @@ import org.apache.flink.table.api.TableResult;
 import org.apache.flink.types.Row;
 
 import org.apache.paimon.connector.kafka.KafkaTableTestBase;
-import org.apache.paimon.file.utils.BlockingIterator;
+import org.apache.paimon.utils.BlockingIterator;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
diff --git a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/LookupChangelogWithAggITCase.java b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/LookupChangelogWithAggITCase.java
index 3bafa41c1..64a9bc346 100644
--- a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/LookupChangelogWithAggITCase.java
+++ b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/LookupChangelogWithAggITCase.java
@@ -21,7 +21,7 @@ package org.apache.paimon.connector;
 import org.apache.flink.types.Row;
 import org.apache.flink.types.RowKind;
 
-import org.apache.paimon.file.utils.BlockingIterator;
+import org.apache.paimon.utils.BlockingIterator;
 import org.junit.jupiter.api.Test;
 
 import static org.assertj.core.api.Assertions.assertThat;
diff --git a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/LookupJoinITCase.java b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/LookupJoinITCase.java
index c71802415..e8ef14e71 100644
--- a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/LookupJoinITCase.java
+++ b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/LookupJoinITCase.java
@@ -20,7 +20,7 @@ package org.apache.paimon.connector;
 
 import org.apache.flink.types.Row;
 
-import org.apache.paimon.file.utils.BlockingIterator;
+import org.apache.paimon.utils.BlockingIterator;
 import org.junit.jupiter.api.Test;
 
 import java.util.Arrays;
diff --git a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/PredicateConverterTest.java b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/PredicateConverterTest.java
index 5c1b2290a..7418f1732 100644
--- a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/PredicateConverterTest.java
+++ b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/PredicateConverterTest.java
@@ -34,9 +34,9 @@ import org.apache.flink.table.types.logical.VarCharType;
 import org.apache.flink.types.Row;
 
 import org.apache.paimon.data.BinaryString;
+import org.apache.paimon.format.FieldStats;
 import org.apache.paimon.predicate.Predicate;
 import org.apache.paimon.predicate.PredicateBuilder;
-import org.apache.paimon.format.FieldStats;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.Arguments;
diff --git a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/ReadWriteTableITCase.java b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/ReadWriteTableITCase.java
index 477783741..40eefc034 100644
--- a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/ReadWriteTableITCase.java
+++ b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/ReadWriteTableITCase.java
@@ -41,10 +41,10 @@ import org.apache.flink.types.Row;
 import org.apache.paimon.CoreOptions;
 import org.apache.paimon.connector.sink.TableStoreSink;
 import org.apache.paimon.connector.util.AbstractTestBase;
-import org.apache.paimon.schema.SchemaManager;
-import org.apache.paimon.file.utils.BlockingIterator;
 import org.apache.paimon.fs.Path;
 import org.apache.paimon.fs.local.LocalFileIO;
+import org.apache.paimon.schema.SchemaManager;
+import org.apache.paimon.utils.BlockingIterator;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
diff --git a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/RescaleBucketITCase.java b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/RescaleBucketITCase.java
index e1cfc8e8a..bad6d109c 100644
--- a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/RescaleBucketITCase.java
+++ b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/RescaleBucketITCase.java
@@ -23,11 +23,11 @@ import org.apache.flink.core.execution.SavepointFormatType;
 import org.apache.flink.runtime.jobgraph.SavepointConfigOptions;
 import org.apache.flink.types.Row;
 
-import org.apache.paimon.file.Snapshot;
+import org.apache.paimon.Snapshot;
+import org.apache.paimon.fs.local.LocalFileIO;
 import org.apache.paimon.schema.SchemaManager;
 import org.apache.paimon.schema.TableSchema;
-import org.apache.paimon.file.utils.SnapshotManager;
-import org.apache.paimon.fs.local.LocalFileIO;
+import org.apache.paimon.utils.SnapshotManager;
 import org.junit.jupiter.api.Test;
 
 import javax.annotation.Nullable;
diff --git a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/StreamingReadWriteTableWithKafkaLogITCase.java b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/StreamingReadWriteTableWithKafkaLogITCase.java
index 6574f4b35..7bd8ebb93 100644
--- a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/StreamingReadWriteTableWithKafkaLogITCase.java
+++ b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/StreamingReadWriteTableWithKafkaLogITCase.java
@@ -22,7 +22,7 @@ import org.apache.flink.types.Row;
 
 import org.apache.paimon.CoreOptions;
 import org.apache.paimon.connector.kafka.KafkaTableTestBase;
-import org.apache.paimon.file.utils.BlockingIterator;
+import org.apache.paimon.utils.BlockingIterator;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
diff --git a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/StreamingWarehouseITCase.java b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/StreamingWarehouseITCase.java
index 275b9baa2..0acfc9b69 100644
--- a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/StreamingWarehouseITCase.java
+++ b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/StreamingWarehouseITCase.java
@@ -23,7 +23,7 @@ import org.apache.flink.core.execution.JobClient;
 import org.apache.flink.types.Row;
 
 import org.apache.paimon.connector.kafka.KafkaTableTestBase;
-import org.apache.paimon.file.utils.BlockingIterator;
+import org.apache.paimon.utils.BlockingIterator;
 import org.junit.jupiter.api.Test;
 
 import java.time.LocalDateTime;
diff --git a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/action/ActionITCaseBase.java b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/action/ActionITCaseBase.java
index be309fad6..a1cd5bce9 100644
--- a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/action/ActionITCaseBase.java
+++ b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/action/ActionITCaseBase.java
@@ -20,23 +20,23 @@ package org.apache.paimon.connector.action;
 
 import org.apache.flink.table.store.catalog.CatalogContext;
 
+import org.apache.paimon.catalog.Catalog;
+import org.apache.paimon.catalog.CatalogFactory;
+import org.apache.paimon.catalog.Identifier;
 import org.apache.paimon.connector.util.AbstractTestBase;
 import org.apache.paimon.data.DataFormatTestUtil;
 import org.apache.paimon.data.GenericRow;
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.catalog.Catalog;
-import org.apache.paimon.catalog.CatalogFactory;
-import org.apache.paimon.catalog.Identifier;
-import org.apache.paimon.schema.Schema;
-import org.apache.paimon.file.utils.SnapshotManager;
 import org.apache.paimon.fs.Path;
 import org.apache.paimon.reader.RecordReader;
+import org.apache.paimon.schema.Schema;
 import org.apache.paimon.table.FileStoreTable;
 import org.apache.paimon.table.sink.StreamTableCommit;
 import org.apache.paimon.table.sink.StreamTableWrite;
 import org.apache.paimon.table.source.Split;
 import org.apache.paimon.table.source.TableRead;
 import org.apache.paimon.types.RowType;
+import org.apache.paimon.utils.SnapshotManager;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
 
diff --git a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/action/CompactActionITCase.java b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/action/CompactActionITCase.java
index 5e4de7e62..dcf316ce2 100644
--- a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/action/CompactActionITCase.java
+++ b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/action/CompactActionITCase.java
@@ -24,9 +24,9 @@ import org.apache.flink.streaming.api.CheckpointingMode;
 import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
 
 import org.apache.paimon.CoreOptions;
+import org.apache.paimon.Snapshot;
 import org.apache.paimon.connector.FlinkConnectorOptions;
 import org.apache.paimon.data.BinaryString;
-import org.apache.paimon.file.Snapshot;
 import org.apache.paimon.table.FileStoreTable;
 import org.apache.paimon.table.source.DataSplit;
 import org.apache.paimon.table.source.DataTableScan;
diff --git a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/action/DeleteActionITCase.java b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/action/DeleteActionITCase.java
index 75c7cfe92..be206dee4 100644
--- a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/action/DeleteActionITCase.java
+++ b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/action/DeleteActionITCase.java
@@ -20,13 +20,13 @@ package org.apache.paimon.connector.action;
 
 import org.apache.flink.types.Row;
 
+import org.apache.paimon.Snapshot;
 import org.apache.paimon.data.BinaryString;
-import org.apache.paimon.file.Snapshot;
-import org.apache.paimon.file.utils.BlockingIterator;
 import org.apache.paimon.table.FileStoreTable;
 import org.apache.paimon.types.DataType;
 import org.apache.paimon.types.DataTypes;
 import org.apache.paimon.types.RowType;
+import org.apache.paimon.utils.BlockingIterator;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.Arguments;
diff --git a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/action/DropPartitionActionITCase.java b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/action/DropPartitionActionITCase.java
index 6462bc390..6d7d8b390 100644
--- a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/action/DropPartitionActionITCase.java
+++ b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/action/DropPartitionActionITCase.java
@@ -18,8 +18,8 @@
 
 package org.apache.paimon.connector.action;
 
+import org.apache.paimon.Snapshot;
 import org.apache.paimon.data.BinaryString;
-import org.apache.paimon.file.Snapshot;
 import org.apache.paimon.table.FileStoreTable;
 import org.apache.paimon.table.source.DataTableScan;
 import org.apache.paimon.types.DataType;
diff --git a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/action/MergeIntoActionITCase.java b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/action/MergeIntoActionITCase.java
index f4f5960cb..46779b247 100644
--- a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/action/MergeIntoActionITCase.java
+++ b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/action/MergeIntoActionITCase.java
@@ -22,7 +22,7 @@ import org.apache.flink.table.planner.factories.TestValuesTableFactory;
 import org.apache.flink.types.Row;
 
 import org.apache.paimon.CoreOptions;
-import org.apache.paimon.file.utils.BlockingIterator;
+import org.apache.paimon.utils.BlockingIterator;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.params.ParameterizedTest;
diff --git a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/sink/CommitterOperatorTest.java b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/sink/CommitterOperatorTest.java
index 1cbcd7914..74b96f3d0 100644
--- a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/sink/CommitterOperatorTest.java
+++ b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/sink/CommitterOperatorTest.java
@@ -26,12 +26,12 @@ import org.apache.flink.streaming.util.OneInputStreamOperatorTestHarness;
 
 import org.apache.paimon.connector.VersionedSerializerWrapper;
 import org.apache.paimon.data.GenericRow;
-import org.apache.paimon.manifest.ManifestCommittableSerializer;
-import org.apache.paimon.file.utils.SnapshotManager;
 import org.apache.paimon.fs.local.LocalFileIO;
+import org.apache.paimon.manifest.ManifestCommittableSerializer;
 import org.apache.paimon.table.FileStoreTable;
 import org.apache.paimon.table.sink.CommitMessage;
 import org.apache.paimon.table.sink.StreamTableWrite;
+import org.apache.paimon.utils.SnapshotManager;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
diff --git a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/sink/CommitterOperatorTestBase.java b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/sink/CommitterOperatorTestBase.java
index 67e6653c5..6dcb12b3b 100644
--- a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/sink/CommitterOperatorTestBase.java
+++ b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/sink/CommitterOperatorTestBase.java
@@ -20,13 +20,13 @@ package org.apache.paimon.connector.sink;
 
 import org.apache.paimon.CoreOptions;
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.schema.Schema;
-import org.apache.paimon.schema.SchemaManager;
 import org.apache.paimon.fs.Path;
 import org.apache.paimon.fs.local.LocalFileIO;
 import org.apache.paimon.options.Options;
 import org.apache.paimon.reader.RecordReader;
 import org.apache.paimon.reader.RecordReaderIterator;
+import org.apache.paimon.schema.Schema;
+import org.apache.paimon.schema.SchemaManager;
 import org.apache.paimon.table.FileStoreTable;
 import org.apache.paimon.table.FileStoreTableFactory;
 import org.apache.paimon.table.source.TableRead;
diff --git a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/sink/CompactorSinkITCase.java b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/sink/CompactorSinkITCase.java
index 910b20674..93637b704 100644
--- a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/sink/CompactorSinkITCase.java
+++ b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/sink/CompactorSinkITCase.java
@@ -23,17 +23,16 @@ import org.apache.flink.streaming.api.datastream.DataStreamSource;
 import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
 import org.apache.flink.table.data.RowData;
 
+import org.apache.paimon.Snapshot;
 import org.apache.paimon.connector.source.CompactorSourceBuilder;
 import org.apache.paimon.connector.util.AbstractTestBase;
 import org.apache.paimon.data.BinaryString;
 import org.apache.paimon.data.GenericRow;
-import org.apache.paimon.file.Snapshot;
+import org.apache.paimon.fs.Path;
+import org.apache.paimon.fs.local.LocalFileIO;
 import org.apache.paimon.schema.Schema;
 import org.apache.paimon.schema.SchemaManager;
 import org.apache.paimon.schema.TableSchema;
-import org.apache.paimon.file.utils.SnapshotManager;
-import org.apache.paimon.fs.Path;
-import org.apache.paimon.fs.local.LocalFileIO;
 import org.apache.paimon.table.FileStoreTable;
 import org.apache.paimon.table.FileStoreTableFactory;
 import org.apache.paimon.table.sink.StreamTableCommit;
@@ -43,6 +42,7 @@ import org.apache.paimon.table.source.DataTableScan;
 import org.apache.paimon.types.DataType;
 import org.apache.paimon.types.DataTypes;
 import org.apache.paimon.types.RowType;
+import org.apache.paimon.utils.SnapshotManager;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
diff --git a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/sink/FileStoreShuffleBucketTest.java b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/sink/FileStoreShuffleBucketTest.java
index 6d1b7c7a8..a5803dcd3 100644
--- a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/sink/FileStoreShuffleBucketTest.java
+++ b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/sink/FileStoreShuffleBucketTest.java
@@ -31,8 +31,8 @@ import org.apache.paimon.connector.CatalogITCaseBase;
 import org.apache.paimon.connector.FlinkConnectorOptions;
 import org.apache.paimon.data.BinaryRow;
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.io.DataFileMeta;
 import org.apache.paimon.fs.local.LocalFileIO;
+import org.apache.paimon.io.DataFileMeta;
 import org.apache.paimon.table.FileStoreTable;
 import org.apache.paimon.table.FileStoreTableFactory;
 import org.apache.paimon.table.sink.SinkRecord;
diff --git a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/sink/SinkSavepointITCase.java b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/sink/SinkSavepointITCase.java
index ede268fbf..555c28885 100644
--- a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/sink/SinkSavepointITCase.java
+++ b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/sink/SinkSavepointITCase.java
@@ -37,7 +37,7 @@ import org.apache.flink.util.CloseableIterator;
 import org.apache.flink.util.ExceptionUtils;
 
 import org.apache.paimon.connector.util.AbstractTestBase;
-import org.apache.paimon.file.utils.FailingFileIO;
+import org.apache.paimon.utils.FailingFileIO;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.Timeout;
diff --git a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/source/CompactorSourceITCase.java b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/source/CompactorSourceITCase.java
index 3e8b39795..4483eb00e 100644
--- a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/source/CompactorSourceITCase.java
+++ b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/source/CompactorSourceITCase.java
@@ -28,12 +28,12 @@ import org.apache.paimon.data.BinaryRow;
 import org.apache.paimon.data.BinaryRowWriter;
 import org.apache.paimon.data.BinaryString;
 import org.apache.paimon.data.GenericRow;
+import org.apache.paimon.fs.Path;
+import org.apache.paimon.fs.local.LocalFileIO;
 import org.apache.paimon.io.DataFileMetaSerializer;
 import org.apache.paimon.schema.Schema;
 import org.apache.paimon.schema.SchemaManager;
 import org.apache.paimon.schema.TableSchema;
-import org.apache.paimon.fs.Path;
-import org.apache.paimon.fs.local.LocalFileIO;
 import org.apache.paimon.table.FileStoreTable;
 import org.apache.paimon.table.FileStoreTableFactory;
 import org.apache.paimon.table.sink.StreamTableCommit;
diff --git a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/source/FileStoreSourceReaderTest.java b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/source/FileStoreSourceReaderTest.java
index b82ab6f6a..95f81334e 100644
--- a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/source/FileStoreSourceReaderTest.java
+++ b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/source/FileStoreSourceReaderTest.java
@@ -20,10 +20,10 @@ package org.apache.paimon.connector.source;
 
 import org.apache.flink.connector.testutils.source.reader.TestingReaderContext;
 
-import org.apache.paimon.schema.Schema;
-import org.apache.paimon.schema.SchemaManager;
 import org.apache.paimon.fs.Path;
 import org.apache.paimon.fs.local.LocalFileIO;
+import org.apache.paimon.schema.Schema;
+import org.apache.paimon.schema.SchemaManager;
 import org.apache.paimon.types.BigIntType;
 import org.apache.paimon.types.DataField;
 import org.apache.paimon.types.IntType;
diff --git a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/source/FileStoreSourceSplitGeneratorTest.java b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/source/FileStoreSourceSplitGeneratorTest.java
index ceb2d9962..cac68f355 100644
--- a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/source/FileStoreSourceSplitGeneratorTest.java
+++ b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/source/FileStoreSourceSplitGeneratorTest.java
@@ -22,7 +22,7 @@ import org.apache.paimon.io.DataFileMeta;
 import org.apache.paimon.manifest.FileKind;
 import org.apache.paimon.manifest.ManifestEntry;
 import org.apache.paimon.operation.FileStoreScan;
-import org.apache.paimon.file.stats.StatsTestUtils;
+import org.apache.paimon.stats.StatsTestUtils;
 import org.apache.paimon.table.source.DataSplit;
 import org.apache.paimon.table.source.DataTableScan;
 import org.apache.paimon.table.source.snapshot.SnapshotSplitReader;
diff --git a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/source/FileStoreSourceSplitReaderTest.java b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/source/FileStoreSourceSplitReaderTest.java
index 715804f0c..e0ce5b4ff 100644
--- a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/source/FileStoreSourceSplitReaderTest.java
+++ b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/source/FileStoreSourceSplitReaderTest.java
@@ -29,15 +29,15 @@ import org.apache.flink.table.types.logical.IntType;
 import org.apache.flink.table.types.logical.RowType;
 import org.apache.flink.types.RowKind;
 
+import org.apache.paimon.KeyValue;
 import org.apache.paimon.data.GenericRow;
-import org.apache.paimon.file.KeyValue;
+import org.apache.paimon.fs.Path;
+import org.apache.paimon.fs.local.LocalFileIO;
 import org.apache.paimon.io.DataFileMeta;
 import org.apache.paimon.schema.Schema;
 import org.apache.paimon.schema.SchemaManager;
-import org.apache.paimon.file.utils.RecordWriter;
-import org.apache.paimon.fs.Path;
-import org.apache.paimon.fs.local.LocalFileIO;
 import org.apache.paimon.table.source.TableRead;
+import org.apache.paimon.utils.RecordWriter;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.io.TempDir;
diff --git a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/source/FileStoreSourceSplitSerializerTest.java b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/source/FileStoreSourceSplitSerializerTest.java
index 3fb08b942..4d16e2c00 100644
--- a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/source/FileStoreSourceSplitSerializerTest.java
+++ b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/source/FileStoreSourceSplitSerializerTest.java
@@ -22,7 +22,7 @@ import org.apache.flink.core.io.SimpleVersionedSerialization;
 
 import org.apache.paimon.data.BinaryRow;
 import org.apache.paimon.io.DataFileMeta;
-import org.apache.paimon.file.stats.StatsTestUtils;
+import org.apache.paimon.stats.StatsTestUtils;
 import org.apache.paimon.table.source.DataSplit;
 import org.junit.jupiter.api.Test;
 
diff --git a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/source/TestChangelogDataReadWrite.java b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/source/TestChangelogDataReadWrite.java
index 26bf667ea..723c6807c 100644
--- a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/source/TestChangelogDataReadWrite.java
+++ b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/source/TestChangelogDataReadWrite.java
@@ -21,28 +21,25 @@ package org.apache.paimon.connector.source;
 import org.apache.flink.api.java.tuple.Tuple2;
 
 import org.apache.paimon.CoreOptions;
+import org.apache.paimon.KeyValue;
 import org.apache.paimon.data.BinaryRow;
 import org.apache.paimon.data.GenericRow;
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.file.KeyValue;
+import org.apache.paimon.format.FileFormat;
+import org.apache.paimon.fs.Path;
+import org.apache.paimon.fs.local.LocalFileIO;
 import org.apache.paimon.io.DataFileMeta;
 import org.apache.paimon.memory.HeapMemorySegmentPool;
 import org.apache.paimon.memory.MemoryOwner;
 import org.apache.paimon.mergetree.compact.DeduplicateMergeFunction;
 import org.apache.paimon.operation.KeyValueFileStoreRead;
 import org.apache.paimon.operation.KeyValueFileStoreWrite;
+import org.apache.paimon.options.Options;
 import org.apache.paimon.predicate.Predicate;
+import org.apache.paimon.reader.RecordReader;
 import org.apache.paimon.schema.KeyValueFieldsExtractor;
 import org.apache.paimon.schema.SchemaManager;
 import org.apache.paimon.schema.TableSchema;
-import org.apache.paimon.file.utils.FileStorePathFactory;
-import org.apache.paimon.file.utils.RecordWriter;
-import org.apache.paimon.file.utils.SnapshotManager;
-import org.apache.paimon.format.FileFormat;
-import org.apache.paimon.fs.Path;
-import org.apache.paimon.fs.local.LocalFileIO;
-import org.apache.paimon.options.Options;
-import org.apache.paimon.reader.RecordReader;
 import org.apache.paimon.table.source.KeyValueTableRead;
 import org.apache.paimon.table.source.TableRead;
 import org.apache.paimon.table.source.ValueContentRowDataRecordIterator;
@@ -52,6 +49,9 @@ import org.apache.paimon.types.DataField;
 import org.apache.paimon.types.IntType;
 import org.apache.paimon.types.RowKind;
 import org.apache.paimon.types.RowType;
+import org.apache.paimon.utils.FileStorePathFactory;
+import org.apache.paimon.utils.RecordWriter;
+import org.apache.paimon.utils.SnapshotManager;
 
 import java.util.ArrayList;
 import java.util.Collections;
diff --git a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/util/ReadWriteTableTestUtil.java b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/util/ReadWriteTableTestUtil.java
index e7924343c..4c631e1f9 100644
--- a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/util/ReadWriteTableTestUtil.java
+++ b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/util/ReadWriteTableTestUtil.java
@@ -31,7 +31,7 @@ import org.apache.flink.util.CloseableIterator;
 import org.apache.paimon.CoreOptions;
 import org.apache.paimon.connector.ReadWriteTableITCase;
 import org.apache.paimon.connector.StreamingReadWriteTableWithKafkaLogITCase;
-import org.apache.paimon.file.utils.BlockingIterator;
+import org.apache.paimon.utils.BlockingIterator;
 
 import javax.annotation.Nullable;
 
diff --git a/paimon-format/src/main/java/org/apache/paimon/format/avro/AvroFileFormat.java b/paimon-format/src/main/java/org/apache/paimon/format/avro/AvroFileFormat.java
index 883e05f17..3e3a00dec 100644
--- a/paimon-format/src/main/java/org/apache/paimon/format/avro/AvroFileFormat.java
+++ b/paimon-format/src/main/java/org/apache/paimon/format/avro/AvroFileFormat.java
@@ -27,7 +27,6 @@ import org.apache.avro.generic.GenericRecord;
 import org.apache.avro.io.DatumWriter;
 import org.apache.paimon.data.GenericRow;
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.predicate.Predicate;
 import org.apache.paimon.format.FileFormat;
 import org.apache.paimon.format.FormatReaderFactory;
 import org.apache.paimon.format.FormatWriter;
@@ -36,6 +35,7 @@ import org.apache.paimon.fs.PositionOutputStream;
 import org.apache.paimon.options.ConfigOption;
 import org.apache.paimon.options.ConfigOptions;
 import org.apache.paimon.options.Options;
+import org.apache.paimon.predicate.Predicate;
 import org.apache.paimon.types.DataType;
 import org.apache.paimon.types.RowType;
 import org.apache.paimon.utils.Projection;
diff --git a/paimon-format/src/main/java/org/apache/paimon/format/orc/OrcFileFormat.java b/paimon-format/src/main/java/org/apache/paimon/format/orc/OrcFileFormat.java
index 0952111ce..ea6b51d90 100644
--- a/paimon-format/src/main/java/org/apache/paimon/format/orc/OrcFileFormat.java
+++ b/paimon-format/src/main/java/org/apache/paimon/format/orc/OrcFileFormat.java
@@ -22,7 +22,6 @@ import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch;
 import org.apache.orc.TypeDescription;
 import org.apache.paimon.annotation.VisibleForTesting;
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.predicate.Predicate;
 import org.apache.paimon.format.FileFormat;
 import org.apache.paimon.format.FileStatsExtractor;
 import org.apache.paimon.format.FormatReaderFactory;
@@ -34,6 +33,7 @@ import org.apache.paimon.format.orc.reader.OrcSplitReaderUtil;
 import org.apache.paimon.format.orc.writer.RowDataVectorizer;
 import org.apache.paimon.format.orc.writer.Vectorizer;
 import org.apache.paimon.options.Options;
+import org.apache.paimon.predicate.Predicate;
 import org.apache.paimon.types.ArrayType;
 import org.apache.paimon.types.DataField;
 import org.apache.paimon.types.DataType;
diff --git a/paimon-format/src/main/java/org/apache/paimon/format/orc/filter/OrcPredicateFunctionVisitor.java b/paimon-format/src/main/java/org/apache/paimon/format/orc/filter/OrcPredicateFunctionVisitor.java
index 760401286..7def2e09d 100644
--- a/paimon-format/src/main/java/org/apache/paimon/format/orc/filter/OrcPredicateFunctionVisitor.java
+++ b/paimon-format/src/main/java/org/apache/paimon/format/orc/filter/OrcPredicateFunctionVisitor.java
@@ -34,8 +34,7 @@ import java.util.List;
 import java.util.Optional;
 
 /**
- * Convert {@link org.apache.paimon.predicate.Predicate} to {@link OrcFilters.Predicate} for
- * orc.
+ * Convert {@link org.apache.paimon.predicate.Predicate} to {@link OrcFilters.Predicate} for orc.
  */
 public class OrcPredicateFunctionVisitor
         implements FunctionVisitor<Optional<OrcFilters.Predicate>> {
diff --git a/paimon-format/src/main/java/org/apache/paimon/format/parquet/ParquetFileFormat.java b/paimon-format/src/main/java/org/apache/paimon/format/parquet/ParquetFileFormat.java
index 94cbaca64..6785c0a73 100644
--- a/paimon-format/src/main/java/org/apache/paimon/format/parquet/ParquetFileFormat.java
+++ b/paimon-format/src/main/java/org/apache/paimon/format/parquet/ParquetFileFormat.java
@@ -19,13 +19,13 @@
 package org.apache.paimon.format.parquet;
 
 import org.apache.paimon.annotation.VisibleForTesting;
-import org.apache.paimon.predicate.Predicate;
 import org.apache.paimon.format.FileFormat;
 import org.apache.paimon.format.FileStatsExtractor;
 import org.apache.paimon.format.FormatReaderFactory;
 import org.apache.paimon.format.FormatWriterFactory;
 import org.apache.paimon.format.parquet.writer.RowDataParquetBuilder;
 import org.apache.paimon.options.Options;
+import org.apache.paimon.predicate.Predicate;
 import org.apache.paimon.types.RowType;
 import org.apache.paimon.utils.Projection;
 
diff --git a/paimon-format/src/test/java/org/apache/paimon/format/orc/OrcFilterConverterTest.java b/paimon-format/src/test/java/org/apache/paimon/format/orc/OrcFilterConverterTest.java
index 35b867539..44e63f336 100644
--- a/paimon-format/src/test/java/org/apache/paimon/format/orc/OrcFilterConverterTest.java
+++ b/paimon-format/src/test/java/org/apache/paimon/format/orc/OrcFilterConverterTest.java
@@ -19,10 +19,10 @@
 package org.apache.paimon.format.orc;
 
 import org.apache.hadoop.hive.ql.io.sarg.PredicateLeaf;
-import org.apache.paimon.predicate.Predicate;
-import org.apache.paimon.predicate.PredicateBuilder;
 import org.apache.paimon.format.orc.filter.OrcFilters;
 import org.apache.paimon.format.orc.filter.OrcPredicateFunctionVisitor;
+import org.apache.paimon.predicate.Predicate;
+import org.apache.paimon.predicate.PredicateBuilder;
 import org.apache.paimon.types.BigIntType;
 import org.apache.paimon.types.DataField;
 import org.apache.paimon.types.RowType;
diff --git a/paimon-hive/paimon-hive-catalog/src/main/java/org/apache/paimon/hive/HiveCatalog.java b/paimon-hive/paimon-hive-catalog/src/main/java/org/apache/paimon/hive/HiveCatalog.java
index d2689ddfc..7d719ccba 100644
--- a/paimon-hive/paimon-hive-catalog/src/main/java/org/apache/paimon/hive/HiveCatalog.java
+++ b/paimon-hive/paimon-hive-catalog/src/main/java/org/apache/paimon/hive/HiveCatalog.java
@@ -36,14 +36,14 @@ import org.apache.hadoop.hive.metastore.api.hive_metastoreConstants;
 import org.apache.paimon.catalog.AbstractCatalog;
 import org.apache.paimon.catalog.CatalogLock;
 import org.apache.paimon.catalog.Identifier;
+import org.apache.paimon.fs.FileIO;
+import org.apache.paimon.fs.Path;
 import org.apache.paimon.operation.Lock;
+import org.apache.paimon.options.OptionsUtils;
 import org.apache.paimon.schema.Schema;
 import org.apache.paimon.schema.SchemaChange;
 import org.apache.paimon.schema.SchemaManager;
 import org.apache.paimon.schema.TableSchema;
-import org.apache.paimon.fs.FileIO;
-import org.apache.paimon.fs.Path;
-import org.apache.paimon.options.OptionsUtils;
 import org.apache.paimon.table.TableType;
 import org.apache.paimon.types.DataField;
 import org.apache.paimon.utils.StringUtils;
diff --git a/paimon-hive/paimon-hive-catalog/src/test/java/org/apache/paimon/hive/HiveCatalogITCase.java b/paimon-hive/paimon-hive-catalog/src/test/java/org/apache/paimon/hive/HiveCatalogITCase.java
index fbb593bcb..4f2dc2992 100644
--- a/paimon-hive/paimon-hive-catalog/src/test/java/org/apache/paimon/hive/HiveCatalogITCase.java
+++ b/paimon-hive/paimon-hive-catalog/src/test/java/org/apache/paimon/hive/HiveCatalogITCase.java
@@ -33,13 +33,13 @@ import com.klarna.hiverunner.annotations.HiveRunnerSetup;
 import com.klarna.hiverunner.annotations.HiveSQL;
 import com.klarna.hiverunner.config.HiveRunnerConfig;
 import org.apache.hadoop.hive.ql.lockmgr.DbTxnManager;
-import org.apache.paimon.connector.FlinkCatalog;
 import org.apache.paimon.catalog.AbstractCatalog;
 import org.apache.paimon.catalog.Catalog;
 import org.apache.paimon.catalog.CatalogLock;
 import org.apache.paimon.catalog.Identifier;
-import org.apache.paimon.schema.SchemaManager;
+import org.apache.paimon.connector.FlinkCatalog;
 import org.apache.paimon.fs.local.LocalFileIO;
+import org.apache.paimon.schema.SchemaManager;
 import org.assertj.core.api.Assertions;
 import org.junit.After;
 import org.junit.Assert;
diff --git a/paimon-hive/paimon-hive-connector-common/src/main/java/org/apache/paimon/hive/HiveSchema.java b/paimon-hive/paimon-hive-connector-common/src/main/java/org/apache/paimon/hive/HiveSchema.java
index b9a34b393..ed9be151f 100644
--- a/paimon-hive/paimon-hive-connector-common/src/main/java/org/apache/paimon/hive/HiveSchema.java
+++ b/paimon-hive/paimon-hive-connector-common/src/main/java/org/apache/paimon/hive/HiveSchema.java
@@ -27,9 +27,9 @@ import org.apache.hadoop.hive.serde2.SerDeUtils;
 import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
 import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoUtils;
 import org.apache.paimon.CoreOptions;
-import org.apache.paimon.schema.TableSchema;
 import org.apache.paimon.fs.Path;
 import org.apache.paimon.options.Options;
+import org.apache.paimon.schema.TableSchema;
 import org.apache.paimon.table.FileStoreTableFactory;
 import org.apache.paimon.types.DataField;
 import org.apache.paimon.types.DataType;
diff --git a/paimon-hive/paimon-hive-connector-common/src/main/java/org/apache/paimon/hive/TableStoreJobConf.java b/paimon-hive/paimon-hive-connector-common/src/main/java/org/apache/paimon/hive/TableStoreJobConf.java
index 061800439..c83a910b2 100644
--- a/paimon-hive/paimon-hive-connector-common/src/main/java/org/apache/paimon/hive/TableStoreJobConf.java
+++ b/paimon-hive/paimon-hive-connector-common/src/main/java/org/apache/paimon/hive/TableStoreJobConf.java
@@ -21,8 +21,8 @@ package org.apache.paimon.hive;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.hive.metastore.api.hive_metastoreConstants;
 import org.apache.hadoop.mapred.JobConf;
-import org.apache.paimon.file.utils.JsonSerdeUtil;
 import org.apache.paimon.options.Options;
+import org.apache.paimon.utils.JsonSerdeUtil;
 
 import java.util.HashMap;
 import java.util.Map;
diff --git a/paimon-hive/paimon-hive-connector-common/src/main/java/org/apache/paimon/hive/mapred/TableStoreInputFormat.java b/paimon-hive/paimon-hive-connector-common/src/main/java/org/apache/paimon/hive/mapred/TableStoreInputFormat.java
index 65607fa94..f769ed652 100644
--- a/paimon-hive/paimon-hive-connector-common/src/main/java/org/apache/paimon/hive/mapred/TableStoreInputFormat.java
+++ b/paimon-hive/paimon-hive-connector-common/src/main/java/org/apache/paimon/hive/mapred/TableStoreInputFormat.java
@@ -29,12 +29,12 @@ import org.apache.hadoop.mapred.JobConf;
 import org.apache.hadoop.mapred.RecordReader;
 import org.apache.hadoop.mapred.Reporter;
 import org.apache.paimon.CoreOptions;
-import org.apache.paimon.predicate.Predicate;
-import org.apache.paimon.schema.TableSchema;
 import org.apache.paimon.hive.RowDataContainer;
 import org.apache.paimon.hive.SearchArgumentToPredicateConverter;
 import org.apache.paimon.hive.TableStoreJobConf;
 import org.apache.paimon.options.Options;
+import org.apache.paimon.predicate.Predicate;
+import org.apache.paimon.schema.TableSchema;
 import org.apache.paimon.table.FileStoreTable;
 import org.apache.paimon.table.FileStoreTableFactory;
 import org.apache.paimon.table.source.DataTableScan;
diff --git a/paimon-hive/paimon-hive-connector-common/src/main/java/org/apache/paimon/hive/mapred/TableStoreRecordReader.java b/paimon-hive/paimon-hive-connector-common/src/main/java/org/apache/paimon/hive/mapred/TableStoreRecordReader.java
index 64a6b46f6..e208f8b17 100644
--- a/paimon-hive/paimon-hive-connector-common/src/main/java/org/apache/paimon/hive/mapred/TableStoreRecordReader.java
+++ b/paimon-hive/paimon-hive-connector-common/src/main/java/org/apache/paimon/hive/mapred/TableStoreRecordReader.java
@@ -19,8 +19,8 @@
 package org.apache.paimon.hive.mapred;
 
 import org.apache.hadoop.mapred.RecordReader;
+import org.apache.paimon.KeyValue;
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.file.KeyValue;
 import org.apache.paimon.hive.RowDataContainer;
 import org.apache.paimon.reader.RecordReaderIterator;
 import org.apache.paimon.table.source.ReadBuilder;
diff --git a/paimon-hive/paimon-hive-connector-common/src/test/java/org/apache/paimon/hive/FileStoreTestUtils.java b/paimon-hive/paimon-hive-connector-common/src/test/java/org/apache/paimon/hive/FileStoreTestUtils.java
index e9508696a..ea74b7b9b 100644
--- a/paimon-hive/paimon-hive-connector-common/src/test/java/org/apache/paimon/hive/FileStoreTestUtils.java
+++ b/paimon-hive/paimon-hive-connector-common/src/test/java/org/apache/paimon/hive/FileStoreTestUtils.java
@@ -19,11 +19,12 @@
 package org.apache.paimon.hive;
 
 import org.apache.paimon.CoreOptions;
-import org.apache.paimon.schema.Schema;
-import org.apache.paimon.schema.SchemaManager;
+import org.apache.paimon.FileStore;
 import org.apache.paimon.fs.Path;
 import org.apache.paimon.fs.local.LocalFileIO;
 import org.apache.paimon.options.Options;
+import org.apache.paimon.schema.Schema;
+import org.apache.paimon.schema.SchemaManager;
 import org.apache.paimon.table.FileStoreTable;
 import org.apache.paimon.table.FileStoreTableFactory;
 import org.apache.paimon.types.RowType;
@@ -32,7 +33,7 @@ import java.util.List;
 
 import static org.apache.paimon.CoreOptions.PATH;
 
-/** Test utils related to {@link org.apache.paimon.file.FileStore}. */
+/** Test utils related to {@link FileStore}. */
 public class FileStoreTestUtils {
 
     public static FileStoreTable createFileStoreTable(
diff --git a/paimon-hive/paimon-hive-connector-common/src/test/java/org/apache/paimon/hive/HiveTableSchemaTest.java b/paimon-hive/paimon-hive-connector-common/src/test/java/org/apache/paimon/hive/HiveTableSchemaTest.java
index d0d84c78b..f61b0ce3d 100644
--- a/paimon-hive/paimon-hive-connector-common/src/test/java/org/apache/paimon/hive/HiveTableSchemaTest.java
+++ b/paimon-hive/paimon-hive-connector-common/src/test/java/org/apache/paimon/hive/HiveTableSchemaTest.java
@@ -19,10 +19,10 @@
 package org.apache.paimon.hive;
 
 import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoFactory;
-import org.apache.paimon.schema.Schema;
-import org.apache.paimon.schema.SchemaManager;
 import org.apache.paimon.fs.Path;
 import org.apache.paimon.fs.local.LocalFileIO;
+import org.apache.paimon.schema.Schema;
+import org.apache.paimon.schema.SchemaManager;
 import org.apache.paimon.types.DataField;
 import org.apache.paimon.types.DataTypes;
 import org.apache.paimon.types.RowType;
diff --git a/paimon-hive/paimon-hive-connector-common/src/test/java/org/apache/paimon/hive/TableStoreHiveStorageHandlerITCase.java b/paimon-hive/paimon-hive-connector-common/src/test/java/org/apache/paimon/hive/TableStoreHiveStorageHandlerITCase.java
index fb1a294b9..7384c9c90 100644
--- a/paimon-hive/paimon-hive-connector-common/src/test/java/org/apache/paimon/hive/TableStoreHiveStorageHandlerITCase.java
+++ b/paimon-hive/paimon-hive-connector-common/src/test/java/org/apache/paimon/hive/TableStoreHiveStorageHandlerITCase.java
@@ -28,11 +28,11 @@ import org.apache.hadoop.hive.serde2.objectinspector.MapObjectInspector;
 import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
 import org.apache.hadoop.hive.serde2.objectinspector.primitive.AbstractPrimitiveJavaObjectInspector;
 import org.apache.paimon.CoreOptions;
+import org.apache.paimon.WriteMode;
 import org.apache.paimon.data.BinaryString;
 import org.apache.paimon.data.GenericRow;
 import org.apache.paimon.data.InternalRow;
 import org.apache.paimon.data.Timestamp;
-import org.apache.paimon.file.WriteMode;
 import org.apache.paimon.hive.objectinspector.TableStoreObjectInspectorFactory;
 import org.apache.paimon.options.Options;
 import org.apache.paimon.table.FileStoreTable;
diff --git a/paimon-hive/paimon-hive-connector-common/src/test/java/org/apache/paimon/hive/TableStoreSerDeTest.java b/paimon-hive/paimon-hive-connector-common/src/test/java/org/apache/paimon/hive/TableStoreSerDeTest.java
index 96609757e..8e014d0b6 100644
--- a/paimon-hive/paimon-hive-connector-common/src/test/java/org/apache/paimon/hive/TableStoreSerDeTest.java
+++ b/paimon-hive/paimon-hive-connector-common/src/test/java/org/apache/paimon/hive/TableStoreSerDeTest.java
@@ -21,11 +21,11 @@ package org.apache.paimon.hive;
 import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
 import org.apache.hadoop.hive.serde2.objectinspector.StructField;
 import org.apache.paimon.data.GenericRow;
-import org.apache.paimon.schema.Schema;
-import org.apache.paimon.schema.SchemaManager;
 import org.apache.paimon.fs.Path;
 import org.apache.paimon.fs.local.LocalFileIO;
 import org.apache.paimon.hive.objectinspector.TableStoreRowDataObjectInspector;
+import org.apache.paimon.schema.Schema;
+import org.apache.paimon.schema.SchemaManager;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.io.TempDir;
 
diff --git a/paimon-spark/paimon-spark-2/src/test/java/org/apache/paimon/spark/SimpleTableTestHelper.java b/paimon-spark/paimon-spark-2/src/test/java/org/apache/paimon/spark/SimpleTableTestHelper.java
index 727224a09..7eddf3de9 100644
--- a/paimon-spark/paimon-spark-2/src/test/java/org/apache/paimon/spark/SimpleTableTestHelper.java
+++ b/paimon-spark/paimon-spark-2/src/test/java/org/apache/paimon/spark/SimpleTableTestHelper.java
@@ -20,11 +20,11 @@ package org.apache.paimon.spark;
 
 import org.apache.paimon.CoreOptions;
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.schema.Schema;
-import org.apache.paimon.schema.SchemaManager;
 import org.apache.paimon.fs.Path;
 import org.apache.paimon.fs.local.LocalFileIO;
 import org.apache.paimon.options.Options;
+import org.apache.paimon.schema.Schema;
+import org.apache.paimon.schema.SchemaManager;
 import org.apache.paimon.table.FileStoreTable;
 import org.apache.paimon.table.FileStoreTableFactory;
 import org.apache.paimon.table.sink.StreamTableCommit;
diff --git a/paimon-spark/paimon-spark-common/src/main/java/org/apache/paimon/spark/SparkCatalog.java b/paimon-spark/paimon-spark-common/src/main/java/org/apache/paimon/spark/SparkCatalog.java
index 20798eb11..1741f7eea 100644
--- a/paimon-spark/paimon-spark-common/src/main/java/org/apache/paimon/spark/SparkCatalog.java
+++ b/paimon-spark/paimon-spark-common/src/main/java/org/apache/paimon/spark/SparkCatalog.java
@@ -21,11 +21,11 @@ package org.apache.paimon.spark;
 import org.apache.flink.table.store.catalog.CatalogContext;
 
 import org.apache.paimon.catalog.Catalog;
-import org.apache.paimon.file.catalog.CatalogFactory;
+import org.apache.paimon.catalog.CatalogFactory;
 import org.apache.paimon.operation.Lock;
+import org.apache.paimon.options.Options;
 import org.apache.paimon.schema.Schema;
 import org.apache.paimon.schema.SchemaChange;
-import org.apache.paimon.options.Options;
 import org.apache.paimon.types.RowType;
 import org.apache.paimon.utils.Preconditions;
 import org.apache.spark.sql.SparkSession;
@@ -354,13 +354,13 @@ public class SparkCatalog implements TableCatalog, SupportsNamespaces {
         return namespace.length == 1;
     }
 
-    private org.apache.paimon.file.catalog.Identifier toIdentifier(Identifier ident)
+    private org.apache.paimon.catalog.Identifier toIdentifier(Identifier ident)
             throws NoSuchTableException {
         if (!isValidateNamespace(ident.namespace())) {
             throw new NoSuchTableException(ident);
         }
 
-        return new org.apache.paimon.file.catalog.Identifier(ident.namespace()[0], ident.name());
+        return new org.apache.paimon.catalog.Identifier(ident.namespace()[0], ident.name());
     }
 
     // --------------------- unsupported methods ----------------------------
diff --git a/paimon-spark/paimon-spark-common/src/test/java/org/apache/paimon/spark/SparkReadITCase.java b/paimon-spark/paimon-spark-common/src/test/java/org/apache/paimon/spark/SparkReadITCase.java
index 16d04916b..d0eae1fa0 100644
--- a/paimon-spark/paimon-spark-common/src/test/java/org/apache/paimon/spark/SparkReadITCase.java
+++ b/paimon-spark/paimon-spark-common/src/test/java/org/apache/paimon/spark/SparkReadITCase.java
@@ -18,9 +18,9 @@
 
 package org.apache.paimon.spark;
 
-import org.apache.paimon.schema.TableSchema;
 import org.apache.paimon.fs.Path;
 import org.apache.paimon.fs.local.LocalFileIO;
+import org.apache.paimon.schema.TableSchema;
 import org.apache.paimon.table.FileStoreTableFactory;
 import org.apache.paimon.types.ArrayType;
 import org.apache.paimon.types.BigIntType;
diff --git a/paimon-spark/paimon-spark-common/src/test/java/org/apache/paimon/spark/SparkReadTestBase.java b/paimon-spark/paimon-spark-common/src/test/java/org/apache/paimon/spark/SparkReadTestBase.java
index a3fe245f4..e2d12c420 100644
--- a/paimon-spark/paimon-spark-common/src/test/java/org/apache/paimon/spark/SparkReadTestBase.java
+++ b/paimon-spark/paimon-spark-common/src/test/java/org/apache/paimon/spark/SparkReadTestBase.java
@@ -21,9 +21,9 @@ package org.apache.paimon.spark;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.paimon.data.BinaryString;
 import org.apache.paimon.data.GenericRow;
-import org.apache.paimon.schema.TableSchema;
 import org.apache.paimon.fs.Path;
 import org.apache.paimon.fs.local.LocalFileIO;
+import org.apache.paimon.schema.TableSchema;
 import org.apache.paimon.table.FileStoreTable;
 import org.apache.paimon.table.FileStoreTableFactory;
 import org.apache.paimon.table.sink.StreamTableCommit;