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:05 UTC

[incubator-paimon] 24/32: [core] Rename paimon half 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 309fd5db0bffaed71c749b362745c0ffeb5a9277
Author: JingsongLi <lz...@aliyun.com>
AuthorDate: Fri Mar 17 20:12:07 2023 +0800

    [core] Rename paimon half file packages
---
 .../apache/paimon/benchmark/TableBenchmark.java    |  8 ++---
 .../java/org/apache/paimon/format/FileFormat.java  |  2 +-
 .../apache/paimon/{file => }/predicate/And.java    |  2 +-
 .../paimon/{file => }/predicate/CompareUtils.java  |  2 +-
 .../{file => }/predicate/CompoundPredicate.java    |  2 +-
 .../apache/paimon/{file => }/predicate/Equal.java  |  4 +--
 .../paimon/{file => }/predicate/FieldRef.java      |  2 +-
 .../{file => }/predicate/FunctionVisitor.java      |  2 +-
 .../{file => }/predicate/GreaterOrEqual.java       |  4 +--
 .../paimon/{file => }/predicate/GreaterThan.java   |  4 +--
 .../org/apache/paimon/{file => }/predicate/In.java |  4 +--
 .../paimon/{file => }/predicate/IsNotNull.java     |  2 +-
 .../apache/paimon/{file => }/predicate/IsNull.java |  2 +-
 .../paimon/{file => }/predicate/LeafFunction.java  |  2 +-
 .../paimon/{file => }/predicate/LeafPredicate.java |  2 +-
 .../{file => }/predicate/LeafUnaryFunction.java    |  2 +-
 .../paimon/{file => }/predicate/LessOrEqual.java   |  4 +--
 .../paimon/{file => }/predicate/LessThan.java      |  4 +--
 .../paimon/{file => }/predicate/NotEqual.java      |  4 +--
 .../apache/paimon/{file => }/predicate/NotIn.java  |  4 +--
 .../predicate/NullFalseLeafBinaryFunction.java     |  2 +-
 .../org/apache/paimon/{file => }/predicate/Or.java |  2 +-
 .../paimon/{file => }/predicate/Predicate.java     |  2 +-
 .../{file => }/predicate/PredicateBuilder.java     |  2 +-
 .../{file => }/predicate/PredicateFilter.java      |  2 +-
 .../predicate/PredicateReplaceVisitor.java         |  2 +-
 .../{file => }/predicate/PredicateVisitor.java     |  2 +-
 .../paimon/{file => }/predicate/StartsWith.java    |  2 +-
 .../main/java/org/apache/paimon/utils/Filter.java  |  2 +-
 .../append/AppendOnlyCompactManager.java           | 12 +++----
 .../paimon/{file => }/append/AppendOnlyWriter.java | 16 ++++-----
 .../paimon/{file => }/casting/CastExecutor.java    |  2 +-
 .../paimon/{file => }/casting/CastExecutors.java   |  2 +-
 .../paimon/{file => }/casting/CastFieldGetter.java |  2 +-
 .../paimon/{file => }/casting/CastedRow.java       |  2 +-
 .../paimon/{file => }/catalog/AbstractCatalog.java |  4 +--
 .../apache/paimon/{file => }/catalog/Catalog.java  |  6 ++--
 .../paimon/{file => }/catalog/CatalogFactory.java  |  2 +-
 .../paimon/{file => }/catalog/CatalogLock.java     |  2 +-
 .../paimon/{file => }/catalog/CatalogUtils.java    |  2 +-
 .../{file => }/catalog/FileSystemCatalog.java      | 10 +++---
 .../catalog/FileSystemCatalogFactory.java          |  2 +-
 .../paimon/{file => }/catalog/Identifier.java      |  4 +--
 .../{file => }/compact/CompactFutureManager.java   |  2 +-
 .../paimon/{file => }/compact/CompactManager.java  |  4 +--
 .../paimon/{file => }/compact/CompactResult.java   |  4 +--
 .../paimon/{file => }/compact/CompactTask.java     |  4 +--
 .../paimon/{file => }/compact/CompactUnit.java     |  6 ++--
 .../{file => }/compact/NoopCompactManager.java     |  4 +--
 .../compression/BlockCompressionFactory.java       |  2 +-
 .../{file => }/compression/BlockCompressor.java    |  2 +-
 .../{file => }/compression/BlockDecompressor.java  |  2 +-
 .../compression/BufferCompressionException.java    |  2 +-
 .../compression/BufferDecompressionException.java  |  2 +-
 .../{file => }/compression/CompressorUtils.java    |  2 +-
 .../compression/Lz4BlockCompressionFactory.java    |  2 +-
 .../{file => }/compression/Lz4BlockCompressor.java |  6 ++--
 .../compression/Lz4BlockDecompressor.java          |  8 ++---
 .../{file => }/disk/AbstractFileIOChannel.java     |  2 +-
 .../{file => }/disk/BufferFileChannelReader.java   |  4 +--
 .../paimon/{file => }/disk/BufferFileReader.java   |  4 +--
 .../{file => }/disk/BufferFileReaderImpl.java      |  4 +--
 .../paimon/{file => }/disk/BufferFileWriter.java   |  4 +--
 .../{file => }/disk/BufferFileWriterImpl.java      |  4 +--
 .../{file => }/disk/ChannelReaderInputView.java    |  8 ++---
 .../disk/ChannelReaderInputViewIterator.java       |  2 +-
 .../paimon/{file => }/disk/ChannelWithMeta.java    |  2 +-
 .../{file => }/disk/ChannelWriterOutputView.java   |  8 ++---
 .../paimon/{file => }/disk/FileChannelManager.java |  2 +-
 .../{file => }/disk/FileChannelManagerImpl.java    |  6 ++--
 .../paimon/{file => }/disk/FileChannelUtil.java    |  4 +--
 .../paimon/{file => }/disk/FileIOChannel.java      |  2 +-
 .../apache/paimon/{file => }/disk/IOManager.java   |  6 ++--
 .../paimon/{file => }/disk/IOManagerImpl.java      |  6 ++--
 .../org/apache/paimon/file/AbstractFileStore.java  | 12 +++----
 .../apache/paimon/file/AppendOnlyFileStore.java    |  8 ++---
 .../java/org/apache/paimon/file/FileStore.java     | 12 +++----
 .../main/java/org/apache/paimon/file/KeyValue.java |  4 +--
 .../org/apache/paimon/file/KeyValueFileStore.java  | 12 +++----
 .../main/java/org/apache/paimon/file/Snapshot.java |  8 ++---
 .../file/sort/AbstractBinaryExternalMerger.java    | 14 ++++----
 .../paimon/file/sort/BinaryExternalMerger.java     |  8 ++---
 .../paimon/file/sort/BinaryExternalSortBuffer.java | 14 ++++----
 .../paimon/file/sort/BinaryInMemorySortBuffer.java |  2 +-
 .../paimon/file/sort/BinaryIndexedSortable.java    |  2 +-
 .../paimon/file/sort/SpillChannelManager.java      |  2 +-
 .../file/stats/FieldStatsArraySerializer.java      |  2 +-
 .../paimon/file/stats/FieldStatsConverters.java    |  4 +--
 .../paimon/file/utils/BulkFormatMapping.java       | 12 +++----
 .../apache/paimon/file/utils/CommitIncrement.java  |  4 +--
 .../paimon/file/utils/FileStorePathFactory.java    |  2 +-
 .../apache/paimon/file/utils/JsonSerdeUtil.java    |  4 +--
 .../org/apache/paimon/file/utils/RecordWriter.java |  4 +--
 .../{file => }/io/AbstractFileRecordIterator.java  |  6 ++--
 .../paimon/{file => }/io/CompactIncrement.java     |  2 +-
 .../apache/paimon/{file => }/io/DataFileMeta.java  |  2 +-
 .../{file => }/io/DataFileMetaSerializer.java      |  2 +-
 .../paimon/{file => }/io/DataFilePathFactory.java  |  2 +-
 .../apache/paimon/{file => }/io/FileWriter.java    |  2 +-
 .../io/KeyValueDataFileRecordReader.java           |  4 +--
 .../{file => }/io/KeyValueDataFileWriter.java      |  2 +-
 .../{file => }/io/KeyValueFileReaderFactory.java   | 10 +++---
 .../{file => }/io/KeyValueFileWriterFactory.java   |  2 +-
 .../paimon/{file => }/io/NewFilesIncrement.java    |  2 +-
 .../paimon/{file => }/io/RollingFileWriter.java    |  2 +-
 .../{file => }/io/RowDataFileRecordReader.java     |  4 +--
 .../paimon/{file => }/io/RowDataFileWriter.java    |  2 +-
 .../{file => }/io/RowDataRollingFileWriter.java    |  2 +-
 .../paimon/{file => }/io/SingleFileWriter.java     |  2 +-
 .../io/StatsCollectingSingleFileWriter.java        |  2 +-
 .../paimon/{file => }/manifest/FileKind.java       |  2 +-
 .../{file => }/manifest/ManifestCommittable.java   |  2 +-
 .../manifest/ManifestCommittableSerializer.java    |  2 +-
 .../paimon/{file => }/manifest/ManifestEntry.java  |  4 +--
 .../manifest/ManifestEntrySerializer.java          |  4 +--
 .../paimon/{file => }/manifest/ManifestFile.java   |  8 ++---
 .../{file => }/manifest/ManifestFileMeta.java      |  2 +-
 .../manifest/ManifestFileMetaSerializer.java       |  2 +-
 .../paimon/{file => }/manifest/ManifestList.java   |  2 +-
 .../apache/paimon/{file => }/memory/Buffer.java    |  4 +--
 .../{file => }/memory/HeapMemorySegmentPool.java   |  4 +--
 .../paimon/{file => }/memory/MemoryOwner.java      |  2 +-
 .../{file => }/memory/MemoryPoolFactory.java       |  4 +--
 .../{file => }/memory/MemorySegmentPool.java       |  4 +--
 .../{file => }/mergetree/DataFileReader.java       |  4 +--
 .../{file => }/mergetree/DropDeleteReader.java     |  2 +-
 .../{file => }/mergetree/LevelSortedRun.java       |  2 +-
 .../apache/paimon/{file => }/mergetree/Levels.java |  4 +--
 .../paimon/{file => }/mergetree/LookupLevels.java  |  4 +--
 .../{file => }/mergetree/MergeTreeReaders.java     | 16 ++++-----
 .../{file => }/mergetree/MergeTreeWriter.java      | 24 ++++++-------
 .../mergetree/SortBufferWriteBuffer.java           | 10 +++---
 .../paimon/{file => }/mergetree/SortedRun.java     |  4 +--
 .../paimon/{file => }/mergetree/WriteBuffer.java   |  4 +--
 .../mergetree/compact/AbstractCompactRewriter.java |  8 ++---
 .../compact/ChangelogMergeTreeRewriter.java        | 16 ++++-----
 .../mergetree/compact/ChangelogResult.java         |  2 +-
 .../mergetree/compact/CompactRewriter.java         |  8 ++---
 .../mergetree/compact/CompactStrategy.java         |  6 ++--
 .../mergetree/compact/ConcatRecordReader.java      |  2 +-
 .../compact/DeduplicateMergeFunction.java          |  2 +-
 .../mergetree/compact/ForceUpLevel0Compaction.java |  6 ++--
 .../compact/FullChangelogMergeFunctionWrapper.java |  2 +-
 .../FullChangelogMergeTreeCompactRewriter.java     | 10 +++---
 .../mergetree/compact/IntervalPartition.java       |  6 ++--
 .../LookupChangelogMergeFunctionWrapper.java       |  2 +-
 .../mergetree/compact/LookupCompaction.java        |  6 ++--
 .../mergetree/compact/LookupMergeFunction.java     |  2 +-
 .../compact/LookupMergeTreeCompactRewriter.java    | 12 +++----
 .../mergetree/compact/MergeFunction.java           |  2 +-
 .../mergetree/compact/MergeFunctionFactory.java    |  2 +-
 .../mergetree/compact/MergeFunctionWrapper.java    |  2 +-
 .../mergetree/compact/MergeTreeCompactManager.java | 14 ++++----
 .../compact/MergeTreeCompactRewriter.java          | 16 ++++-----
 .../mergetree/compact/MergeTreeCompactTask.java    | 12 +++----
 .../compact/PartialUpdateMergeFunction.java        |  2 +-
 .../compact/ReducerMergeFunctionWrapper.java       |  2 +-
 .../mergetree/compact/SortMergeReader.java         |  2 +-
 .../mergetree/compact/UniversalCompaction.java     |  8 ++---
 .../mergetree/compact/ValueCountMergeFunction.java |  2 +-
 .../compact/aggregate/AggregateMergeFunction.java  |  6 ++--
 .../compact/aggregate/FieldAggregator.java         |  2 +-
 .../compact/aggregate/FieldBoolAndAgg.java         |  2 +-
 .../compact/aggregate/FieldBoolOrAgg.java          |  2 +-
 .../compact/aggregate/FieldIgnoreRetractAgg.java   |  2 +-
 .../aggregate/FieldLastNonNullValueAgg.java        |  2 +-
 .../compact/aggregate/FieldLastValueAgg.java       |  2 +-
 .../compact/aggregate/FieldListaggAgg.java         |  2 +-
 .../mergetree/compact/aggregate/FieldMaxAgg.java   |  2 +-
 .../mergetree/compact/aggregate/FieldMinAgg.java   |  2 +-
 .../compact/aggregate/FieldPrimaryKeyAgg.java      |  2 +-
 .../mergetree/compact/aggregate/FieldSumAgg.java   |  2 +-
 .../operation/AbstractFileStoreScan.java           | 20 +++++------
 .../operation/AbstractFileStoreWrite.java          |  8 ++---
 .../operation/AppendOnlyFileStoreRead.java         | 22 ++++++------
 .../operation/AppendOnlyFileStoreScan.java         | 18 +++++-----
 .../operation/AppendOnlyFileStoreWrite.java        | 18 +++++-----
 .../{file => }/operation/FileStoreCommit.java      |  4 +--
 .../{file => }/operation/FileStoreCommitImpl.java  | 22 ++++++------
 .../{file => }/operation/FileStoreExpire.java      |  2 +-
 .../{file => }/operation/FileStoreExpireImpl.java  | 10 +++---
 .../paimon/{file => }/operation/FileStoreRead.java |  4 +--
 .../paimon/{file => }/operation/FileStoreScan.java | 12 +++----
 .../{file => }/operation/FileStoreWrite.java       |  6 ++--
 .../operation/KeyValueFileStoreRead.java           | 36 +++++++++----------
 .../operation/KeyValueFileStoreScan.java           | 20 +++++------
 .../operation/KeyValueFileStoreWrite.java          | 42 +++++++++++-----------
 .../apache/paimon/{file => }/operation/Lock.java   |  6 ++--
 .../{file => }/operation/MemoryFileStoreWrite.java |  8 ++---
 .../{file => }/operation/PartitionExpire.java      |  8 ++---
 .../paimon/{file => }/operation/ReverseReader.java |  2 +-
 .../paimon/{file => }/operation/ScanKind.java      |  2 +-
 .../partition/PartitionTimeExtractor.java          |  2 +-
 .../{file => }/predicate/BucketSelector.java       |  6 ++--
 .../paimon/{file => }/schema/IndexCastMapping.java |  4 +--
 .../{file => }/schema/KeyValueFieldsExtractor.java |  2 +-
 .../apache/paimon/{file => }/schema/Schema.java    |  2 +-
 .../paimon/{file => }/schema/SchemaChange.java     |  2 +-
 .../{file => }/schema/SchemaEvolutionUtil.java     | 14 ++++----
 .../paimon/{file => }/schema/SchemaManager.java    | 24 ++++++-------
 .../paimon/{file => }/schema/SchemaSerializer.java |  2 +-
 .../paimon/{file => }/schema/SchemaValidation.java |  6 ++--
 .../paimon/{file => }/schema/SystemColumns.java    |  2 +-
 .../paimon/{file => }/schema/TableSchema.java      |  2 +-
 .../paimon/table/AbstractFileStoreTable.java       | 10 +++---
 .../paimon/table/AppendOnlyFileStoreTable.java     | 12 +++----
 .../table/ChangelogValueCountFileStoreTable.java   | 18 +++++-----
 .../table/ChangelogWithKeyFileStoreTable.java      | 28 +++++++--------
 .../org/apache/paimon/table/FileStoreTable.java    |  4 +--
 .../apache/paimon/table/FileStoreTableFactory.java |  4 +--
 .../java/org/apache/paimon/table/TableUtils.java   |  6 ++--
 .../apache/paimon/table/sink/BucketComputer.java   |  2 +-
 .../paimon/table/sink/CommitMessageImpl.java       |  4 +--
 .../paimon/table/sink/CommitMessageSerializer.java |  6 ++--
 .../apache/paimon/table/sink/InnerTableCommit.java |  2 +-
 .../paimon/table/sink/PartitionComputer.java       |  2 +-
 .../paimon/table/sink/SinkRecordConverter.java     |  2 +-
 .../apache/paimon/table/sink/TableCommitImpl.java  | 10 +++---
 .../org/apache/paimon/table/sink/TableWrite.java   |  2 +-
 .../apache/paimon/table/sink/TableWriteImpl.java   |  8 ++---
 .../paimon/table/source/AbstractDataTableScan.java |  6 ++--
 .../table/source/AppendOnlySplitGenerator.java     |  2 +-
 .../org/apache/paimon/table/source/DataSplit.java  |  4 +--
 .../apache/paimon/table/source/DataTableScan.java  |  4 +--
 .../apache/paimon/table/source/InnerTableRead.java |  4 +--
 .../apache/paimon/table/source/InnerTableScan.java |  4 +--
 .../paimon/table/source/KeyValueTableRead.java     |  2 +-
 .../table/source/MergeTreeSplitGenerator.java      |  6 ++--
 .../apache/paimon/table/source/ReadBuilder.java    |  4 +--
 .../paimon/table/source/ReadBuilderImpl.java       |  2 +-
 .../apache/paimon/table/source/SplitGenerator.java |  2 +-
 .../paimon/table/source/StreamDataTableScan.java   |  2 +-
 .../org/apache/paimon/table/source/TableRead.java  |  4 +--
 .../paimon/table/source/TableStreamingReader.java  |  8 ++---
 .../source/snapshot/CompactedStartingScanner.java  |  2 +-
 .../CompactionChangelogFollowUpScanner.java        |  2 +-
 .../ContinuousCompactorFollowUpScanner.java        |  2 +-
 .../source/snapshot/DeltaFollowUpScanner.java      |  2 +-
 .../table/source/snapshot/FullStartingScanner.java |  2 +-
 .../snapshot/InputChangelogFollowUpScanner.java    |  2 +-
 .../table/source/snapshot/SnapshotSplitReader.java |  6 ++--
 .../source/snapshot/SnapshotSplitReaderImpl.java   | 16 ++++-----
 .../StaticFromSnapshotStartingScanner.java         |  2 +-
 .../StaticFromTimestampStartingScanner.java        |  2 +-
 .../apache/paimon/table/system/AuditLogTable.java  | 12 +++----
 .../apache/paimon/table/system/BucketsTable.java   |  6 ++--
 .../org/apache/paimon/table/system/FilesTable.java | 12 +++----
 .../apache/paimon/table/system/OptionsTable.java   |  6 ++--
 .../apache/paimon/table/system/SchemasTable.java   |  8 ++---
 .../apache/paimon/table/system/SnapshotsTable.java |  4 +--
 ....file.org.apache.paimon.catalog.CatalogFactory} |  2 +-
 .../append/AppendOnlyCompactManagerTest.java       |  6 ++--
 .../{file => }/append/AppendOnlyWriterTest.java    |  8 ++---
 .../append/IterativeCompactTaskTest.java           |  8 ++---
 .../{file => }/casting/CastExecutorTest.java       |  2 +-
 .../{file => }/catalog/CatalogFactoryTest.java     |  2 +-
 .../disk/BufferFileWriterReaderTest.java           |  4 +--
 .../paimon/{file => }/disk/IOManagerTest.java      |  2 +-
 .../java/org/apache/paimon/file/TestFileStore.java | 34 +++++++++---------
 .../apache/paimon/file/TestKeyValueGenerator.java  |  6 ++--
 .../paimon/file/format/FileFormatSuffixTest.java   | 12 +++----
 .../file/format/FileStatsExtractingAvroFormat.java |  2 +-
 .../paimon/file/format/FlushingFileFormat.java     |  2 +-
 .../file/sort/BinaryExternalSortBufferTest.java    |  6 ++--
 .../file/stats/FieldStatsArraySerializerTest.java  |  8 ++---
 .../file/utils/FileStorePathFactoryTest.java       |  2 +-
 .../{file => }/io/DataFileMetaSerializerTest.java  |  2 +-
 .../{file => }/io/DataFilePathFactoryTest.java     |  2 +-
 .../{file => }/io/DataFileTestDataGenerator.java   |  2 +-
 .../paimon/{file => }/io/DataFileTestUtils.java    |  2 +-
 .../{file => }/io/KeyValueFileReadWriteTest.java   |  2 +-
 .../{file => }/io/RollingFileWriterTest.java       |  2 +-
 .../ManifestCommittableSerializerTest.java         | 10 +++---
 .../manifest/ManifestEntrySerializerTest.java      |  2 +-
 .../manifest/ManifestFileMetaSerializerTest.java   |  2 +-
 .../{file => }/manifest/ManifestFileMetaTest.java  |  6 ++--
 .../{file => }/manifest/ManifestFileTest.java      |  4 +--
 .../{file => }/manifest/ManifestListTest.java      |  2 +-
 .../manifest/ManifestTestDataGenerator.java        |  4 +--
 .../{file => }/memory/MemoryPoolFactoryTest.java   |  2 +-
 .../paimon/{file => }/mergetree/LevelsTest.java    |  6 ++--
 .../{file => }/mergetree/LookupLevelsTest.java     | 18 +++++-----
 .../paimon/{file => }/mergetree/MergeTreeTest.java | 32 ++++++++---------
 .../mergetree/SortBufferWriteBufferTestBase.java   | 12 +++----
 .../compact/CombiningRecordReaderTestBase.java     |  2 +-
 .../mergetree/compact/ConcatRecordReaderTest.java  |  2 +-
 .../compact/ForceUpLevel0CompactionTest.java       | 10 +++---
 .../FullChangelogMergeFunctionWrapperTestBase.java |  4 +--
 .../mergetree/compact/IntervalPartitionTest.java   |  6 ++--
 .../LookupChangelogMergeFunctionWrapperTest.java   | 10 +++---
 .../mergetree/compact/MergeFunctionTestUtils.java  |  2 +-
 .../compact/MergeTreeCompactManagerTest.java       | 16 ++++-----
 .../ReducerMergeFunctionWrapperTestBase.java       |  4 +--
 .../mergetree/compact/SortMergeReaderTestBase.java |  2 +-
 .../mergetree/compact/UniversalCompactionTest.java | 12 +++----
 .../compact/aggregate/FieldAggregatorTest.java     |  2 +-
 .../operation/CleanedFileStoreExpireTest.java      |  8 ++---
 .../{file => }/operation/FileStoreCommitTest.java  | 12 +++----
 .../operation/FileStoreExpireTestBase.java         |  8 ++---
 .../operation/KeyValueFileStoreReadTest.java       | 18 +++++-----
 .../operation/KeyValueFileStoreScanTest.java       | 14 ++++----
 .../{file => }/operation/PartitionExpireTest.java  |  6 ++--
 .../{file => }/operation/TestCommitThread.java     |  8 ++---
 .../operation/UncleanedFileStoreExpireTest.java    |  2 +-
 .../partition/PartitionTimeExtractorTest.java      |  2 +-
 .../{file => }/predicate/BucketSelectorTest.java   |  6 ++--
 .../{file => }/predicate/PredicateBuilderTest.java |  2 +-
 .../paimon/{file => }/predicate/PredicateTest.java |  2 +-
 .../{file => }/schema/DataTypeJsonParserTest.java  |  2 +-
 .../{file => }/schema/SchemaEvolutionUtilTest.java | 12 +++----
 .../{file => }/schema/SchemaManagerTest.java       |  2 +-
 .../paimon/{file => }/schema/SchemaUtils.java      |  2 +-
 .../schema/TableSchemaSerializationTest.java       |  4 +--
 .../paimon/{file => }/schema/TableSchemaTest.java  |  2 +-
 .../paimon/table/AppendOnlyFileDataTableTest.java  |  4 +--
 .../paimon/table/AppendOnlyFileStoreTableTest.java | 14 ++++----
 .../AppendOnlyTableColumnTypeFileDataTest.java     |  4 +--
 .../AppendOnlyTableColumnTypeFileMetaTest.java     |  6 ++--
 .../table/AppendOnlyTableFileMetaFilterTest.java   |  6 ++--
 .../ChangelogValueCountColumnTypeFileDataTest.java |  4 +--
 .../ChangelogValueCountColumnTypeFileMetaTest.java |  6 ++--
 .../ChangelogValueCountFileDataTableTest.java      |  4 +--
 .../ChangelogValueCountFileMetaFilterTest.java     |  6 ++--
 .../ChangelogValueCountFileStoreTableTest.java     | 16 ++++-----
 .../ChangelogWithKeyColumnTypeFileDataTest.java    |  8 ++---
 .../table/ChangelogWithKeyFileDataTableTest.java   |  8 ++---
 .../table/ChangelogWithKeyFileMetaFilterTest.java  | 10 +++---
 .../table/ChangelogWithKeyFileStoreTableTest.java  | 14 ++++----
 ...hangelogWithKeyTableColumnTypeFileMetaTest.java | 10 +++---
 .../paimon/table/ColumnTypeFileDataTestBase.java   |  4 +--
 .../paimon/table/ColumnTypeFileMetaTestBase.java   |  6 ++--
 .../paimon/table/FileDataFilterTestBase.java       | 12 +++----
 .../paimon/table/FileMetaFilterTestBase.java       |  6 ++--
 .../paimon/table/FileStoreTableTestBase.java       | 12 +++----
 .../paimon/table/SchemaEvolutionTableTestBase.java | 12 +++----
 .../apache/paimon/table/SchemaEvolutionTest.java   | 14 ++++----
 .../paimon/table/WritePreemptMemoryTest.java       |  8 ++---
 .../table/sink/CommitMessageSerializerTest.java    | 10 +++---
 .../paimon/table/sink/SinkRecordConverterTest.java |  2 +-
 .../apache/paimon/table/sink/TableWriteTest.java   | 10 +++---
 .../paimon/table/source/SplitGeneratorTest.java    |  4 +--
 .../org/apache/paimon/table/source/SplitTest.java  |  4 +--
 .../BoundedWatermarkFollowUpScannerTest.java       |  2 +-
 .../ContinuousCompactorFollowUpScannerTest.java    |  2 +-
 .../table/source/snapshot/ScannerTestBase.java     |  8 ++---
 .../connector/AbstractTableStoreFactory.java       |  4 +--
 .../org/apache/paimon/connector/FlinkCatalog.java  |  8 ++---
 .../paimon/connector/FlinkCatalogFactory.java      |  4 +--
 .../paimon/connector/PredicateConverter.java       |  4 +--
 .../connector/TableStoreConnectorFactory.java      |  4 +--
 .../org/apache/paimon/connector/action/Action.java |  2 +-
 .../apache/paimon/connector/action/ActionBase.java | 10 +++---
 .../connector/lookup/FileStoreLookupFunction.java  |  8 ++---
 .../connector/sink/BucketStreamPartitioner.java    |  2 +-
 .../connector/sink/CommittableStateManager.java    |  4 +--
 .../apache/paimon/connector/sink/Committer.java    |  2 +-
 .../paimon/connector/sink/CommitterOperator.java   |  2 +-
 .../paimon/connector/sink/CompactorSink.java       |  2 +-
 .../connector/sink/CompactorSinkBuilder.java       |  2 +-
 .../paimon/connector/sink/FileStoreSink.java       |  4 +--
 .../paimon/connector/sink/FlinkSinkBuilder.java    |  2 +-
 .../sink/NoopCommittableStateManager.java          |  2 +-
 .../RestoreAndFailCommittableStateManager.java     |  2 +-
 .../paimon/connector/sink/StoreCommitter.java      |  2 +-
 .../connector/sink/StoreCompactOperator.java       |  4 +--
 .../paimon/connector/sink/StoreSinkWrite.java      |  2 +-
 .../paimon/connector/sink/StoreSinkWriteImpl.java  |  4 +--
 .../paimon/connector/sink/TableStoreSink.java      |  4 +--
 .../connector/source/CompactorSourceBuilder.java   |  4 +--
 .../source/ContinuousFileStoreSource.java          |  2 +-
 .../connector/source/FlinkSourceBuilder.java       |  2 +-
 .../paimon/connector/source/FlinkTableSource.java  |  4 +--
 .../connector/source/StaticFileStoreSource.java    |  2 +-
 .../paimon/connector/source/SystemTableSource.java |  2 +-
 .../paimon/connector/source/TableStoreSource.java  |  2 +-
 .../connector/BinaryRowTypeSerializerTest.java     |  2 +-
 .../paimon/connector/CatalogTableITCase.java       |  4 +--
 .../apache/paimon/connector/ChangelogModeTest.java |  4 +--
 .../apache/paimon/connector/FileStoreITCase.java   |  4 +--
 .../paimon/connector/FileSystemCatalogITCase.java  |  6 ++--
 .../apache/paimon/connector/FlinkCatalogTest.java  |  2 +-
 .../paimon/connector/ForceCompactionITCase.java    |  4 +--
 .../paimon/connector/PredicateConverterTest.java   |  4 +--
 .../paimon/connector/ReadWriteTableITCase.java     |  2 +-
 .../paimon/connector/RescaleBucketITCase.java      |  4 +--
 .../paimon/connector/action/ActionITCaseBase.java  |  8 ++---
 .../paimon/connector/kafka/KafkaLogTestUtils.java  |  2 +-
 .../connector/sink/CommittableSerializerTest.java  | 10 +++---
 .../connector/sink/CommitterOperatorTest.java      |  2 +-
 .../connector/sink/CommitterOperatorTestBase.java  |  4 +--
 .../paimon/connector/sink/CompactorSinkITCase.java |  6 ++--
 .../connector/sink/FileStoreShuffleBucketTest.java |  2 +-
 .../connector/source/CompactorSourceITCase.java    |  8 ++---
 .../source/ContinuousFileSplitEnumeratorTest.java  |  4 +--
 .../source/FileStoreSourceReaderTest.java          |  6 ++--
 .../source/FileStoreSourceSplitGeneratorTest.java  | 10 +++---
 .../source/FileStoreSourceSplitReaderTest.java     |  8 ++---
 .../source/FileStoreSourceSplitSerializerTest.java |  4 +--
 .../source/FileStoreSourceSplitStateTest.java      |  2 +-
 .../PendingSplitsCheckpointSerializerTest.java     |  2 +-
 .../source/TestChangelogDataReadWrite.java         | 20 +++++------
 .../apache/paimon/format/avro/AvroFileFormat.java  |  2 +-
 .../apache/paimon/format/orc/OrcFileFormat.java    |  2 +-
 .../orc/filter/OrcPredicateFunctionVisitor.java    |  6 ++--
 .../paimon/format/parquet/ParquetFileFormat.java   |  2 +-
 .../paimon/format/orc/OrcFilterConverterTest.java  |  4 +--
 .../java/org/apache/paimon/hive/HiveCatalog.java   | 16 ++++-----
 .../org/apache/paimon/hive/HiveCatalogFactory.java |  4 +--
 .../org/apache/paimon/hive/HiveCatalogLock.java    |  2 +-
 ....file.org.apache.paimon.catalog.CatalogFactory} |  0
 .../org/apache/paimon/hive/HiveCatalogITCase.java  | 10 +++---
 .../java/org/apache/paimon/hive/HiveSchema.java    |  2 +-
 .../hive/SearchArgumentToPredicateConverter.java   |  6 ++--
 .../paimon/hive/mapred/TableStoreInputFormat.java  |  4 +--
 .../paimon/hive/mapred/TableStoreInputSplit.java   |  2 +-
 .../org/apache/paimon/hive/FileStoreTestUtils.java |  4 +--
 .../apache/paimon/hive/HiveTableSchemaTest.java    |  4 +--
 .../SearchArgumentToPredicateConverterTest.java    |  4 +--
 .../apache/paimon/hive/TableStoreSerDeTest.java    |  4 +--
 .../hive/mapred/TableStoreInputSplitTest.java      |  2 +-
 .../apache/paimon/spark/SparkDataSourceReader.java |  2 +-
 .../apache/paimon/spark/SimpleTableTestHelper.java |  4 +--
 .../paimon/spark/SparkFilterConverterTest.java     |  4 +--
 .../java/org/apache/paimon/spark/SparkCatalog.java |  8 ++---
 .../apache/paimon/spark/SparkFilterConverter.java  |  6 ++--
 .../org/apache/paimon/spark/SparkScanBuilder.java  |  2 +-
 .../java/org/apache/paimon/spark/SparkSource.java  |  2 +-
 .../java/org/apache/paimon/spark/SparkTable.java   |  4 +--
 .../java/org/apache/paimon/spark/SparkWrite.java   |  2 +-
 .../org/apache/paimon/spark/SparkWriteBuilder.java |  2 +-
 .../paimon/spark/SparkFilterConverterTest.java     |  4 +--
 .../org/apache/paimon/spark/SparkReadITCase.java   |  2 +-
 .../org/apache/paimon/spark/SparkReadTestBase.java |  2 +-
 433 files changed, 1170 insertions(+), 1176 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 028dd94f3..72f1a697b 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
@@ -25,10 +25,10 @@ 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.file.catalog.Catalog;
-import org.apache.paimon.file.catalog.CatalogFactory;
-import org.apache.paimon.file.catalog.Identifier;
-import org.apache.paimon.file.schema.Schema;
+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.options.CatalogOptions;
 import org.apache.paimon.options.Options;
 import org.apache.paimon.table.Table;
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 f0ab792c0..946e549db 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,7 +18,7 @@
 
 package org.apache.paimon.format;
 
-import org.apache.paimon.file.predicate.Predicate;
+import org.apache.paimon.predicate.Predicate;
 import org.apache.paimon.options.ConfigOption;
 import org.apache.paimon.options.Options;
 import org.apache.paimon.types.RowType;
diff --git a/paimon-common/src/main/java/org/apache/paimon/file/predicate/And.java b/paimon-common/src/main/java/org/apache/paimon/predicate/And.java
similarity index 98%
rename from paimon-common/src/main/java/org/apache/paimon/file/predicate/And.java
rename to paimon-common/src/main/java/org/apache/paimon/predicate/And.java
index 8caf6e83e..011449ecf 100644
--- a/paimon-common/src/main/java/org/apache/paimon/file/predicate/And.java
+++ b/paimon-common/src/main/java/org/apache/paimon/predicate/And.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.predicate;
+package org.apache.paimon.predicate;
 
 import org.apache.paimon.format.FieldStats;
 
diff --git a/paimon-common/src/main/java/org/apache/paimon/file/predicate/CompareUtils.java b/paimon-common/src/main/java/org/apache/paimon/predicate/CompareUtils.java
similarity index 97%
rename from paimon-common/src/main/java/org/apache/paimon/file/predicate/CompareUtils.java
rename to paimon-common/src/main/java/org/apache/paimon/predicate/CompareUtils.java
index 80a0520f2..9f64d316a 100644
--- a/paimon-common/src/main/java/org/apache/paimon/file/predicate/CompareUtils.java
+++ b/paimon-common/src/main/java/org/apache/paimon/predicate/CompareUtils.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.predicate;
+package org.apache.paimon.predicate;
 
 import org.apache.paimon.types.DataType;
 
diff --git a/paimon-common/src/main/java/org/apache/paimon/file/predicate/CompoundPredicate.java b/paimon-common/src/main/java/org/apache/paimon/predicate/CompoundPredicate.java
similarity index 98%
rename from paimon-common/src/main/java/org/apache/paimon/file/predicate/CompoundPredicate.java
rename to paimon-common/src/main/java/org/apache/paimon/predicate/CompoundPredicate.java
index 5f4bf1ee9..dcaa5c949 100644
--- a/paimon-common/src/main/java/org/apache/paimon/file/predicate/CompoundPredicate.java
+++ b/paimon-common/src/main/java/org/apache/paimon/predicate/CompoundPredicate.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.predicate;
+package org.apache.paimon.predicate;
 
 import org.apache.paimon.format.FieldStats;
 
diff --git a/paimon-common/src/main/java/org/apache/paimon/file/predicate/Equal.java b/paimon-common/src/main/java/org/apache/paimon/predicate/Equal.java
similarity index 94%
rename from paimon-common/src/main/java/org/apache/paimon/file/predicate/Equal.java
rename to paimon-common/src/main/java/org/apache/paimon/predicate/Equal.java
index 7af47ee56..e375479a6 100644
--- a/paimon-common/src/main/java/org/apache/paimon/file/predicate/Equal.java
+++ b/paimon-common/src/main/java/org/apache/paimon/predicate/Equal.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.predicate;
+package org.apache.paimon.predicate;
 
 import org.apache.paimon.format.FieldStats;
 import org.apache.paimon.types.DataType;
@@ -24,7 +24,7 @@ import org.apache.paimon.types.DataType;
 import java.util.List;
 import java.util.Optional;
 
-import static org.apache.paimon.file.predicate.CompareUtils.compareLiteral;
+import static org.apache.paimon.predicate.CompareUtils.compareLiteral;
 
 /** A {@link NullFalseLeafBinaryFunction} to eval equal. */
 public class Equal extends NullFalseLeafBinaryFunction {
diff --git a/paimon-common/src/main/java/org/apache/paimon/file/predicate/FieldRef.java b/paimon-common/src/main/java/org/apache/paimon/predicate/FieldRef.java
similarity index 98%
rename from paimon-common/src/main/java/org/apache/paimon/file/predicate/FieldRef.java
rename to paimon-common/src/main/java/org/apache/paimon/predicate/FieldRef.java
index 607255757..a760ec273 100644
--- a/paimon-common/src/main/java/org/apache/paimon/file/predicate/FieldRef.java
+++ b/paimon-common/src/main/java/org/apache/paimon/predicate/FieldRef.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.predicate;
+package org.apache.paimon.predicate;
 
 import org.apache.paimon.types.DataType;
 
diff --git a/paimon-common/src/main/java/org/apache/paimon/file/predicate/FunctionVisitor.java b/paimon-common/src/main/java/org/apache/paimon/predicate/FunctionVisitor.java
similarity index 98%
rename from paimon-common/src/main/java/org/apache/paimon/file/predicate/FunctionVisitor.java
rename to paimon-common/src/main/java/org/apache/paimon/predicate/FunctionVisitor.java
index cab41a6a7..f15e85d7f 100644
--- a/paimon-common/src/main/java/org/apache/paimon/file/predicate/FunctionVisitor.java
+++ b/paimon-common/src/main/java/org/apache/paimon/predicate/FunctionVisitor.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.predicate;
+package org.apache.paimon.predicate;
 
 import java.util.List;
 import java.util.stream.Collectors;
diff --git a/paimon-common/src/main/java/org/apache/paimon/file/predicate/GreaterOrEqual.java b/paimon-common/src/main/java/org/apache/paimon/predicate/GreaterOrEqual.java
similarity index 93%
rename from paimon-common/src/main/java/org/apache/paimon/file/predicate/GreaterOrEqual.java
rename to paimon-common/src/main/java/org/apache/paimon/predicate/GreaterOrEqual.java
index 6f4256952..85005c55b 100644
--- a/paimon-common/src/main/java/org/apache/paimon/file/predicate/GreaterOrEqual.java
+++ b/paimon-common/src/main/java/org/apache/paimon/predicate/GreaterOrEqual.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.predicate;
+package org.apache.paimon.predicate;
 
 import org.apache.paimon.format.FieldStats;
 import org.apache.paimon.types.DataType;
@@ -24,7 +24,7 @@ import org.apache.paimon.types.DataType;
 import java.util.List;
 import java.util.Optional;
 
-import static org.apache.paimon.file.predicate.CompareUtils.compareLiteral;
+import static org.apache.paimon.predicate.CompareUtils.compareLiteral;
 
 /** A {@link NullFalseLeafBinaryFunction} to eval greater or equal. */
 public class GreaterOrEqual extends NullFalseLeafBinaryFunction {
diff --git a/paimon-common/src/main/java/org/apache/paimon/file/predicate/GreaterThan.java b/paimon-common/src/main/java/org/apache/paimon/predicate/GreaterThan.java
similarity index 93%
rename from paimon-common/src/main/java/org/apache/paimon/file/predicate/GreaterThan.java
rename to paimon-common/src/main/java/org/apache/paimon/predicate/GreaterThan.java
index 00d189040..57300945c 100644
--- a/paimon-common/src/main/java/org/apache/paimon/file/predicate/GreaterThan.java
+++ b/paimon-common/src/main/java/org/apache/paimon/predicate/GreaterThan.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.predicate;
+package org.apache.paimon.predicate;
 
 import org.apache.paimon.format.FieldStats;
 import org.apache.paimon.types.DataType;
@@ -24,7 +24,7 @@ import org.apache.paimon.types.DataType;
 import java.util.List;
 import java.util.Optional;
 
-import static org.apache.paimon.file.predicate.CompareUtils.compareLiteral;
+import static org.apache.paimon.predicate.CompareUtils.compareLiteral;
 
 /** A {@link LeafFunction} to eval greater. */
 public class GreaterThan extends NullFalseLeafBinaryFunction {
diff --git a/paimon-common/src/main/java/org/apache/paimon/file/predicate/In.java b/paimon-common/src/main/java/org/apache/paimon/predicate/In.java
similarity index 95%
rename from paimon-common/src/main/java/org/apache/paimon/file/predicate/In.java
rename to paimon-common/src/main/java/org/apache/paimon/predicate/In.java
index 56f32be79..2360b3f4f 100644
--- a/paimon-common/src/main/java/org/apache/paimon/file/predicate/In.java
+++ b/paimon-common/src/main/java/org/apache/paimon/predicate/In.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.predicate;
+package org.apache.paimon.predicate;
 
 import org.apache.paimon.format.FieldStats;
 import org.apache.paimon.types.DataType;
@@ -24,7 +24,7 @@ import org.apache.paimon.types.DataType;
 import java.util.List;
 import java.util.Optional;
 
-import static org.apache.paimon.file.predicate.CompareUtils.compareLiteral;
+import static org.apache.paimon.predicate.CompareUtils.compareLiteral;
 
 /** A {@link LeafFunction} to eval in. */
 public class In extends LeafFunction {
diff --git a/paimon-common/src/main/java/org/apache/paimon/file/predicate/IsNotNull.java b/paimon-common/src/main/java/org/apache/paimon/predicate/IsNotNull.java
similarity index 97%
rename from paimon-common/src/main/java/org/apache/paimon/file/predicate/IsNotNull.java
rename to paimon-common/src/main/java/org/apache/paimon/predicate/IsNotNull.java
index 6844619a0..dcf5d1687 100644
--- a/paimon-common/src/main/java/org/apache/paimon/file/predicate/IsNotNull.java
+++ b/paimon-common/src/main/java/org/apache/paimon/predicate/IsNotNull.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.predicate;
+package org.apache.paimon.predicate;
 
 import org.apache.paimon.format.FieldStats;
 import org.apache.paimon.types.DataType;
diff --git a/paimon-common/src/main/java/org/apache/paimon/file/predicate/IsNull.java b/paimon-common/src/main/java/org/apache/paimon/predicate/IsNull.java
similarity index 97%
rename from paimon-common/src/main/java/org/apache/paimon/file/predicate/IsNull.java
rename to paimon-common/src/main/java/org/apache/paimon/predicate/IsNull.java
index adf4eebd4..22300c718 100644
--- a/paimon-common/src/main/java/org/apache/paimon/file/predicate/IsNull.java
+++ b/paimon-common/src/main/java/org/apache/paimon/predicate/IsNull.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.predicate;
+package org.apache.paimon.predicate;
 
 import org.apache.paimon.format.FieldStats;
 import org.apache.paimon.types.DataType;
diff --git a/paimon-common/src/main/java/org/apache/paimon/file/predicate/LeafFunction.java b/paimon-common/src/main/java/org/apache/paimon/predicate/LeafFunction.java
similarity index 97%
rename from paimon-common/src/main/java/org/apache/paimon/file/predicate/LeafFunction.java
rename to paimon-common/src/main/java/org/apache/paimon/predicate/LeafFunction.java
index e04ba86c6..c9c367e82 100644
--- a/paimon-common/src/main/java/org/apache/paimon/file/predicate/LeafFunction.java
+++ b/paimon-common/src/main/java/org/apache/paimon/predicate/LeafFunction.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.predicate;
+package org.apache.paimon.predicate;
 
 import org.apache.paimon.format.FieldStats;
 import org.apache.paimon.types.DataType;
diff --git a/paimon-common/src/main/java/org/apache/paimon/file/predicate/LeafPredicate.java b/paimon-common/src/main/java/org/apache/paimon/predicate/LeafPredicate.java
similarity index 99%
rename from paimon-common/src/main/java/org/apache/paimon/file/predicate/LeafPredicate.java
rename to paimon-common/src/main/java/org/apache/paimon/predicate/LeafPredicate.java
index d79b23192..134384252 100644
--- a/paimon-common/src/main/java/org/apache/paimon/file/predicate/LeafPredicate.java
+++ b/paimon-common/src/main/java/org/apache/paimon/predicate/LeafPredicate.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.predicate;
+package org.apache.paimon.predicate;
 
 import org.apache.paimon.data.serializer.InternalSerializers;
 import org.apache.paimon.data.serializer.ListSerializer;
diff --git a/paimon-common/src/main/java/org/apache/paimon/file/predicate/LeafUnaryFunction.java b/paimon-common/src/main/java/org/apache/paimon/predicate/LeafUnaryFunction.java
similarity index 97%
rename from paimon-common/src/main/java/org/apache/paimon/file/predicate/LeafUnaryFunction.java
rename to paimon-common/src/main/java/org/apache/paimon/predicate/LeafUnaryFunction.java
index 30c0e663b..429411c24 100644
--- a/paimon-common/src/main/java/org/apache/paimon/file/predicate/LeafUnaryFunction.java
+++ b/paimon-common/src/main/java/org/apache/paimon/predicate/LeafUnaryFunction.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.predicate;
+package org.apache.paimon.predicate;
 
 import org.apache.paimon.format.FieldStats;
 import org.apache.paimon.types.DataType;
diff --git a/paimon-common/src/main/java/org/apache/paimon/file/predicate/LessOrEqual.java b/paimon-common/src/main/java/org/apache/paimon/predicate/LessOrEqual.java
similarity index 93%
rename from paimon-common/src/main/java/org/apache/paimon/file/predicate/LessOrEqual.java
rename to paimon-common/src/main/java/org/apache/paimon/predicate/LessOrEqual.java
index bd9412abc..42bfe1192 100644
--- a/paimon-common/src/main/java/org/apache/paimon/file/predicate/LessOrEqual.java
+++ b/paimon-common/src/main/java/org/apache/paimon/predicate/LessOrEqual.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.predicate;
+package org.apache.paimon.predicate;
 
 import org.apache.paimon.format.FieldStats;
 import org.apache.paimon.types.DataType;
@@ -24,7 +24,7 @@ import org.apache.paimon.types.DataType;
 import java.util.List;
 import java.util.Optional;
 
-import static org.apache.paimon.file.predicate.CompareUtils.compareLiteral;
+import static org.apache.paimon.predicate.CompareUtils.compareLiteral;
 
 /** A {@link NullFalseLeafBinaryFunction} to eval less or equal. */
 public class LessOrEqual extends NullFalseLeafBinaryFunction {
diff --git a/paimon-common/src/main/java/org/apache/paimon/file/predicate/LessThan.java b/paimon-common/src/main/java/org/apache/paimon/predicate/LessThan.java
similarity index 93%
rename from paimon-common/src/main/java/org/apache/paimon/file/predicate/LessThan.java
rename to paimon-common/src/main/java/org/apache/paimon/predicate/LessThan.java
index ac5387106..8149f550c 100644
--- a/paimon-common/src/main/java/org/apache/paimon/file/predicate/LessThan.java
+++ b/paimon-common/src/main/java/org/apache/paimon/predicate/LessThan.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.predicate;
+package org.apache.paimon.predicate;
 
 import org.apache.paimon.format.FieldStats;
 import org.apache.paimon.types.DataType;
@@ -24,7 +24,7 @@ import org.apache.paimon.types.DataType;
 import java.util.List;
 import java.util.Optional;
 
-import static org.apache.paimon.file.predicate.CompareUtils.compareLiteral;
+import static org.apache.paimon.predicate.CompareUtils.compareLiteral;
 
 /** A {@link NullFalseLeafBinaryFunction} to eval less or equal. */
 public class LessThan extends NullFalseLeafBinaryFunction {
diff --git a/paimon-common/src/main/java/org/apache/paimon/file/predicate/NotEqual.java b/paimon-common/src/main/java/org/apache/paimon/predicate/NotEqual.java
similarity index 94%
rename from paimon-common/src/main/java/org/apache/paimon/file/predicate/NotEqual.java
rename to paimon-common/src/main/java/org/apache/paimon/predicate/NotEqual.java
index e6cca773c..0e2704ada 100644
--- a/paimon-common/src/main/java/org/apache/paimon/file/predicate/NotEqual.java
+++ b/paimon-common/src/main/java/org/apache/paimon/predicate/NotEqual.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.predicate;
+package org.apache.paimon.predicate;
 
 import org.apache.paimon.format.FieldStats;
 import org.apache.paimon.types.DataType;
@@ -24,7 +24,7 @@ import org.apache.paimon.types.DataType;
 import java.util.List;
 import java.util.Optional;
 
-import static org.apache.paimon.file.predicate.CompareUtils.compareLiteral;
+import static org.apache.paimon.predicate.CompareUtils.compareLiteral;
 
 /** A {@link NullFalseLeafBinaryFunction} to eval not equal. */
 public class NotEqual extends NullFalseLeafBinaryFunction {
diff --git a/paimon-common/src/main/java/org/apache/paimon/file/predicate/NotIn.java b/paimon-common/src/main/java/org/apache/paimon/predicate/NotIn.java
similarity index 95%
rename from paimon-common/src/main/java/org/apache/paimon/file/predicate/NotIn.java
rename to paimon-common/src/main/java/org/apache/paimon/predicate/NotIn.java
index 5783b58c7..0a0a014df 100644
--- a/paimon-common/src/main/java/org/apache/paimon/file/predicate/NotIn.java
+++ b/paimon-common/src/main/java/org/apache/paimon/predicate/NotIn.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.predicate;
+package org.apache.paimon.predicate;
 
 import org.apache.paimon.format.FieldStats;
 import org.apache.paimon.types.DataType;
@@ -24,7 +24,7 @@ import org.apache.paimon.types.DataType;
 import java.util.List;
 import java.util.Optional;
 
-import static org.apache.paimon.file.predicate.CompareUtils.compareLiteral;
+import static org.apache.paimon.predicate.CompareUtils.compareLiteral;
 
 /** A {@link LeafFunction} to eval not in. */
 public class NotIn extends LeafFunction {
diff --git a/paimon-common/src/main/java/org/apache/paimon/file/predicate/NullFalseLeafBinaryFunction.java b/paimon-common/src/main/java/org/apache/paimon/predicate/NullFalseLeafBinaryFunction.java
similarity index 97%
rename from paimon-common/src/main/java/org/apache/paimon/file/predicate/NullFalseLeafBinaryFunction.java
rename to paimon-common/src/main/java/org/apache/paimon/predicate/NullFalseLeafBinaryFunction.java
index a05d70b44..244ed3d72 100644
--- a/paimon-common/src/main/java/org/apache/paimon/file/predicate/NullFalseLeafBinaryFunction.java
+++ b/paimon-common/src/main/java/org/apache/paimon/predicate/NullFalseLeafBinaryFunction.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.predicate;
+package org.apache.paimon.predicate;
 
 import org.apache.paimon.format.FieldStats;
 import org.apache.paimon.types.DataType;
diff --git a/paimon-common/src/main/java/org/apache/paimon/file/predicate/Or.java b/paimon-common/src/main/java/org/apache/paimon/predicate/Or.java
similarity index 98%
rename from paimon-common/src/main/java/org/apache/paimon/file/predicate/Or.java
rename to paimon-common/src/main/java/org/apache/paimon/predicate/Or.java
index 5e61237c6..07603e740 100644
--- a/paimon-common/src/main/java/org/apache/paimon/file/predicate/Or.java
+++ b/paimon-common/src/main/java/org/apache/paimon/predicate/Or.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.predicate;
+package org.apache.paimon.predicate;
 
 import org.apache.paimon.format.FieldStats;
 
diff --git a/paimon-common/src/main/java/org/apache/paimon/file/predicate/Predicate.java b/paimon-common/src/main/java/org/apache/paimon/predicate/Predicate.java
similarity index 97%
rename from paimon-common/src/main/java/org/apache/paimon/file/predicate/Predicate.java
rename to paimon-common/src/main/java/org/apache/paimon/predicate/Predicate.java
index 4c396904d..91dc058d9 100644
--- a/paimon-common/src/main/java/org/apache/paimon/file/predicate/Predicate.java
+++ b/paimon-common/src/main/java/org/apache/paimon/predicate/Predicate.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.predicate;
+package org.apache.paimon.predicate;
 
 import org.apache.paimon.annotation.Experimental;
 import org.apache.paimon.format.FieldStats;
diff --git a/paimon-common/src/main/java/org/apache/paimon/file/predicate/PredicateBuilder.java b/paimon-common/src/main/java/org/apache/paimon/predicate/PredicateBuilder.java
similarity index 99%
rename from paimon-common/src/main/java/org/apache/paimon/file/predicate/PredicateBuilder.java
rename to paimon-common/src/main/java/org/apache/paimon/predicate/PredicateBuilder.java
index 920b7d812..8d5b7ffa5 100644
--- a/paimon-common/src/main/java/org/apache/paimon/file/predicate/PredicateBuilder.java
+++ b/paimon-common/src/main/java/org/apache/paimon/predicate/PredicateBuilder.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.predicate;
+package org.apache.paimon.predicate;
 
 import org.apache.paimon.annotation.Experimental;
 import org.apache.paimon.data.BinaryString;
diff --git a/paimon-common/src/main/java/org/apache/paimon/file/predicate/PredicateFilter.java b/paimon-common/src/main/java/org/apache/paimon/predicate/PredicateFilter.java
similarity index 97%
rename from paimon-common/src/main/java/org/apache/paimon/file/predicate/PredicateFilter.java
rename to paimon-common/src/main/java/org/apache/paimon/predicate/PredicateFilter.java
index 8e22f605f..900214c42 100644
--- a/paimon-common/src/main/java/org/apache/paimon/file/predicate/PredicateFilter.java
+++ b/paimon-common/src/main/java/org/apache/paimon/predicate/PredicateFilter.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.predicate;
+package org.apache.paimon.predicate;
 
 import org.apache.paimon.data.InternalRow;
 import org.apache.paimon.types.RowType;
diff --git a/paimon-common/src/main/java/org/apache/paimon/file/predicate/PredicateReplaceVisitor.java b/paimon-common/src/main/java/org/apache/paimon/predicate/PredicateReplaceVisitor.java
similarity index 97%
rename from paimon-common/src/main/java/org/apache/paimon/file/predicate/PredicateReplaceVisitor.java
rename to paimon-common/src/main/java/org/apache/paimon/predicate/PredicateReplaceVisitor.java
index 3058f9a05..f5bc0cf67 100644
--- a/paimon-common/src/main/java/org/apache/paimon/file/predicate/PredicateReplaceVisitor.java
+++ b/paimon-common/src/main/java/org/apache/paimon/predicate/PredicateReplaceVisitor.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.predicate;
+package org.apache.paimon.predicate;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/paimon-common/src/main/java/org/apache/paimon/file/predicate/PredicateVisitor.java b/paimon-common/src/main/java/org/apache/paimon/predicate/PredicateVisitor.java
similarity index 95%
rename from paimon-common/src/main/java/org/apache/paimon/file/predicate/PredicateVisitor.java
rename to paimon-common/src/main/java/org/apache/paimon/predicate/PredicateVisitor.java
index 7135363ff..c741c05d4 100644
--- a/paimon-common/src/main/java/org/apache/paimon/file/predicate/PredicateVisitor.java
+++ b/paimon-common/src/main/java/org/apache/paimon/predicate/PredicateVisitor.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.predicate;
+package org.apache.paimon.predicate;
 
 /** A visitor to visit {@link Predicate}. */
 public interface PredicateVisitor<T> {
diff --git a/paimon-common/src/main/java/org/apache/paimon/file/predicate/StartsWith.java b/paimon-common/src/main/java/org/apache/paimon/predicate/StartsWith.java
similarity index 98%
rename from paimon-common/src/main/java/org/apache/paimon/file/predicate/StartsWith.java
rename to paimon-common/src/main/java/org/apache/paimon/predicate/StartsWith.java
index 2d15d9305..acbdd6de1 100644
--- a/paimon-common/src/main/java/org/apache/paimon/file/predicate/StartsWith.java
+++ b/paimon-common/src/main/java/org/apache/paimon/predicate/StartsWith.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.predicate;
+package org.apache.paimon.predicate;
 
 import org.apache.paimon.data.BinaryString;
 import org.apache.paimon.format.FieldStats;
diff --git a/paimon-common/src/main/java/org/apache/paimon/utils/Filter.java b/paimon-common/src/main/java/org/apache/paimon/utils/Filter.java
index c70de3adc..39ff64ea6 100644
--- a/paimon-common/src/main/java/org/apache/paimon/utils/Filter.java
+++ b/paimon-common/src/main/java/org/apache/paimon/utils/Filter.java
@@ -18,7 +18,7 @@
 
 package org.apache.paimon.utils;
 
-import org.apache.paimon.file.predicate.Predicate;
+import org.apache.paimon.predicate.Predicate;
 
 /**
  * Represents a filter (boolean-valued function) of one argument. This class is for avoiding name
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/append/AppendOnlyCompactManager.java b/paimon-core/src/main/java/org/apache/paimon/append/AppendOnlyCompactManager.java
similarity index 97%
rename from paimon-core/src/main/java/org/apache/paimon/file/append/AppendOnlyCompactManager.java
rename to paimon-core/src/main/java/org/apache/paimon/append/AppendOnlyCompactManager.java
index 2ae045b28..a81dc6050 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/append/AppendOnlyCompactManager.java
+++ b/paimon-core/src/main/java/org/apache/paimon/append/AppendOnlyCompactManager.java
@@ -16,14 +16,14 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.append;
+package org.apache.paimon.append;
 
 import org.apache.paimon.annotation.VisibleForTesting;
-import org.apache.paimon.file.compact.CompactFutureManager;
-import org.apache.paimon.file.compact.CompactResult;
-import org.apache.paimon.file.compact.CompactTask;
-import org.apache.paimon.file.io.DataFileMeta;
-import org.apache.paimon.file.io.DataFilePathFactory;
+import org.apache.paimon.compact.CompactFutureManager;
+import org.apache.paimon.compact.CompactResult;
+import org.apache.paimon.compact.CompactTask;
+import org.apache.paimon.io.DataFileMeta;
+import org.apache.paimon.io.DataFilePathFactory;
 import org.apache.paimon.fs.FileIO;
 import org.apache.paimon.utils.Preconditions;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/append/AppendOnlyWriter.java b/paimon-core/src/main/java/org/apache/paimon/append/AppendOnlyWriter.java
similarity index 94%
rename from paimon-core/src/main/java/org/apache/paimon/file/append/AppendOnlyWriter.java
rename to paimon-core/src/main/java/org/apache/paimon/append/AppendOnlyWriter.java
index c39d73015..1c7b7c156 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/append/AppendOnlyWriter.java
+++ b/paimon-core/src/main/java/org/apache/paimon/append/AppendOnlyWriter.java
@@ -17,15 +17,15 @@
  * under the License.
  */
 
-package org.apache.paimon.file.append;
+package org.apache.paimon.append;
 
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.file.compact.CompactManager;
-import org.apache.paimon.file.io.CompactIncrement;
-import org.apache.paimon.file.io.DataFileMeta;
-import org.apache.paimon.file.io.DataFilePathFactory;
-import org.apache.paimon.file.io.NewFilesIncrement;
-import org.apache.paimon.file.io.RowDataRollingFileWriter;
+import org.apache.paimon.compact.CompactManager;
+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;
@@ -42,7 +42,7 @@ import java.util.Collections;
 import java.util.List;
 import java.util.concurrent.ExecutionException;
 
-import static org.apache.paimon.file.io.DataFileMeta.getMaxSequenceNumber;
+import static org.apache.paimon.io.DataFileMeta.getMaxSequenceNumber;
 
 /**
  * A {@link RecordWriter} implementation that only accepts records which are always insert
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/casting/CastExecutor.java b/paimon-core/src/main/java/org/apache/paimon/casting/CastExecutor.java
similarity index 96%
rename from paimon-core/src/main/java/org/apache/paimon/file/casting/CastExecutor.java
rename to paimon-core/src/main/java/org/apache/paimon/casting/CastExecutor.java
index bfc2aeb0a..32e35bac5 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/casting/CastExecutor.java
+++ b/paimon-core/src/main/java/org/apache/paimon/casting/CastExecutor.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.casting;
+package org.apache.paimon.casting;
 
 /**
  * Interface to model a function that performs the casting of a value from one type to another.
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/casting/CastExecutors.java b/paimon-core/src/main/java/org/apache/paimon/casting/CastExecutors.java
similarity index 99%
rename from paimon-core/src/main/java/org/apache/paimon/file/casting/CastExecutors.java
rename to paimon-core/src/main/java/org/apache/paimon/casting/CastExecutors.java
index a98a5e932..22915adcc 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/casting/CastExecutors.java
+++ b/paimon-core/src/main/java/org/apache/paimon/casting/CastExecutors.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.casting;
+package org.apache.paimon.casting;
 
 import org.apache.paimon.data.BinaryString;
 import org.apache.paimon.data.Decimal;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/casting/CastFieldGetter.java b/paimon-core/src/main/java/org/apache/paimon/casting/CastFieldGetter.java
similarity index 97%
rename from paimon-core/src/main/java/org/apache/paimon/file/casting/CastFieldGetter.java
rename to paimon-core/src/main/java/org/apache/paimon/casting/CastFieldGetter.java
index 3c7d197fb..02168300a 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/casting/CastFieldGetter.java
+++ b/paimon-core/src/main/java/org/apache/paimon/casting/CastFieldGetter.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.casting;
+package org.apache.paimon.casting;
 
 import org.apache.paimon.data.InternalRow;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/casting/CastedRow.java b/paimon-core/src/main/java/org/apache/paimon/casting/CastedRow.java
similarity index 99%
rename from paimon-core/src/main/java/org/apache/paimon/file/casting/CastedRow.java
rename to paimon-core/src/main/java/org/apache/paimon/casting/CastedRow.java
index 5b3f944c4..25c574425 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/casting/CastedRow.java
+++ b/paimon-core/src/main/java/org/apache/paimon/casting/CastedRow.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.casting;
+package org.apache.paimon.casting;
 
 import org.apache.paimon.data.BinaryString;
 import org.apache.paimon.data.Decimal;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/catalog/AbstractCatalog.java b/paimon-core/src/main/java/org/apache/paimon/catalog/AbstractCatalog.java
similarity index 97%
rename from paimon-core/src/main/java/org/apache/paimon/file/catalog/AbstractCatalog.java
rename to paimon-core/src/main/java/org/apache/paimon/catalog/AbstractCatalog.java
index 87e647d37..42095c604 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/catalog/AbstractCatalog.java
+++ b/paimon-core/src/main/java/org/apache/paimon/catalog/AbstractCatalog.java
@@ -16,10 +16,10 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.catalog;
+package org.apache.paimon.catalog;
 
 import org.apache.paimon.annotation.VisibleForTesting;
-import org.apache.paimon.file.schema.TableSchema;
+import org.apache.paimon.schema.TableSchema;
 import org.apache.paimon.fs.FileIO;
 import org.apache.paimon.fs.Path;
 import org.apache.paimon.table.FileStoreTable;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/catalog/Catalog.java b/paimon-core/src/main/java/org/apache/paimon/catalog/Catalog.java
similarity index 98%
rename from paimon-core/src/main/java/org/apache/paimon/file/catalog/Catalog.java
rename to paimon-core/src/main/java/org/apache/paimon/catalog/Catalog.java
index 109add99e..29d561df0 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/catalog/Catalog.java
+++ b/paimon-core/src/main/java/org/apache/paimon/catalog/Catalog.java
@@ -16,11 +16,11 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.catalog;
+package org.apache.paimon.catalog;
 
 import org.apache.paimon.annotation.Experimental;
-import org.apache.paimon.file.schema.Schema;
-import org.apache.paimon.file.schema.SchemaChange;
+import org.apache.paimon.schema.Schema;
+import org.apache.paimon.schema.SchemaChange;
 import org.apache.paimon.table.Table;
 
 import java.util.List;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/catalog/CatalogFactory.java b/paimon-core/src/main/java/org/apache/paimon/catalog/CatalogFactory.java
similarity index 99%
rename from paimon-core/src/main/java/org/apache/paimon/file/catalog/CatalogFactory.java
rename to paimon-core/src/main/java/org/apache/paimon/catalog/CatalogFactory.java
index 480ffe59e..611da3e18 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/catalog/CatalogFactory.java
+++ b/paimon-core/src/main/java/org/apache/paimon/catalog/CatalogFactory.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.catalog;
+package org.apache.paimon.catalog;
 
 import org.apache.flink.table.store.catalog.CatalogContext;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/catalog/CatalogLock.java b/paimon-core/src/main/java/org/apache/paimon/catalog/CatalogLock.java
similarity index 97%
rename from paimon-core/src/main/java/org/apache/paimon/file/catalog/CatalogLock.java
rename to paimon-core/src/main/java/org/apache/paimon/catalog/CatalogLock.java
index bed5ff5a7..89555bf9a 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/catalog/CatalogLock.java
+++ b/paimon-core/src/main/java/org/apache/paimon/catalog/CatalogLock.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.catalog;
+package org.apache.paimon.catalog;
 
 import org.apache.paimon.annotation.Experimental;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/catalog/CatalogUtils.java b/paimon-core/src/main/java/org/apache/paimon/catalog/CatalogUtils.java
similarity index 97%
rename from paimon-core/src/main/java/org/apache/paimon/file/catalog/CatalogUtils.java
rename to paimon-core/src/main/java/org/apache/paimon/catalog/CatalogUtils.java
index f40fda356..0f2f37270 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/catalog/CatalogUtils.java
+++ b/paimon-core/src/main/java/org/apache/paimon/catalog/CatalogUtils.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.catalog;
+package org.apache.paimon.catalog;
 
 import org.apache.paimon.fs.Path;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/catalog/FileSystemCatalog.java b/paimon-core/src/main/java/org/apache/paimon/catalog/FileSystemCatalog.java
similarity index 96%
rename from paimon-core/src/main/java/org/apache/paimon/file/catalog/FileSystemCatalog.java
rename to paimon-core/src/main/java/org/apache/paimon/catalog/FileSystemCatalog.java
index 198e58df4..0808a9ac7 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/catalog/FileSystemCatalog.java
+++ b/paimon-core/src/main/java/org/apache/paimon/catalog/FileSystemCatalog.java
@@ -16,12 +16,12 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.catalog;
+package org.apache.paimon.catalog;
 
-import org.apache.paimon.file.schema.Schema;
-import org.apache.paimon.file.schema.SchemaChange;
-import org.apache.paimon.file.schema.SchemaManager;
-import org.apache.paimon.file.schema.TableSchema;
+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;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/catalog/FileSystemCatalogFactory.java b/paimon-core/src/main/java/org/apache/paimon/catalog/FileSystemCatalogFactory.java
similarity index 97%
rename from paimon-core/src/main/java/org/apache/paimon/file/catalog/FileSystemCatalogFactory.java
rename to paimon-core/src/main/java/org/apache/paimon/catalog/FileSystemCatalogFactory.java
index 23cd76fff..84afbaa53 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/catalog/FileSystemCatalogFactory.java
+++ b/paimon-core/src/main/java/org/apache/paimon/catalog/FileSystemCatalogFactory.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.catalog;
+package org.apache.paimon.catalog;
 
 import org.apache.flink.table.store.catalog.CatalogContext;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/catalog/Identifier.java b/paimon-core/src/main/java/org/apache/paimon/catalog/Identifier.java
similarity index 97%
rename from paimon-core/src/main/java/org/apache/paimon/file/catalog/Identifier.java
rename to paimon-core/src/main/java/org/apache/paimon/catalog/Identifier.java
index 059fc678f..a1240fb2d 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/catalog/Identifier.java
+++ b/paimon-core/src/main/java/org/apache/paimon/catalog/Identifier.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.catalog;
+package org.apache.paimon.catalog;
 
 import org.apache.paimon.annotation.Experimental;
 import org.apache.paimon.fs.Path;
@@ -25,7 +25,7 @@ import org.apache.paimon.utils.StringUtils;
 import java.io.Serializable;
 import java.util.Objects;
 
-import static org.apache.paimon.file.catalog.AbstractCatalog.DB_SUFFIX;
+import static org.apache.paimon.catalog.AbstractCatalog.DB_SUFFIX;
 import static org.apache.paimon.utils.Preconditions.checkArgument;
 
 /**
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/compact/CompactFutureManager.java b/paimon-core/src/main/java/org/apache/paimon/compact/CompactFutureManager.java
similarity index 98%
rename from paimon-core/src/main/java/org/apache/paimon/file/compact/CompactFutureManager.java
rename to paimon-core/src/main/java/org/apache/paimon/compact/CompactFutureManager.java
index efb7710f3..d86c2a534 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/compact/CompactFutureManager.java
+++ b/paimon-core/src/main/java/org/apache/paimon/compact/CompactFutureManager.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.compact;
+package org.apache.paimon.compact;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/compact/CompactManager.java b/paimon-core/src/main/java/org/apache/paimon/compact/CompactManager.java
similarity index 95%
rename from paimon-core/src/main/java/org/apache/paimon/file/compact/CompactManager.java
rename to paimon-core/src/main/java/org/apache/paimon/compact/CompactManager.java
index 175d827e4..163b453a5 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/compact/CompactManager.java
+++ b/paimon-core/src/main/java/org/apache/paimon/compact/CompactManager.java
@@ -16,9 +16,9 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.compact;
+package org.apache.paimon.compact;
 
-import org.apache.paimon.file.io.DataFileMeta;
+import org.apache.paimon.io.DataFileMeta;
 
 import java.io.Closeable;
 import java.util.List;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/compact/CompactResult.java b/paimon-core/src/main/java/org/apache/paimon/compact/CompactResult.java
similarity index 96%
rename from paimon-core/src/main/java/org/apache/paimon/file/compact/CompactResult.java
rename to paimon-core/src/main/java/org/apache/paimon/compact/CompactResult.java
index c71ce3ff6..6a004d305 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/compact/CompactResult.java
+++ b/paimon-core/src/main/java/org/apache/paimon/compact/CompactResult.java
@@ -16,9 +16,9 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.compact;
+package org.apache.paimon.compact;
 
-import org.apache.paimon.file.io.DataFileMeta;
+import org.apache.paimon.io.DataFileMeta;
 
 import java.util.ArrayList;
 import java.util.Collections;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/compact/CompactTask.java b/paimon-core/src/main/java/org/apache/paimon/compact/CompactTask.java
similarity index 96%
rename from paimon-core/src/main/java/org/apache/paimon/file/compact/CompactTask.java
rename to paimon-core/src/main/java/org/apache/paimon/compact/CompactTask.java
index 809632547..e7e0b1bb0 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/compact/CompactTask.java
+++ b/paimon-core/src/main/java/org/apache/paimon/compact/CompactTask.java
@@ -16,9 +16,9 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.compact;
+package org.apache.paimon.compact;
 
-import org.apache.paimon.file.io.DataFileMeta;
+import org.apache.paimon.io.DataFileMeta;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/compact/CompactUnit.java b/paimon-core/src/main/java/org/apache/paimon/compact/CompactUnit.java
similarity index 91%
rename from paimon-core/src/main/java/org/apache/paimon/file/compact/CompactUnit.java
rename to paimon-core/src/main/java/org/apache/paimon/compact/CompactUnit.java
index f4d8b2aeb..9b0fdd26a 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/compact/CompactUnit.java
+++ b/paimon-core/src/main/java/org/apache/paimon/compact/CompactUnit.java
@@ -16,10 +16,10 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.compact;
+package org.apache.paimon.compact;
 
-import org.apache.paimon.file.io.DataFileMeta;
-import org.apache.paimon.file.mergetree.LevelSortedRun;
+import org.apache.paimon.io.DataFileMeta;
+import org.apache.paimon.mergetree.LevelSortedRun;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/compact/NoopCompactManager.java b/paimon-core/src/main/java/org/apache/paimon/compact/NoopCompactManager.java
similarity index 96%
rename from paimon-core/src/main/java/org/apache/paimon/file/compact/NoopCompactManager.java
rename to paimon-core/src/main/java/org/apache/paimon/compact/NoopCompactManager.java
index dae33fe10..db3ae9595 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/compact/NoopCompactManager.java
+++ b/paimon-core/src/main/java/org/apache/paimon/compact/NoopCompactManager.java
@@ -16,10 +16,10 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.compact;
+package org.apache.paimon.compact;
 
 import org.apache.paimon.CoreOptions;
-import org.apache.paimon.file.io.DataFileMeta;
+import org.apache.paimon.io.DataFileMeta;
 import org.apache.paimon.utils.Preconditions;
 
 import java.io.IOException;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/compression/BlockCompressionFactory.java b/paimon-core/src/main/java/org/apache/paimon/compression/BlockCompressionFactory.java
similarity index 96%
rename from paimon-core/src/main/java/org/apache/paimon/file/compression/BlockCompressionFactory.java
rename to paimon-core/src/main/java/org/apache/paimon/compression/BlockCompressionFactory.java
index 276219733..1c9df6155 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/compression/BlockCompressionFactory.java
+++ b/paimon-core/src/main/java/org/apache/paimon/compression/BlockCompressionFactory.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.compression;
+package org.apache.paimon.compression;
 
 /**
  * Each compression codec has an implementation of {@link BlockCompressionFactory} to create
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/compression/BlockCompressor.java b/paimon-core/src/main/java/org/apache/paimon/compression/BlockCompressor.java
similarity index 97%
rename from paimon-core/src/main/java/org/apache/paimon/file/compression/BlockCompressor.java
rename to paimon-core/src/main/java/org/apache/paimon/compression/BlockCompressor.java
index 1ccc2b002..f8f1d317b 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/compression/BlockCompressor.java
+++ b/paimon-core/src/main/java/org/apache/paimon/compression/BlockCompressor.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.compression;
+package org.apache.paimon.compression;
 
 /**
  * A compressor which compresses a whole byte array each time. It will read from and write to byte
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/compression/BlockDecompressor.java b/paimon-core/src/main/java/org/apache/paimon/compression/BlockDecompressor.java
similarity index 97%
rename from paimon-core/src/main/java/org/apache/paimon/file/compression/BlockDecompressor.java
rename to paimon-core/src/main/java/org/apache/paimon/compression/BlockDecompressor.java
index 172720571..8fc68a062 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/compression/BlockDecompressor.java
+++ b/paimon-core/src/main/java/org/apache/paimon/compression/BlockDecompressor.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.compression;
+package org.apache.paimon.compression;
 
 /** A decompressor which decompresses a block each time. */
 public interface BlockDecompressor {
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/compression/BufferCompressionException.java b/paimon-core/src/main/java/org/apache/paimon/compression/BufferCompressionException.java
similarity index 96%
rename from paimon-core/src/main/java/org/apache/paimon/file/compression/BufferCompressionException.java
rename to paimon-core/src/main/java/org/apache/paimon/compression/BufferCompressionException.java
index bac3d9283..60520e06c 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/compression/BufferCompressionException.java
+++ b/paimon-core/src/main/java/org/apache/paimon/compression/BufferCompressionException.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.compression;
+package org.apache.paimon.compression;
 
 /**
  * A {@code BufferCompressionException} is thrown when the target data cannot be compressed, such as
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/compression/BufferDecompressionException.java b/paimon-core/src/main/java/org/apache/paimon/compression/BufferDecompressionException.java
similarity index 96%
rename from paimon-core/src/main/java/org/apache/paimon/file/compression/BufferDecompressionException.java
rename to paimon-core/src/main/java/org/apache/paimon/compression/BufferDecompressionException.java
index 43a17e289..80f3082bc 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/compression/BufferDecompressionException.java
+++ b/paimon-core/src/main/java/org/apache/paimon/compression/BufferDecompressionException.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.compression;
+package org.apache.paimon.compression;
 
 /**
  * A {@code BufferDecompressionException} is thrown when the target data cannot be decompressed,
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/compression/CompressorUtils.java b/paimon-core/src/main/java/org/apache/paimon/compression/CompressorUtils.java
similarity index 97%
rename from paimon-core/src/main/java/org/apache/paimon/file/compression/CompressorUtils.java
rename to paimon-core/src/main/java/org/apache/paimon/compression/CompressorUtils.java
index e780869bf..df284c327 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/compression/CompressorUtils.java
+++ b/paimon-core/src/main/java/org/apache/paimon/compression/CompressorUtils.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.compression;
+package org.apache.paimon.compression;
 
 /** Utils for {@link BlockCompressor}. */
 public class CompressorUtils {
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/compression/Lz4BlockCompressionFactory.java b/paimon-core/src/main/java/org/apache/paimon/compression/Lz4BlockCompressionFactory.java
similarity index 96%
rename from paimon-core/src/main/java/org/apache/paimon/file/compression/Lz4BlockCompressionFactory.java
rename to paimon-core/src/main/java/org/apache/paimon/compression/Lz4BlockCompressionFactory.java
index 616b72a39..91be9e916 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/compression/Lz4BlockCompressionFactory.java
+++ b/paimon-core/src/main/java/org/apache/paimon/compression/Lz4BlockCompressionFactory.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.compression;
+package org.apache.paimon.compression;
 
 /** Implementation of {@link BlockCompressionFactory} for Lz4 codec. */
 public class Lz4BlockCompressionFactory implements BlockCompressionFactory {
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/compression/Lz4BlockCompressor.java b/paimon-core/src/main/java/org/apache/paimon/compression/Lz4BlockCompressor.java
similarity index 91%
rename from paimon-core/src/main/java/org/apache/paimon/file/compression/Lz4BlockCompressor.java
rename to paimon-core/src/main/java/org/apache/paimon/compression/Lz4BlockCompressor.java
index 3534b5a1c..434f6242e 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/compression/Lz4BlockCompressor.java
+++ b/paimon-core/src/main/java/org/apache/paimon/compression/Lz4BlockCompressor.java
@@ -16,13 +16,13 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.compression;
+package org.apache.paimon.compression;
 
 import net.jpountz.lz4.LZ4Compressor;
 import net.jpountz.lz4.LZ4Factory;
 
-import static org.apache.paimon.file.compression.CompressorUtils.HEADER_LENGTH;
-import static org.apache.paimon.file.compression.CompressorUtils.writeIntLE;
+import static org.apache.paimon.compression.CompressorUtils.HEADER_LENGTH;
+import static org.apache.paimon.compression.CompressorUtils.writeIntLE;
 
 /**
  * Encode data into LZ4 format (not compatible with the LZ4 Frame format). It reads from and writes
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/compression/Lz4BlockDecompressor.java b/paimon-core/src/main/java/org/apache/paimon/compression/Lz4BlockDecompressor.java
similarity index 90%
rename from paimon-core/src/main/java/org/apache/paimon/file/compression/Lz4BlockDecompressor.java
rename to paimon-core/src/main/java/org/apache/paimon/compression/Lz4BlockDecompressor.java
index 1d89f3bba..d707276e2 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/compression/Lz4BlockDecompressor.java
+++ b/paimon-core/src/main/java/org/apache/paimon/compression/Lz4BlockDecompressor.java
@@ -16,15 +16,15 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.compression;
+package org.apache.paimon.compression;
 
 import net.jpountz.lz4.LZ4Exception;
 import net.jpountz.lz4.LZ4Factory;
 import net.jpountz.lz4.LZ4FastDecompressor;
 
-import static org.apache.paimon.file.compression.CompressorUtils.HEADER_LENGTH;
-import static org.apache.paimon.file.compression.CompressorUtils.readIntLE;
-import static org.apache.paimon.file.compression.CompressorUtils.validateLength;
+import static org.apache.paimon.compression.CompressorUtils.HEADER_LENGTH;
+import static org.apache.paimon.compression.CompressorUtils.readIntLE;
+import static org.apache.paimon.compression.CompressorUtils.validateLength;
 
 /**
  * Decode data written with {@link Lz4BlockCompressor}. It reads from and writes to byte arrays
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/disk/AbstractFileIOChannel.java b/paimon-core/src/main/java/org/apache/paimon/disk/AbstractFileIOChannel.java
similarity index 99%
rename from paimon-core/src/main/java/org/apache/paimon/file/disk/AbstractFileIOChannel.java
rename to paimon-core/src/main/java/org/apache/paimon/disk/AbstractFileIOChannel.java
index 2ccf522d0..7f868c332 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/disk/AbstractFileIOChannel.java
+++ b/paimon-core/src/main/java/org/apache/paimon/disk/AbstractFileIOChannel.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.disk;
+package org.apache.paimon.disk;
 
 import org.apache.paimon.utils.Preconditions;
 import org.slf4j.Logger;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/disk/BufferFileChannelReader.java b/paimon-core/src/main/java/org/apache/paimon/disk/BufferFileChannelReader.java
similarity index 96%
rename from paimon-core/src/main/java/org/apache/paimon/file/disk/BufferFileChannelReader.java
rename to paimon-core/src/main/java/org/apache/paimon/disk/BufferFileChannelReader.java
index cc63babbe..6762edeb4 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/disk/BufferFileChannelReader.java
+++ b/paimon-core/src/main/java/org/apache/paimon/disk/BufferFileChannelReader.java
@@ -16,9 +16,9 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.disk;
+package org.apache.paimon.disk;
 
-import org.apache.paimon.file.memory.Buffer;
+import org.apache.paimon.memory.Buffer;
 
 import java.io.IOException;
 import java.nio.ByteBuffer;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/disk/BufferFileReader.java b/paimon-core/src/main/java/org/apache/paimon/disk/BufferFileReader.java
similarity index 93%
rename from paimon-core/src/main/java/org/apache/paimon/file/disk/BufferFileReader.java
rename to paimon-core/src/main/java/org/apache/paimon/disk/BufferFileReader.java
index 54b6e23c0..b44c40fe6 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/disk/BufferFileReader.java
+++ b/paimon-core/src/main/java/org/apache/paimon/disk/BufferFileReader.java
@@ -16,10 +16,10 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.disk;
+package org.apache.paimon.disk;
 
 import org.apache.paimon.annotation.Experimental;
-import org.apache.paimon.file.memory.Buffer;
+import org.apache.paimon.memory.Buffer;
 
 import java.io.IOException;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/disk/BufferFileReaderImpl.java b/paimon-core/src/main/java/org/apache/paimon/disk/BufferFileReaderImpl.java
similarity index 94%
rename from paimon-core/src/main/java/org/apache/paimon/file/disk/BufferFileReaderImpl.java
rename to paimon-core/src/main/java/org/apache/paimon/disk/BufferFileReaderImpl.java
index 893a73def..0e7db1b4f 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/disk/BufferFileReaderImpl.java
+++ b/paimon-core/src/main/java/org/apache/paimon/disk/BufferFileReaderImpl.java
@@ -16,9 +16,9 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.disk;
+package org.apache.paimon.disk;
 
-import org.apache.paimon.file.memory.Buffer;
+import org.apache.paimon.memory.Buffer;
 
 import java.io.IOException;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/disk/BufferFileWriter.java b/paimon-core/src/main/java/org/apache/paimon/disk/BufferFileWriter.java
similarity index 94%
rename from paimon-core/src/main/java/org/apache/paimon/file/disk/BufferFileWriter.java
rename to paimon-core/src/main/java/org/apache/paimon/disk/BufferFileWriter.java
index fe79a8fed..0f32189cb 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/disk/BufferFileWriter.java
+++ b/paimon-core/src/main/java/org/apache/paimon/disk/BufferFileWriter.java
@@ -16,10 +16,10 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.disk;
+package org.apache.paimon.disk;
 
 import org.apache.paimon.annotation.Experimental;
-import org.apache.paimon.file.memory.Buffer;
+import org.apache.paimon.memory.Buffer;
 import org.apache.paimon.memory.MemorySegment;
 
 import java.io.IOException;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/disk/BufferFileWriterImpl.java b/paimon-core/src/main/java/org/apache/paimon/disk/BufferFileWriterImpl.java
similarity index 95%
rename from paimon-core/src/main/java/org/apache/paimon/file/disk/BufferFileWriterImpl.java
rename to paimon-core/src/main/java/org/apache/paimon/disk/BufferFileWriterImpl.java
index 6d2cbe145..6849416a0 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/disk/BufferFileWriterImpl.java
+++ b/paimon-core/src/main/java/org/apache/paimon/disk/BufferFileWriterImpl.java
@@ -16,9 +16,9 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.disk;
+package org.apache.paimon.disk;
 
-import org.apache.paimon.file.memory.Buffer;
+import org.apache.paimon.memory.Buffer;
 import org.apache.paimon.utils.FileIOUtils;
 
 import java.io.IOException;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/disk/ChannelReaderInputView.java b/paimon-core/src/main/java/org/apache/paimon/disk/ChannelReaderInputView.java
similarity index 94%
rename from paimon-core/src/main/java/org/apache/paimon/file/disk/ChannelReaderInputView.java
rename to paimon-core/src/main/java/org/apache/paimon/disk/ChannelReaderInputView.java
index b545b8ab1..bc99ab6cb 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/disk/ChannelReaderInputView.java
+++ b/paimon-core/src/main/java/org/apache/paimon/disk/ChannelReaderInputView.java
@@ -16,12 +16,12 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.disk;
+package org.apache.paimon.disk;
 
 import org.apache.paimon.data.AbstractPagedInputView;
-import org.apache.paimon.file.compression.BlockCompressionFactory;
-import org.apache.paimon.file.compression.BlockDecompressor;
-import org.apache.paimon.file.memory.Buffer;
+import org.apache.paimon.compression.BlockCompressionFactory;
+import org.apache.paimon.compression.BlockDecompressor;
+import org.apache.paimon.memory.Buffer;
 import org.apache.paimon.memory.MemorySegment;
 
 import java.io.EOFException;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/disk/ChannelReaderInputViewIterator.java b/paimon-core/src/main/java/org/apache/paimon/disk/ChannelReaderInputViewIterator.java
similarity index 98%
rename from paimon-core/src/main/java/org/apache/paimon/file/disk/ChannelReaderInputViewIterator.java
rename to paimon-core/src/main/java/org/apache/paimon/disk/ChannelReaderInputViewIterator.java
index 47e012e4c..d86909df5 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/disk/ChannelReaderInputViewIterator.java
+++ b/paimon-core/src/main/java/org/apache/paimon/disk/ChannelReaderInputViewIterator.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.disk;
+package org.apache.paimon.disk;
 
 import org.apache.paimon.data.BinaryRow;
 import org.apache.paimon.data.serializer.BinaryRowSerializer;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/disk/ChannelWithMeta.java b/paimon-core/src/main/java/org/apache/paimon/disk/ChannelWithMeta.java
similarity index 97%
rename from paimon-core/src/main/java/org/apache/paimon/file/disk/ChannelWithMeta.java
rename to paimon-core/src/main/java/org/apache/paimon/disk/ChannelWithMeta.java
index e9cbf6c27..f728ad1dd 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/disk/ChannelWithMeta.java
+++ b/paimon-core/src/main/java/org/apache/paimon/disk/ChannelWithMeta.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.disk;
+package org.apache.paimon.disk;
 
 /** Channel with block count and numBytesInLastBlock of file. */
 public class ChannelWithMeta {
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/disk/ChannelWriterOutputView.java b/paimon-core/src/main/java/org/apache/paimon/disk/ChannelWriterOutputView.java
similarity index 93%
rename from paimon-core/src/main/java/org/apache/paimon/file/disk/ChannelWriterOutputView.java
rename to paimon-core/src/main/java/org/apache/paimon/disk/ChannelWriterOutputView.java
index d85efa25b..7883b1d2a 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/disk/ChannelWriterOutputView.java
+++ b/paimon-core/src/main/java/org/apache/paimon/disk/ChannelWriterOutputView.java
@@ -16,12 +16,12 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.disk;
+package org.apache.paimon.disk;
 
 import org.apache.paimon.data.AbstractPagedOutputView;
-import org.apache.paimon.file.compression.BlockCompressionFactory;
-import org.apache.paimon.file.compression.BlockCompressor;
-import org.apache.paimon.file.memory.Buffer;
+import org.apache.paimon.compression.BlockCompressionFactory;
+import org.apache.paimon.compression.BlockCompressor;
+import org.apache.paimon.memory.Buffer;
 import org.apache.paimon.memory.MemorySegment;
 
 import java.io.IOException;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/disk/FileChannelManager.java b/paimon-core/src/main/java/org/apache/paimon/disk/FileChannelManager.java
similarity index 97%
rename from paimon-core/src/main/java/org/apache/paimon/file/disk/FileChannelManager.java
rename to paimon-core/src/main/java/org/apache/paimon/disk/FileChannelManager.java
index 7b7965f6c..1c6a709cf 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/disk/FileChannelManager.java
+++ b/paimon-core/src/main/java/org/apache/paimon/disk/FileChannelManager.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.disk;
+package org.apache.paimon.disk;
 
 import java.io.File;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/disk/FileChannelManagerImpl.java b/paimon-core/src/main/java/org/apache/paimon/disk/FileChannelManagerImpl.java
similarity index 96%
rename from paimon-core/src/main/java/org/apache/paimon/file/disk/FileChannelManagerImpl.java
rename to paimon-core/src/main/java/org/apache/paimon/disk/FileChannelManagerImpl.java
index b50c94ee7..b6e1a1b6e 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/disk/FileChannelManagerImpl.java
+++ b/paimon-core/src/main/java/org/apache/paimon/disk/FileChannelManagerImpl.java
@@ -16,10 +16,10 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.disk;
+package org.apache.paimon.disk;
 
-import org.apache.paimon.file.disk.FileIOChannel.Enumerator;
-import org.apache.paimon.file.disk.FileIOChannel.ID;
+import org.apache.paimon.disk.FileIOChannel.Enumerator;
+import org.apache.paimon.disk.FileIOChannel.ID;
 import org.apache.paimon.utils.FileIOUtils;
 import org.apache.paimon.utils.IOUtils;
 import org.slf4j.Logger;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/disk/FileChannelUtil.java b/paimon-core/src/main/java/org/apache/paimon/disk/FileChannelUtil.java
similarity index 95%
rename from paimon-core/src/main/java/org/apache/paimon/file/disk/FileChannelUtil.java
rename to paimon-core/src/main/java/org/apache/paimon/disk/FileChannelUtil.java
index c14d58016..1dbfcdb9c 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/disk/FileChannelUtil.java
+++ b/paimon-core/src/main/java/org/apache/paimon/disk/FileChannelUtil.java
@@ -16,9 +16,9 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.disk;
+package org.apache.paimon.disk;
 
-import org.apache.paimon.file.compression.BlockCompressionFactory;
+import org.apache.paimon.compression.BlockCompressionFactory;
 
 import java.io.IOException;
 import java.util.List;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/disk/FileIOChannel.java b/paimon-core/src/main/java/org/apache/paimon/disk/FileIOChannel.java
similarity index 99%
rename from paimon-core/src/main/java/org/apache/paimon/file/disk/FileIOChannel.java
rename to paimon-core/src/main/java/org/apache/paimon/disk/FileIOChannel.java
index 492d1535e..c9fe2fdf7 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/disk/FileIOChannel.java
+++ b/paimon-core/src/main/java/org/apache/paimon/disk/FileIOChannel.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.disk;
+package org.apache.paimon.disk;
 
 import org.apache.paimon.annotation.Experimental;
 import org.apache.paimon.utils.StringUtils;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/disk/IOManager.java b/paimon-core/src/main/java/org/apache/paimon/disk/IOManager.java
similarity index 90%
rename from paimon-core/src/main/java/org/apache/paimon/file/disk/IOManager.java
rename to paimon-core/src/main/java/org/apache/paimon/disk/IOManager.java
index 19ee72d50..8e71c3706 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/disk/IOManager.java
+++ b/paimon-core/src/main/java/org/apache/paimon/disk/IOManager.java
@@ -16,11 +16,11 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.disk;
+package org.apache.paimon.disk;
 
 import org.apache.paimon.annotation.Experimental;
-import org.apache.paimon.file.disk.FileIOChannel.Enumerator;
-import org.apache.paimon.file.disk.FileIOChannel.ID;
+import org.apache.paimon.disk.FileIOChannel.Enumerator;
+import org.apache.paimon.disk.FileIOChannel.ID;
 
 import java.io.IOException;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/disk/IOManagerImpl.java b/paimon-core/src/main/java/org/apache/paimon/disk/IOManagerImpl.java
similarity index 96%
rename from paimon-core/src/main/java/org/apache/paimon/file/disk/IOManagerImpl.java
rename to paimon-core/src/main/java/org/apache/paimon/disk/IOManagerImpl.java
index ca366b9a8..68f9f5eff 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/disk/IOManagerImpl.java
+++ b/paimon-core/src/main/java/org/apache/paimon/disk/IOManagerImpl.java
@@ -16,10 +16,10 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.disk;
+package org.apache.paimon.disk;
 
-import org.apache.paimon.file.disk.FileIOChannel.Enumerator;
-import org.apache.paimon.file.disk.FileIOChannel.ID;
+import org.apache.paimon.disk.FileIOChannel.Enumerator;
+import org.apache.paimon.disk.FileIOChannel.ID;
 import org.apache.paimon.utils.Preconditions;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/AbstractFileStore.java b/paimon-core/src/main/java/org/apache/paimon/file/AbstractFileStore.java
index d0b0b6a8a..aab0b6526 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/AbstractFileStore.java
+++ b/paimon-core/src/main/java/org/apache/paimon/file/AbstractFileStore.java
@@ -21,12 +21,12 @@ package org.apache.paimon.file;
 import org.apache.paimon.CoreOptions;
 import org.apache.paimon.annotation.VisibleForTesting;
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.file.manifest.ManifestFile;
-import org.apache.paimon.file.manifest.ManifestList;
-import org.apache.paimon.file.operation.FileStoreCommitImpl;
-import org.apache.paimon.file.operation.FileStoreExpireImpl;
-import org.apache.paimon.file.operation.PartitionExpire;
-import org.apache.paimon.file.schema.SchemaManager;
+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;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/AppendOnlyFileStore.java b/paimon-core/src/main/java/org/apache/paimon/file/AppendOnlyFileStore.java
index 05ef96e11..d446dfc29 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/AppendOnlyFileStore.java
+++ b/paimon-core/src/main/java/org/apache/paimon/file/AppendOnlyFileStore.java
@@ -20,10 +20,10 @@ package org.apache.paimon.file;
 
 import org.apache.paimon.CoreOptions;
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.file.operation.AppendOnlyFileStoreRead;
-import org.apache.paimon.file.operation.AppendOnlyFileStoreScan;
-import org.apache.paimon.file.operation.AppendOnlyFileStoreWrite;
-import org.apache.paimon.file.schema.SchemaManager;
+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;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/FileStore.java b/paimon-core/src/main/java/org/apache/paimon/file/FileStore.java
index ff7d5ac91..18a26c861 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/FileStore.java
+++ b/paimon-core/src/main/java/org/apache/paimon/file/FileStore.java
@@ -19,12 +19,12 @@
 package org.apache.paimon.file;
 
 import org.apache.paimon.CoreOptions;
-import org.apache.paimon.file.operation.FileStoreCommit;
-import org.apache.paimon.file.operation.FileStoreExpire;
-import org.apache.paimon.file.operation.FileStoreRead;
-import org.apache.paimon.file.operation.FileStoreScan;
-import org.apache.paimon.file.operation.FileStoreWrite;
-import org.apache.paimon.file.operation.PartitionExpire;
+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;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/KeyValue.java b/paimon-core/src/main/java/org/apache/paimon/file/KeyValue.java
index 42a5350f3..3d6f16254 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/KeyValue.java
+++ b/paimon-core/src/main/java/org/apache/paimon/file/KeyValue.java
@@ -33,8 +33,8 @@ import java.util.List;
 import java.util.stream.Collectors;
 import java.util.stream.IntStream;
 
-import static org.apache.paimon.file.schema.SystemColumns.SEQUENCE_NUMBER;
-import static org.apache.paimon.file.schema.SystemColumns.VALUE_KIND;
+import static org.apache.paimon.schema.SystemColumns.SEQUENCE_NUMBER;
+import static org.apache.paimon.schema.SystemColumns.VALUE_KIND;
 import static org.apache.paimon.utils.Preconditions.checkState;
 
 /**
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/KeyValueFileStore.java b/paimon-core/src/main/java/org/apache/paimon/file/KeyValueFileStore.java
index e3d92dc88..f0c0f68c8 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/KeyValueFileStore.java
+++ b/paimon-core/src/main/java/org/apache/paimon/file/KeyValueFileStore.java
@@ -20,12 +20,12 @@ package org.apache.paimon.file;
 
 import org.apache.paimon.CoreOptions;
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.file.mergetree.compact.MergeFunctionFactory;
-import org.apache.paimon.file.operation.KeyValueFileStoreRead;
-import org.apache.paimon.file.operation.KeyValueFileStoreScan;
-import org.apache.paimon.file.operation.KeyValueFileStoreWrite;
-import org.apache.paimon.file.schema.KeyValueFieldsExtractor;
-import org.apache.paimon.file.schema.SchemaManager;
+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;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/Snapshot.java b/paimon-core/src/main/java/org/apache/paimon/file/Snapshot.java
index 239d12bff..2f4a6dee2 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/Snapshot.java
+++ b/paimon-core/src/main/java/org/apache/paimon/file/Snapshot.java
@@ -22,10 +22,10 @@ import org.apache.flink.shaded.jackson2.com.fasterxml.jackson.annotation.JsonCre
 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.file.manifest.ManifestEntry;
-import org.apache.paimon.file.manifest.ManifestFileMeta;
-import org.apache.paimon.file.manifest.ManifestList;
-import org.apache.paimon.file.operation.FileStoreScan;
+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;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/sort/AbstractBinaryExternalMerger.java b/paimon-core/src/main/java/org/apache/paimon/file/sort/AbstractBinaryExternalMerger.java
index b810c2009..6c746d745 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/sort/AbstractBinaryExternalMerger.java
+++ b/paimon-core/src/main/java/org/apache/paimon/file/sort/AbstractBinaryExternalMerger.java
@@ -19,13 +19,13 @@
 package org.apache.paimon.file.sort;
 
 import org.apache.paimon.data.AbstractPagedOutputView;
-import org.apache.paimon.file.compression.BlockCompressionFactory;
-import org.apache.paimon.file.disk.ChannelReaderInputView;
-import org.apache.paimon.file.disk.ChannelWithMeta;
-import org.apache.paimon.file.disk.ChannelWriterOutputView;
-import org.apache.paimon.file.disk.FileChannelUtil;
-import org.apache.paimon.file.disk.FileIOChannel;
-import org.apache.paimon.file.disk.IOManager;
+import org.apache.paimon.compression.BlockCompressionFactory;
+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.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/file/sort/BinaryExternalMerger.java
index 2fef1950f..cd27cda20 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/sort/BinaryExternalMerger.java
+++ b/paimon-core/src/main/java/org/apache/paimon/file/sort/BinaryExternalMerger.java
@@ -22,10 +22,10 @@ import org.apache.paimon.codegen.RecordComparator;
 import org.apache.paimon.data.AbstractPagedOutputView;
 import org.apache.paimon.data.BinaryRow;
 import org.apache.paimon.data.serializer.BinaryRowSerializer;
-import org.apache.paimon.file.compression.BlockCompressionFactory;
-import org.apache.paimon.file.disk.ChannelReaderInputView;
-import org.apache.paimon.file.disk.ChannelReaderInputViewIterator;
-import org.apache.paimon.file.disk.IOManager;
+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 java.io.IOException;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/sort/BinaryExternalSortBuffer.java b/paimon-core/src/main/java/org/apache/paimon/file/sort/BinaryExternalSortBuffer.java
index 70a6b7c70..e82a1d34f 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/sort/BinaryExternalSortBuffer.java
+++ b/paimon-core/src/main/java/org/apache/paimon/file/sort/BinaryExternalSortBuffer.java
@@ -23,13 +23,13 @@ import org.apache.paimon.codegen.RecordComparator;
 import org.apache.paimon.data.BinaryRow;
 import org.apache.paimon.data.InternalRow;
 import org.apache.paimon.data.serializer.BinaryRowSerializer;
-import org.apache.paimon.file.compression.BlockCompressionFactory;
-import org.apache.paimon.file.compression.Lz4BlockCompressionFactory;
-import org.apache.paimon.file.disk.ChannelWithMeta;
-import org.apache.paimon.file.disk.ChannelWriterOutputView;
-import org.apache.paimon.file.disk.FileChannelUtil;
-import org.apache.paimon.file.disk.FileIOChannel;
-import org.apache.paimon.file.disk.IOManager;
+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;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/sort/BinaryInMemorySortBuffer.java b/paimon-core/src/main/java/org/apache/paimon/file/sort/BinaryInMemorySortBuffer.java
index 401459de4..351ec0f4a 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/sort/BinaryInMemorySortBuffer.java
+++ b/paimon-core/src/main/java/org/apache/paimon/file/sort/BinaryInMemorySortBuffer.java
@@ -25,7 +25,7 @@ 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.file.memory.MemorySegmentPool;
+import org.apache.paimon.memory.MemorySegmentPool;
 import org.apache.paimon.file.utils.MutableObjectIterator;
 import org.apache.paimon.memory.MemorySegment;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/sort/BinaryIndexedSortable.java b/paimon-core/src/main/java/org/apache/paimon/file/sort/BinaryIndexedSortable.java
index 97d871677..d9735d64c 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/sort/BinaryIndexedSortable.java
+++ b/paimon-core/src/main/java/org/apache/paimon/file/sort/BinaryIndexedSortable.java
@@ -25,7 +25,7 @@ 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.file.memory.MemorySegmentPool;
+import org.apache.paimon.memory.MemorySegmentPool;
 import org.apache.paimon.memory.MemorySegment;
 
 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/file/sort/SpillChannelManager.java
index 2c85b25f7..b90daf042 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/sort/SpillChannelManager.java
+++ b/paimon-core/src/main/java/org/apache/paimon/file/sort/SpillChannelManager.java
@@ -18,7 +18,7 @@
 
 package org.apache.paimon.file.sort;
 
-import org.apache.paimon.file.disk.FileIOChannel;
+import org.apache.paimon.disk.FileIOChannel;
 
 import java.io.Closeable;
 import java.io.File;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/stats/FieldStatsArraySerializer.java b/paimon-core/src/main/java/org/apache/paimon/file/stats/FieldStatsArraySerializer.java
index 3f7c4063c..821748601 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/stats/FieldStatsArraySerializer.java
+++ b/paimon-core/src/main/java/org/apache/paimon/file/stats/FieldStatsArraySerializer.java
@@ -21,7 +21,7 @@ package org.apache.paimon.file.stats;
 import org.apache.paimon.data.GenericRow;
 import org.apache.paimon.data.InternalRow;
 import org.apache.paimon.data.serializer.InternalRowSerializer;
-import org.apache.paimon.file.casting.CastExecutor;
+import org.apache.paimon.casting.CastExecutor;
 import org.apache.paimon.format.FieldStats;
 import org.apache.paimon.types.ArrayType;
 import org.apache.paimon.types.BigIntType;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/stats/FieldStatsConverters.java b/paimon-core/src/main/java/org/apache/paimon/file/stats/FieldStatsConverters.java
index 86e0e472f..1b2725c9a 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/stats/FieldStatsConverters.java
+++ b/paimon-core/src/main/java/org/apache/paimon/file/stats/FieldStatsConverters.java
@@ -18,8 +18,8 @@
 
 package org.apache.paimon.file.stats;
 
-import org.apache.paimon.file.casting.CastExecutor;
-import org.apache.paimon.file.schema.SchemaEvolutionUtil;
+import org.apache.paimon.casting.CastExecutor;
+import org.apache.paimon.schema.SchemaEvolutionUtil;
 import org.apache.paimon.types.DataField;
 import org.apache.paimon.types.RowType;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/utils/BulkFormatMapping.java b/paimon-core/src/main/java/org/apache/paimon/file/utils/BulkFormatMapping.java
index 42bbaac69..73114f7b9 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/utils/BulkFormatMapping.java
+++ b/paimon-core/src/main/java/org/apache/paimon/file/utils/BulkFormatMapping.java
@@ -19,12 +19,12 @@
 package org.apache.paimon.file.utils;
 
 import org.apache.paimon.file.KeyValue;
-import org.apache.paimon.file.casting.CastFieldGetter;
-import org.apache.paimon.file.predicate.Predicate;
-import org.apache.paimon.file.schema.IndexCastMapping;
-import org.apache.paimon.file.schema.KeyValueFieldsExtractor;
-import org.apache.paimon.file.schema.SchemaEvolutionUtil;
-import org.apache.paimon.file.schema.TableSchema;
+import org.apache.paimon.casting.CastFieldGetter;
+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;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/utils/CommitIncrement.java b/paimon-core/src/main/java/org/apache/paimon/file/utils/CommitIncrement.java
index 0d9624671..6f647c949 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/utils/CommitIncrement.java
+++ b/paimon-core/src/main/java/org/apache/paimon/file/utils/CommitIncrement.java
@@ -18,8 +18,8 @@
 
 package org.apache.paimon.file.utils;
 
-import org.apache.paimon.file.io.CompactIncrement;
-import org.apache.paimon.file.io.NewFilesIncrement;
+import org.apache.paimon.io.CompactIncrement;
+import org.apache.paimon.io.NewFilesIncrement;
 
 /** Changes to commit. */
 public class CommitIncrement {
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/utils/FileStorePathFactory.java b/paimon-core/src/main/java/org/apache/paimon/file/utils/FileStorePathFactory.java
index dc767a893..32bff8b65 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/utils/FileStorePathFactory.java
+++ b/paimon-core/src/main/java/org/apache/paimon/file/utils/FileStorePathFactory.java
@@ -21,7 +21,7 @@ package org.apache.paimon.file.utils;
 import org.apache.paimon.CoreOptions;
 import org.apache.paimon.annotation.VisibleForTesting;
 import org.apache.paimon.data.BinaryRow;
-import org.apache.paimon.file.io.DataFilePathFactory;
+import org.apache.paimon.io.DataFilePathFactory;
 import org.apache.paimon.fs.Path;
 import org.apache.paimon.options.ConfigOption;
 import org.apache.paimon.types.RowType;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/utils/JsonSerdeUtil.java b/paimon-core/src/main/java/org/apache/paimon/file/utils/JsonSerdeUtil.java
index 09c39fa62..9c64554ed 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/utils/JsonSerdeUtil.java
+++ b/paimon-core/src/main/java/org/apache/paimon/file/utils/JsonSerdeUtil.java
@@ -29,8 +29,8 @@ import org.apache.flink.shaded.jackson2.com.fasterxml.jackson.databind.deser.std
 import org.apache.flink.shaded.jackson2.com.fasterxml.jackson.databind.module.SimpleModule;
 import org.apache.flink.shaded.jackson2.com.fasterxml.jackson.databind.ser.std.StdSerializer;
 
-import org.apache.paimon.file.schema.SchemaSerializer;
-import org.apache.paimon.file.schema.TableSchema;
+import org.apache.paimon.schema.SchemaSerializer;
+import org.apache.paimon.schema.TableSchema;
 import org.apache.paimon.types.DataField;
 import org.apache.paimon.types.DataType;
 import org.apache.paimon.types.DataTypeJsonParser;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/utils/RecordWriter.java b/paimon-core/src/main/java/org/apache/paimon/file/utils/RecordWriter.java
index e51505623..f912e1b96 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/utils/RecordWriter.java
+++ b/paimon-core/src/main/java/org/apache/paimon/file/utils/RecordWriter.java
@@ -18,7 +18,7 @@
 
 package org.apache.paimon.file.utils;
 
-import org.apache.paimon.file.io.DataFileMeta;
+import org.apache.paimon.io.DataFileMeta;
 
 import java.util.List;
 
@@ -43,7 +43,7 @@ public interface RecordWriter<T> {
     void compact(boolean fullCompaction) throws Exception;
 
     /**
-     * Add files to the internal {@link org.apache.paimon.file.compact.CompactManager}.
+     * Add files to the internal {@link org.apache.paimon.compact.CompactManager}.
      *
      * @param files files to add
      */
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/io/AbstractFileRecordIterator.java b/paimon-core/src/main/java/org/apache/paimon/io/AbstractFileRecordIterator.java
similarity index 93%
rename from paimon-core/src/main/java/org/apache/paimon/file/io/AbstractFileRecordIterator.java
rename to paimon-core/src/main/java/org/apache/paimon/io/AbstractFileRecordIterator.java
index 63e233ac1..68f63be5a 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/io/AbstractFileRecordIterator.java
+++ b/paimon-core/src/main/java/org/apache/paimon/io/AbstractFileRecordIterator.java
@@ -16,11 +16,11 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.io;
+package org.apache.paimon.io;
 
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.file.casting.CastFieldGetter;
-import org.apache.paimon.file.casting.CastedRow;
+import org.apache.paimon.casting.CastFieldGetter;
+import org.apache.paimon.casting.CastedRow;
 import org.apache.paimon.reader.RecordReader;
 import org.apache.paimon.utils.ProjectedRow;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/io/CompactIncrement.java b/paimon-core/src/main/java/org/apache/paimon/io/CompactIncrement.java
similarity index 98%
rename from paimon-core/src/main/java/org/apache/paimon/file/io/CompactIncrement.java
rename to paimon-core/src/main/java/org/apache/paimon/io/CompactIncrement.java
index 10bfef732..cc3e79f01 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/io/CompactIncrement.java
+++ b/paimon-core/src/main/java/org/apache/paimon/io/CompactIncrement.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.io;
+package org.apache.paimon.io;
 
 import java.util.List;
 import java.util.Objects;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/io/DataFileMeta.java b/paimon-core/src/main/java/org/apache/paimon/io/DataFileMeta.java
similarity index 99%
rename from paimon-core/src/main/java/org/apache/paimon/file/io/DataFileMeta.java
rename to paimon-core/src/main/java/org/apache/paimon/io/DataFileMeta.java
index 1cfb53168..de0c78c64 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/io/DataFileMeta.java
+++ b/paimon-core/src/main/java/org/apache/paimon/io/DataFileMeta.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.io;
+package org.apache.paimon.io;
 
 import org.apache.paimon.CoreOptions;
 import org.apache.paimon.data.BinaryRow;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/io/DataFileMetaSerializer.java b/paimon-core/src/main/java/org/apache/paimon/io/DataFileMetaSerializer.java
similarity index 98%
rename from paimon-core/src/main/java/org/apache/paimon/file/io/DataFileMetaSerializer.java
rename to paimon-core/src/main/java/org/apache/paimon/io/DataFileMetaSerializer.java
index d9570c995..51b9102da 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/io/DataFileMetaSerializer.java
+++ b/paimon-core/src/main/java/org/apache/paimon/io/DataFileMetaSerializer.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.io;
+package org.apache.paimon.io;
 
 import org.apache.paimon.data.BinaryString;
 import org.apache.paimon.data.GenericRow;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/io/DataFilePathFactory.java b/paimon-core/src/main/java/org/apache/paimon/io/DataFilePathFactory.java
similarity index 98%
rename from paimon-core/src/main/java/org/apache/paimon/file/io/DataFilePathFactory.java
rename to paimon-core/src/main/java/org/apache/paimon/io/DataFilePathFactory.java
index 1ff0c1575..d4a49cc46 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/io/DataFilePathFactory.java
+++ b/paimon-core/src/main/java/org/apache/paimon/io/DataFilePathFactory.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.io;
+package org.apache.paimon.io;
 
 import org.apache.paimon.annotation.VisibleForTesting;
 import org.apache.paimon.fs.Path;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/io/FileWriter.java b/paimon-core/src/main/java/org/apache/paimon/io/FileWriter.java
similarity index 99%
rename from paimon-core/src/main/java/org/apache/paimon/file/io/FileWriter.java
rename to paimon-core/src/main/java/org/apache/paimon/io/FileWriter.java
index 3869b8013..94d67b67d 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/io/FileWriter.java
+++ b/paimon-core/src/main/java/org/apache/paimon/io/FileWriter.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.paimon.file.io;
+package org.apache.paimon.io;
 
 import org.apache.paimon.utils.CloseableIterator;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/io/KeyValueDataFileRecordReader.java b/paimon-core/src/main/java/org/apache/paimon/io/KeyValueDataFileRecordReader.java
similarity index 97%
rename from paimon-core/src/main/java/org/apache/paimon/file/io/KeyValueDataFileRecordReader.java
rename to paimon-core/src/main/java/org/apache/paimon/io/KeyValueDataFileRecordReader.java
index 0ceef986f..95dd0c383 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/io/KeyValueDataFileRecordReader.java
+++ b/paimon-core/src/main/java/org/apache/paimon/io/KeyValueDataFileRecordReader.java
@@ -16,12 +16,12 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.io;
+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.file.casting.CastFieldGetter;
+import org.apache.paimon.casting.CastFieldGetter;
 import org.apache.paimon.file.utils.FileUtils;
 import org.apache.paimon.format.FormatReaderFactory;
 import org.apache.paimon.fs.FileIO;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/io/KeyValueDataFileWriter.java b/paimon-core/src/main/java/org/apache/paimon/io/KeyValueDataFileWriter.java
similarity index 99%
rename from paimon-core/src/main/java/org/apache/paimon/file/io/KeyValueDataFileWriter.java
rename to paimon-core/src/main/java/org/apache/paimon/io/KeyValueDataFileWriter.java
index 54b915f06..b2e2e9631 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/io/KeyValueDataFileWriter.java
+++ b/paimon-core/src/main/java/org/apache/paimon/io/KeyValueDataFileWriter.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.io;
+package org.apache.paimon.io;
 
 import org.apache.paimon.data.BinaryRow;
 import org.apache.paimon.data.InternalRow;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/io/KeyValueFileReaderFactory.java b/paimon-core/src/main/java/org/apache/paimon/io/KeyValueFileReaderFactory.java
similarity index 96%
rename from paimon-core/src/main/java/org/apache/paimon/file/io/KeyValueFileReaderFactory.java
rename to paimon-core/src/main/java/org/apache/paimon/io/KeyValueFileReaderFactory.java
index 8c37073f1..e516c634d 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/io/KeyValueFileReaderFactory.java
+++ b/paimon-core/src/main/java/org/apache/paimon/io/KeyValueFileReaderFactory.java
@@ -16,14 +16,14 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.io;
+package org.apache.paimon.io;
 
 import org.apache.paimon.data.BinaryRow;
 import org.apache.paimon.file.KeyValue;
-import org.apache.paimon.file.predicate.Predicate;
-import org.apache.paimon.file.schema.KeyValueFieldsExtractor;
-import org.apache.paimon.file.schema.SchemaManager;
-import org.apache.paimon.file.schema.TableSchema;
+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;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/io/KeyValueFileWriterFactory.java b/paimon-core/src/main/java/org/apache/paimon/io/KeyValueFileWriterFactory.java
similarity index 99%
rename from paimon-core/src/main/java/org/apache/paimon/file/io/KeyValueFileWriterFactory.java
rename to paimon-core/src/main/java/org/apache/paimon/io/KeyValueFileWriterFactory.java
index b429e739e..b7dcbd813 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/io/KeyValueFileWriterFactory.java
+++ b/paimon-core/src/main/java/org/apache/paimon/io/KeyValueFileWriterFactory.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.io;
+package org.apache.paimon.io;
 
 import org.apache.paimon.annotation.VisibleForTesting;
 import org.apache.paimon.data.BinaryRow;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/io/NewFilesIncrement.java b/paimon-core/src/main/java/org/apache/paimon/io/NewFilesIncrement.java
similarity index 98%
rename from paimon-core/src/main/java/org/apache/paimon/file/io/NewFilesIncrement.java
rename to paimon-core/src/main/java/org/apache/paimon/io/NewFilesIncrement.java
index 096a1690e..4e980bd31 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/io/NewFilesIncrement.java
+++ b/paimon-core/src/main/java/org/apache/paimon/io/NewFilesIncrement.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.io;
+package org.apache.paimon.io;
 
 import java.util.Collections;
 import java.util.List;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/io/RollingFileWriter.java b/paimon-core/src/main/java/org/apache/paimon/io/RollingFileWriter.java
similarity index 99%
rename from paimon-core/src/main/java/org/apache/paimon/file/io/RollingFileWriter.java
rename to paimon-core/src/main/java/org/apache/paimon/io/RollingFileWriter.java
index bdc2643b8..f864183ee 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/io/RollingFileWriter.java
+++ b/paimon-core/src/main/java/org/apache/paimon/io/RollingFileWriter.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.paimon.file.io;
+package org.apache.paimon.io;
 
 import org.apache.paimon.annotation.VisibleForTesting;
 import org.apache.paimon.utils.Preconditions;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/io/RowDataFileRecordReader.java b/paimon-core/src/main/java/org/apache/paimon/io/RowDataFileRecordReader.java
similarity index 97%
rename from paimon-core/src/main/java/org/apache/paimon/file/io/RowDataFileRecordReader.java
rename to paimon-core/src/main/java/org/apache/paimon/io/RowDataFileRecordReader.java
index 7466db1d1..11c3118ab 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/io/RowDataFileRecordReader.java
+++ b/paimon-core/src/main/java/org/apache/paimon/io/RowDataFileRecordReader.java
@@ -16,10 +16,10 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.io;
+package org.apache.paimon.io;
 
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.file.casting.CastFieldGetter;
+import org.apache.paimon.casting.CastFieldGetter;
 import org.apache.paimon.file.utils.FileUtils;
 import org.apache.paimon.format.FormatReaderFactory;
 import org.apache.paimon.fs.FileIO;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/io/RowDataFileWriter.java b/paimon-core/src/main/java/org/apache/paimon/io/RowDataFileWriter.java
similarity index 98%
rename from paimon-core/src/main/java/org/apache/paimon/file/io/RowDataFileWriter.java
rename to paimon-core/src/main/java/org/apache/paimon/io/RowDataFileWriter.java
index 3d4a40285..da9fea7a6 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/io/RowDataFileWriter.java
+++ b/paimon-core/src/main/java/org/apache/paimon/io/RowDataFileWriter.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.paimon.file.io;
+package org.apache.paimon.io;
 
 import org.apache.paimon.data.InternalRow;
 import org.apache.paimon.file.stats.BinaryTableStats;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/io/RowDataRollingFileWriter.java b/paimon-core/src/main/java/org/apache/paimon/io/RowDataRollingFileWriter.java
similarity index 98%
rename from paimon-core/src/main/java/org/apache/paimon/file/io/RowDataRollingFileWriter.java
rename to paimon-core/src/main/java/org/apache/paimon/io/RowDataRollingFileWriter.java
index 64ea95806..c5e549ac4 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/io/RowDataRollingFileWriter.java
+++ b/paimon-core/src/main/java/org/apache/paimon/io/RowDataRollingFileWriter.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.paimon.file.io;
+package org.apache.paimon.io;
 
 import org.apache.paimon.data.InternalRow;
 import org.apache.paimon.format.FileFormat;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/io/SingleFileWriter.java b/paimon-core/src/main/java/org/apache/paimon/io/SingleFileWriter.java
similarity index 99%
rename from paimon-core/src/main/java/org/apache/paimon/file/io/SingleFileWriter.java
rename to paimon-core/src/main/java/org/apache/paimon/io/SingleFileWriter.java
index 43778d82a..7a50ae2b7 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/io/SingleFileWriter.java
+++ b/paimon-core/src/main/java/org/apache/paimon/io/SingleFileWriter.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.paimon.file.io;
+package org.apache.paimon.io;
 
 import org.apache.paimon.data.InternalRow;
 import org.apache.paimon.format.FormatWriter;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/io/StatsCollectingSingleFileWriter.java b/paimon-core/src/main/java/org/apache/paimon/io/StatsCollectingSingleFileWriter.java
similarity index 98%
rename from paimon-core/src/main/java/org/apache/paimon/file/io/StatsCollectingSingleFileWriter.java
rename to paimon-core/src/main/java/org/apache/paimon/io/StatsCollectingSingleFileWriter.java
index 025d39240..30a2be40b 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/io/StatsCollectingSingleFileWriter.java
+++ b/paimon-core/src/main/java/org/apache/paimon/io/StatsCollectingSingleFileWriter.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.paimon.file.io;
+package org.apache.paimon.io;
 
 import org.apache.paimon.data.InternalRow;
 import org.apache.paimon.format.FieldStats;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/manifest/FileKind.java b/paimon-core/src/main/java/org/apache/paimon/manifest/FileKind.java
similarity index 97%
rename from paimon-core/src/main/java/org/apache/paimon/file/manifest/FileKind.java
rename to paimon-core/src/main/java/org/apache/paimon/manifest/FileKind.java
index 301f1958b..a18d65f15 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/manifest/FileKind.java
+++ b/paimon-core/src/main/java/org/apache/paimon/manifest/FileKind.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.manifest;
+package org.apache.paimon.manifest;
 
 /** Kind of a file. */
 public enum FileKind {
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/manifest/ManifestCommittable.java b/paimon-core/src/main/java/org/apache/paimon/manifest/ManifestCommittable.java
similarity index 98%
rename from paimon-core/src/main/java/org/apache/paimon/file/manifest/ManifestCommittable.java
rename to paimon-core/src/main/java/org/apache/paimon/manifest/ManifestCommittable.java
index dca636c8a..38a69d20a 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/manifest/ManifestCommittable.java
+++ b/paimon-core/src/main/java/org/apache/paimon/manifest/ManifestCommittable.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.manifest;
+package org.apache.paimon.manifest;
 
 import org.apache.paimon.table.sink.CommitMessage;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/manifest/ManifestCommittableSerializer.java b/paimon-core/src/main/java/org/apache/paimon/manifest/ManifestCommittableSerializer.java
similarity index 99%
rename from paimon-core/src/main/java/org/apache/paimon/file/manifest/ManifestCommittableSerializer.java
rename to paimon-core/src/main/java/org/apache/paimon/manifest/ManifestCommittableSerializer.java
index b540a8d89..3ae51b7aa 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/manifest/ManifestCommittableSerializer.java
+++ b/paimon-core/src/main/java/org/apache/paimon/manifest/ManifestCommittableSerializer.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.manifest;
+package org.apache.paimon.manifest;
 
 import org.apache.paimon.data.serializer.VersionedSerializer;
 import org.apache.paimon.io.DataInputDeserializer;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/manifest/ManifestEntry.java b/paimon-core/src/main/java/org/apache/paimon/manifest/ManifestEntry.java
similarity index 98%
rename from paimon-core/src/main/java/org/apache/paimon/file/manifest/ManifestEntry.java
rename to paimon-core/src/main/java/org/apache/paimon/manifest/ManifestEntry.java
index 66abb51b8..a503d0cab 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/manifest/ManifestEntry.java
+++ b/paimon-core/src/main/java/org/apache/paimon/manifest/ManifestEntry.java
@@ -16,10 +16,10 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.manifest;
+package org.apache.paimon.manifest;
 
 import org.apache.paimon.data.BinaryRow;
-import org.apache.paimon.file.io.DataFileMeta;
+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;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/manifest/ManifestEntrySerializer.java b/paimon-core/src/main/java/org/apache/paimon/manifest/ManifestEntrySerializer.java
similarity index 96%
rename from paimon-core/src/main/java/org/apache/paimon/file/manifest/ManifestEntrySerializer.java
rename to paimon-core/src/main/java/org/apache/paimon/manifest/ManifestEntrySerializer.java
index c54a58a50..316208ecd 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/manifest/ManifestEntrySerializer.java
+++ b/paimon-core/src/main/java/org/apache/paimon/manifest/ManifestEntrySerializer.java
@@ -16,11 +16,11 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.manifest;
+package org.apache.paimon.manifest;
 
 import org.apache.paimon.data.GenericRow;
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.file.io.DataFileMetaSerializer;
+import org.apache.paimon.io.DataFileMetaSerializer;
 import org.apache.paimon.file.utils.VersionedObjectSerializer;
 
 import static org.apache.paimon.file.utils.SerializationUtils.deserializeBinaryRow;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/manifest/ManifestFile.java b/paimon-core/src/main/java/org/apache/paimon/manifest/ManifestFile.java
similarity index 97%
rename from paimon-core/src/main/java/org/apache/paimon/file/manifest/ManifestFile.java
rename to paimon-core/src/main/java/org/apache/paimon/manifest/ManifestFile.java
index 32dd5d533..3405b27e8 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/manifest/ManifestFile.java
+++ b/paimon-core/src/main/java/org/apache/paimon/manifest/ManifestFile.java
@@ -16,12 +16,12 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.manifest;
+package org.apache.paimon.manifest;
 
 import org.apache.paimon.annotation.VisibleForTesting;
-import org.apache.paimon.file.io.RollingFileWriter;
-import org.apache.paimon.file.io.SingleFileWriter;
-import org.apache.paimon.file.schema.SchemaManager;
+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;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/manifest/ManifestFileMeta.java b/paimon-core/src/main/java/org/apache/paimon/manifest/ManifestFileMeta.java
similarity index 99%
rename from paimon-core/src/main/java/org/apache/paimon/file/manifest/ManifestFileMeta.java
rename to paimon-core/src/main/java/org/apache/paimon/manifest/ManifestFileMeta.java
index 52dfb3bd8..eee3f37b9 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/manifest/ManifestFileMeta.java
+++ b/paimon-core/src/main/java/org/apache/paimon/manifest/ManifestFileMeta.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.manifest;
+package org.apache.paimon.manifest;
 
 import org.apache.paimon.file.stats.BinaryTableStats;
 import org.apache.paimon.file.stats.FieldStatsArraySerializer;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/manifest/ManifestFileMetaSerializer.java b/paimon-core/src/main/java/org/apache/paimon/manifest/ManifestFileMetaSerializer.java
similarity index 98%
rename from paimon-core/src/main/java/org/apache/paimon/file/manifest/ManifestFileMetaSerializer.java
rename to paimon-core/src/main/java/org/apache/paimon/manifest/ManifestFileMetaSerializer.java
index a69ebc18a..2de80fbe3 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/manifest/ManifestFileMetaSerializer.java
+++ b/paimon-core/src/main/java/org/apache/paimon/manifest/ManifestFileMetaSerializer.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.manifest;
+package org.apache.paimon.manifest;
 
 import org.apache.paimon.data.BinaryString;
 import org.apache.paimon.data.GenericRow;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/manifest/ManifestList.java b/paimon-core/src/main/java/org/apache/paimon/manifest/ManifestList.java
similarity index 99%
rename from paimon-core/src/main/java/org/apache/paimon/file/manifest/ManifestList.java
rename to paimon-core/src/main/java/org/apache/paimon/manifest/ManifestList.java
index 3cb1ef7d8..2dd41a3a8 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/manifest/ManifestList.java
+++ b/paimon-core/src/main/java/org/apache/paimon/manifest/ManifestList.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.manifest;
+package org.apache.paimon.manifest;
 
 import org.apache.paimon.file.utils.FileStorePathFactory;
 import org.apache.paimon.file.utils.FileUtils;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/memory/Buffer.java b/paimon-core/src/main/java/org/apache/paimon/memory/Buffer.java
similarity index 95%
rename from paimon-core/src/main/java/org/apache/paimon/file/memory/Buffer.java
rename to paimon-core/src/main/java/org/apache/paimon/memory/Buffer.java
index 7732e62cc..c22d2339e 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/memory/Buffer.java
+++ b/paimon-core/src/main/java/org/apache/paimon/memory/Buffer.java
@@ -16,10 +16,10 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.memory;
+package org.apache.paimon.memory;
 
 import org.apache.paimon.annotation.Experimental;
-import org.apache.paimon.memory.MemorySegment;
+
 
 import java.nio.ByteBuffer;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/memory/HeapMemorySegmentPool.java b/paimon-core/src/main/java/org/apache/paimon/memory/HeapMemorySegmentPool.java
similarity index 95%
rename from paimon-core/src/main/java/org/apache/paimon/file/memory/HeapMemorySegmentPool.java
rename to paimon-core/src/main/java/org/apache/paimon/memory/HeapMemorySegmentPool.java
index 37a12d745..f5e1a30f4 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/memory/HeapMemorySegmentPool.java
+++ b/paimon-core/src/main/java/org/apache/paimon/memory/HeapMemorySegmentPool.java
@@ -16,9 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.memory;
-
-import org.apache.paimon.memory.MemorySegment;
+package org.apache.paimon.memory;
 
 import java.util.LinkedList;
 import java.util.List;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/memory/MemoryOwner.java b/paimon-core/src/main/java/org/apache/paimon/memory/MemoryOwner.java
similarity index 96%
rename from paimon-core/src/main/java/org/apache/paimon/file/memory/MemoryOwner.java
rename to paimon-core/src/main/java/org/apache/paimon/memory/MemoryOwner.java
index abc68967e..78127dae4 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/memory/MemoryOwner.java
+++ b/paimon-core/src/main/java/org/apache/paimon/memory/MemoryOwner.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.memory;
+package org.apache.paimon.memory;
 
 /** A class provides memory related methods. */
 public interface MemoryOwner {
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/memory/MemoryPoolFactory.java b/paimon-core/src/main/java/org/apache/paimon/memory/MemoryPoolFactory.java
similarity index 97%
rename from paimon-core/src/main/java/org/apache/paimon/file/memory/MemoryPoolFactory.java
rename to paimon-core/src/main/java/org/apache/paimon/memory/MemoryPoolFactory.java
index 4ef00d7e0..c1821c5d5 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/memory/MemoryPoolFactory.java
+++ b/paimon-core/src/main/java/org/apache/paimon/memory/MemoryPoolFactory.java
@@ -16,9 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.memory;
-
-import org.apache.paimon.memory.MemorySegment;
+package org.apache.paimon.memory;
 
 import java.util.List;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/memory/MemorySegmentPool.java b/paimon-core/src/main/java/org/apache/paimon/memory/MemorySegmentPool.java
similarity index 92%
rename from paimon-core/src/main/java/org/apache/paimon/file/memory/MemorySegmentPool.java
rename to paimon-core/src/main/java/org/apache/paimon/memory/MemorySegmentPool.java
index a90c40193..5f731a266 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/memory/MemorySegmentPool.java
+++ b/paimon-core/src/main/java/org/apache/paimon/memory/MemorySegmentPool.java
@@ -16,11 +16,9 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.memory;
+package org.apache.paimon.memory;
 
 import org.apache.paimon.annotation.Experimental;
-import org.apache.paimon.memory.MemorySegment;
-import org.apache.paimon.memory.MemorySegmentSource;
 import org.apache.paimon.options.MemorySize;
 
 import java.util.List;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/DataFileReader.java b/paimon-core/src/main/java/org/apache/paimon/mergetree/DataFileReader.java
similarity index 95%
rename from paimon-core/src/main/java/org/apache/paimon/file/mergetree/DataFileReader.java
rename to paimon-core/src/main/java/org/apache/paimon/mergetree/DataFileReader.java
index e91e09f2e..c262b6dce 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/DataFileReader.java
+++ b/paimon-core/src/main/java/org/apache/paimon/mergetree/DataFileReader.java
@@ -16,9 +16,9 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.mergetree;
+package org.apache.paimon.mergetree;
 
-import org.apache.paimon.file.io.DataFileMeta;
+import org.apache.paimon.io.DataFileMeta;
 import org.apache.paimon.lookup.LookupStoreReader;
 import org.apache.paimon.options.MemorySize;
 import org.apache.paimon.utils.FileIOUtils;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/DropDeleteReader.java b/paimon-core/src/main/java/org/apache/paimon/mergetree/DropDeleteReader.java
similarity index 98%
rename from paimon-core/src/main/java/org/apache/paimon/file/mergetree/DropDeleteReader.java
rename to paimon-core/src/main/java/org/apache/paimon/mergetree/DropDeleteReader.java
index 149903cbb..27f69e587 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/DropDeleteReader.java
+++ b/paimon-core/src/main/java/org/apache/paimon/mergetree/DropDeleteReader.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.mergetree;
+package org.apache.paimon.mergetree;
 
 import org.apache.paimon.file.KeyValue;
 import org.apache.paimon.reader.RecordReader;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/LevelSortedRun.java b/paimon-core/src/main/java/org/apache/paimon/mergetree/LevelSortedRun.java
similarity index 97%
rename from paimon-core/src/main/java/org/apache/paimon/file/mergetree/LevelSortedRun.java
rename to paimon-core/src/main/java/org/apache/paimon/mergetree/LevelSortedRun.java
index e5bf60162..3baec1ff4 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/LevelSortedRun.java
+++ b/paimon-core/src/main/java/org/apache/paimon/mergetree/LevelSortedRun.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.mergetree;
+package org.apache.paimon.mergetree;
 
 import java.util.Objects;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/Levels.java b/paimon-core/src/main/java/org/apache/paimon/mergetree/Levels.java
similarity index 98%
rename from paimon-core/src/main/java/org/apache/paimon/file/mergetree/Levels.java
rename to paimon-core/src/main/java/org/apache/paimon/mergetree/Levels.java
index 5efb7015b..ca71272bf 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/Levels.java
+++ b/paimon-core/src/main/java/org/apache/paimon/mergetree/Levels.java
@@ -16,10 +16,10 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.mergetree;
+package org.apache.paimon.mergetree;
 
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.file.io.DataFileMeta;
+import org.apache.paimon.io.DataFileMeta;
 import org.apache.paimon.utils.Preconditions;
 
 import java.util.ArrayList;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/LookupLevels.java b/paimon-core/src/main/java/org/apache/paimon/mergetree/LookupLevels.java
similarity index 99%
rename from paimon-core/src/main/java/org/apache/paimon/file/mergetree/LookupLevels.java
rename to paimon-core/src/main/java/org/apache/paimon/mergetree/LookupLevels.java
index bca45807b..6d4f7e40c 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/LookupLevels.java
+++ b/paimon-core/src/main/java/org/apache/paimon/mergetree/LookupLevels.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.mergetree;
+package org.apache.paimon.mergetree;
 
 import org.apache.flink.shaded.guava30.com.google.common.cache.Cache;
 import org.apache.flink.shaded.guava30.com.google.common.cache.CacheBuilder;
@@ -26,7 +26,7 @@ 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.file.io.DataFileMeta;
+import org.apache.paimon.io.DataFileMeta;
 import org.apache.paimon.io.DataOutputSerializer;
 import org.apache.paimon.lookup.LookupStoreFactory;
 import org.apache.paimon.lookup.LookupStoreReader;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/MergeTreeReaders.java b/paimon-core/src/main/java/org/apache/paimon/mergetree/MergeTreeReaders.java
similarity index 87%
rename from paimon-core/src/main/java/org/apache/paimon/file/mergetree/MergeTreeReaders.java
rename to paimon-core/src/main/java/org/apache/paimon/mergetree/MergeTreeReaders.java
index 681d172e1..c46d556b6 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/MergeTreeReaders.java
+++ b/paimon-core/src/main/java/org/apache/paimon/mergetree/MergeTreeReaders.java
@@ -16,17 +16,17 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.mergetree;
+package org.apache.paimon.mergetree;
 
 import org.apache.paimon.data.InternalRow;
 import org.apache.paimon.file.KeyValue;
-import org.apache.paimon.file.io.DataFileMeta;
-import org.apache.paimon.file.io.KeyValueFileReaderFactory;
-import org.apache.paimon.file.mergetree.compact.ConcatRecordReader;
-import org.apache.paimon.file.mergetree.compact.MergeFunction;
-import org.apache.paimon.file.mergetree.compact.MergeFunctionWrapper;
-import org.apache.paimon.file.mergetree.compact.ReducerMergeFunctionWrapper;
-import org.apache.paimon.file.mergetree.compact.SortMergeReader;
+import org.apache.paimon.io.DataFileMeta;
+import org.apache.paimon.io.KeyValueFileReaderFactory;
+import org.apache.paimon.mergetree.compact.ConcatRecordReader;
+import org.apache.paimon.mergetree.compact.MergeFunction;
+import org.apache.paimon.mergetree.compact.MergeFunctionWrapper;
+import org.apache.paimon.mergetree.compact.ReducerMergeFunctionWrapper;
+import org.apache.paimon.mergetree.compact.SortMergeReader;
 import org.apache.paimon.reader.RecordReader;
 
 import java.io.IOException;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/MergeTreeWriter.java b/paimon-core/src/main/java/org/apache/paimon/mergetree/MergeTreeWriter.java
similarity index 94%
rename from paimon-core/src/main/java/org/apache/paimon/file/mergetree/MergeTreeWriter.java
rename to paimon-core/src/main/java/org/apache/paimon/mergetree/MergeTreeWriter.java
index 7d8229be4..51a9da81e 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/MergeTreeWriter.java
+++ b/paimon-core/src/main/java/org/apache/paimon/mergetree/MergeTreeWriter.java
@@ -16,23 +16,23 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.mergetree;
+package org.apache.paimon.mergetree;
 
 import org.apache.paimon.CoreOptions.ChangelogProducer;
 import org.apache.paimon.annotation.VisibleForTesting;
 import org.apache.paimon.data.InternalRow;
 import org.apache.paimon.file.KeyValue;
-import org.apache.paimon.file.compact.CompactManager;
-import org.apache.paimon.file.compact.CompactResult;
-import org.apache.paimon.file.disk.IOManager;
-import org.apache.paimon.file.io.CompactIncrement;
-import org.apache.paimon.file.io.DataFileMeta;
-import org.apache.paimon.file.io.KeyValueFileWriterFactory;
-import org.apache.paimon.file.io.NewFilesIncrement;
-import org.apache.paimon.file.io.RollingFileWriter;
-import org.apache.paimon.file.memory.MemoryOwner;
-import org.apache.paimon.file.memory.MemorySegmentPool;
-import org.apache.paimon.file.mergetree.compact.MergeFunction;
+import org.apache.paimon.compact.CompactManager;
+import org.apache.paimon.compact.CompactResult;
+import org.apache.paimon.disk.IOManager;
+import org.apache.paimon.io.CompactIncrement;
+import org.apache.paimon.io.DataFileMeta;
+import org.apache.paimon.io.KeyValueFileWriterFactory;
+import org.apache.paimon.io.NewFilesIncrement;
+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;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/SortBufferWriteBuffer.java b/paimon-core/src/main/java/org/apache/paimon/mergetree/SortBufferWriteBuffer.java
similarity index 97%
rename from paimon-core/src/main/java/org/apache/paimon/file/mergetree/SortBufferWriteBuffer.java
rename to paimon-core/src/main/java/org/apache/paimon/mergetree/SortBufferWriteBuffer.java
index 50ef869b6..7ca7fa426 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/SortBufferWriteBuffer.java
+++ b/paimon-core/src/main/java/org/apache/paimon/mergetree/SortBufferWriteBuffer.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.mergetree;
+package org.apache.paimon.mergetree;
 
 import org.apache.paimon.annotation.VisibleForTesting;
 import org.apache.paimon.codegen.CodeGenUtils;
@@ -29,10 +29,10 @@ 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.file.disk.IOManager;
-import org.apache.paimon.file.memory.MemorySegmentPool;
-import org.apache.paimon.file.mergetree.compact.MergeFunction;
-import org.apache.paimon.file.mergetree.compact.ReducerMergeFunctionWrapper;
+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;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/SortedRun.java b/paimon-core/src/main/java/org/apache/paimon/mergetree/SortedRun.java
similarity index 97%
rename from paimon-core/src/main/java/org/apache/paimon/file/mergetree/SortedRun.java
rename to paimon-core/src/main/java/org/apache/paimon/mergetree/SortedRun.java
index 532539fed..831499aec 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/SortedRun.java
+++ b/paimon-core/src/main/java/org/apache/paimon/mergetree/SortedRun.java
@@ -16,11 +16,11 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.mergetree;
+package org.apache.paimon.mergetree;
 
 import org.apache.paimon.annotation.VisibleForTesting;
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.file.io.DataFileMeta;
+import org.apache.paimon.io.DataFileMeta;
 import org.apache.paimon.utils.Preconditions;
 
 import java.util.Collections;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/WriteBuffer.java b/paimon-core/src/main/java/org/apache/paimon/mergetree/WriteBuffer.java
similarity index 96%
rename from paimon-core/src/main/java/org/apache/paimon/file/mergetree/WriteBuffer.java
rename to paimon-core/src/main/java/org/apache/paimon/mergetree/WriteBuffer.java
index 090b7e08c..283fddd70 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/WriteBuffer.java
+++ b/paimon-core/src/main/java/org/apache/paimon/mergetree/WriteBuffer.java
@@ -16,11 +16,11 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.mergetree;
+package org.apache.paimon.mergetree;
 
 import org.apache.paimon.data.InternalRow;
 import org.apache.paimon.file.KeyValue;
-import org.apache.paimon.file.mergetree.compact.MergeFunction;
+import org.apache.paimon.mergetree.compact.MergeFunction;
 import org.apache.paimon.types.RowKind;
 
 import javax.annotation.Nullable;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/AbstractCompactRewriter.java b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/AbstractCompactRewriter.java
similarity index 88%
rename from paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/AbstractCompactRewriter.java
rename to paimon-core/src/main/java/org/apache/paimon/mergetree/compact/AbstractCompactRewriter.java
index 8e7e7aa18..e243ea28a 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/AbstractCompactRewriter.java
+++ b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/AbstractCompactRewriter.java
@@ -16,11 +16,11 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.mergetree.compact;
+package org.apache.paimon.mergetree.compact;
 
-import org.apache.paimon.file.compact.CompactResult;
-import org.apache.paimon.file.io.DataFileMeta;
-import org.apache.paimon.file.mergetree.SortedRun;
+import org.apache.paimon.compact.CompactResult;
+import org.apache.paimon.io.DataFileMeta;
+import org.apache.paimon.mergetree.SortedRun;
 
 import java.io.IOException;
 import java.util.Collection;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/ChangelogMergeTreeRewriter.java b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/ChangelogMergeTreeRewriter.java
similarity index 91%
rename from paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/ChangelogMergeTreeRewriter.java
rename to paimon-core/src/main/java/org/apache/paimon/mergetree/compact/ChangelogMergeTreeRewriter.java
index b680b0178..e0b802632 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/ChangelogMergeTreeRewriter.java
+++ b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/ChangelogMergeTreeRewriter.java
@@ -16,17 +16,17 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.mergetree.compact;
+package org.apache.paimon.mergetree.compact;
 
 import org.apache.paimon.data.InternalRow;
 import org.apache.paimon.file.KeyValue;
-import org.apache.paimon.file.compact.CompactResult;
-import org.apache.paimon.file.io.DataFileMeta;
-import org.apache.paimon.file.io.KeyValueFileReaderFactory;
-import org.apache.paimon.file.io.KeyValueFileWriterFactory;
-import org.apache.paimon.file.io.RollingFileWriter;
-import org.apache.paimon.file.mergetree.MergeTreeReaders;
-import org.apache.paimon.file.mergetree.SortedRun;
+import org.apache.paimon.compact.CompactResult;
+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.mergetree.MergeTreeReaders;
+import org.apache.paimon.mergetree.SortedRun;
 import org.apache.paimon.reader.RecordReader;
 import org.apache.paimon.reader.RecordReaderIterator;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/ChangelogResult.java b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/ChangelogResult.java
similarity index 97%
rename from paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/ChangelogResult.java
rename to paimon-core/src/main/java/org/apache/paimon/mergetree/compact/ChangelogResult.java
index 3dfd3951b..0fd4f0eae 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/ChangelogResult.java
+++ b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/ChangelogResult.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.mergetree.compact;
+package org.apache.paimon.mergetree.compact;
 
 import org.apache.paimon.file.KeyValue;
 import org.apache.paimon.types.RowKind;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/CompactRewriter.java b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/CompactRewriter.java
similarity index 85%
rename from paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/CompactRewriter.java
rename to paimon-core/src/main/java/org/apache/paimon/mergetree/compact/CompactRewriter.java
index f7d70deb8..03ff9ed44 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/CompactRewriter.java
+++ b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/CompactRewriter.java
@@ -16,11 +16,11 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.mergetree.compact;
+package org.apache.paimon.mergetree.compact;
 
-import org.apache.paimon.file.compact.CompactResult;
-import org.apache.paimon.file.io.DataFileMeta;
-import org.apache.paimon.file.mergetree.SortedRun;
+import org.apache.paimon.compact.CompactResult;
+import org.apache.paimon.io.DataFileMeta;
+import org.apache.paimon.mergetree.SortedRun;
 
 import java.io.Closeable;
 import java.util.List;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/CompactStrategy.java b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/CompactStrategy.java
similarity index 92%
rename from paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/CompactStrategy.java
rename to paimon-core/src/main/java/org/apache/paimon/mergetree/compact/CompactStrategy.java
index 9f876445e..33d43824b 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/CompactStrategy.java
+++ b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/CompactStrategy.java
@@ -16,10 +16,10 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.mergetree.compact;
+package org.apache.paimon.mergetree.compact;
 
-import org.apache.paimon.file.compact.CompactUnit;
-import org.apache.paimon.file.mergetree.LevelSortedRun;
+import org.apache.paimon.compact.CompactUnit;
+import org.apache.paimon.mergetree.LevelSortedRun;
 
 import java.util.List;
 import java.util.Optional;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/ConcatRecordReader.java b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/ConcatRecordReader.java
similarity index 98%
rename from paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/ConcatRecordReader.java
rename to paimon-core/src/main/java/org/apache/paimon/mergetree/compact/ConcatRecordReader.java
index d194713bd..2b5bac269 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/ConcatRecordReader.java
+++ b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/ConcatRecordReader.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.mergetree.compact;
+package org.apache.paimon.mergetree.compact;
 
 import org.apache.paimon.reader.RecordReader;
 import org.apache.paimon.utils.Preconditions;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/DeduplicateMergeFunction.java b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/DeduplicateMergeFunction.java
similarity index 97%
rename from paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/DeduplicateMergeFunction.java
rename to paimon-core/src/main/java/org/apache/paimon/mergetree/compact/DeduplicateMergeFunction.java
index 81f028900..3efccb91b 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/DeduplicateMergeFunction.java
+++ b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/DeduplicateMergeFunction.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.mergetree.compact;
+package org.apache.paimon.mergetree.compact;
 
 import org.apache.paimon.file.KeyValue;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/ForceUpLevel0Compaction.java b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/ForceUpLevel0Compaction.java
similarity index 92%
rename from paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/ForceUpLevel0Compaction.java
rename to paimon-core/src/main/java/org/apache/paimon/mergetree/compact/ForceUpLevel0Compaction.java
index 412881d38..d3ec39cb6 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/ForceUpLevel0Compaction.java
+++ b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/ForceUpLevel0Compaction.java
@@ -16,10 +16,10 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.mergetree.compact;
+package org.apache.paimon.mergetree.compact;
 
-import org.apache.paimon.file.compact.CompactUnit;
-import org.apache.paimon.file.mergetree.LevelSortedRun;
+import org.apache.paimon.compact.CompactUnit;
+import org.apache.paimon.mergetree.LevelSortedRun;
 
 import java.util.List;
 import java.util.Optional;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/FullChangelogMergeFunctionWrapper.java b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/FullChangelogMergeFunctionWrapper.java
similarity index 98%
rename from paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/FullChangelogMergeFunctionWrapper.java
rename to paimon-core/src/main/java/org/apache/paimon/mergetree/compact/FullChangelogMergeFunctionWrapper.java
index ab8a78d0a..09139ce7b 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/FullChangelogMergeFunctionWrapper.java
+++ b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/FullChangelogMergeFunctionWrapper.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.mergetree.compact;
+package org.apache.paimon.mergetree.compact;
 
 import org.apache.paimon.file.KeyValue;
 import org.apache.paimon.types.RowKind;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/FullChangelogMergeTreeCompactRewriter.java b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/FullChangelogMergeTreeCompactRewriter.java
similarity index 90%
rename from paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/FullChangelogMergeTreeCompactRewriter.java
rename to paimon-core/src/main/java/org/apache/paimon/mergetree/compact/FullChangelogMergeTreeCompactRewriter.java
index e7712f1d9..d13ab10b8 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/FullChangelogMergeTreeCompactRewriter.java
+++ b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/FullChangelogMergeTreeCompactRewriter.java
@@ -16,14 +16,14 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.mergetree.compact;
+package org.apache.paimon.mergetree.compact;
 
 import org.apache.paimon.data.InternalRow;
 import org.apache.paimon.file.KeyValue;
-import org.apache.paimon.file.io.DataFileMeta;
-import org.apache.paimon.file.io.KeyValueFileReaderFactory;
-import org.apache.paimon.file.io.KeyValueFileWriterFactory;
-import org.apache.paimon.file.mergetree.SortedRun;
+import org.apache.paimon.io.DataFileMeta;
+import org.apache.paimon.io.KeyValueFileReaderFactory;
+import org.apache.paimon.io.KeyValueFileWriterFactory;
+import org.apache.paimon.mergetree.SortedRun;
 import org.apache.paimon.utils.Preconditions;
 
 import java.io.IOException;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/IntervalPartition.java b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/IntervalPartition.java
similarity index 97%
rename from paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/IntervalPartition.java
rename to paimon-core/src/main/java/org/apache/paimon/mergetree/compact/IntervalPartition.java
index 1cc28b0e0..80365b0d4 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/IntervalPartition.java
+++ b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/IntervalPartition.java
@@ -16,12 +16,12 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.mergetree.compact;
+package org.apache.paimon.mergetree.compact;
 
 import org.apache.paimon.data.BinaryRow;
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.file.io.DataFileMeta;
-import org.apache.paimon.file.mergetree.SortedRun;
+import org.apache.paimon.io.DataFileMeta;
+import org.apache.paimon.mergetree.SortedRun;
 
 import java.util.ArrayList;
 import java.util.Comparator;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/LookupChangelogMergeFunctionWrapper.java b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/LookupChangelogMergeFunctionWrapper.java
similarity index 99%
rename from paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/LookupChangelogMergeFunctionWrapper.java
rename to paimon-core/src/main/java/org/apache/paimon/mergetree/compact/LookupChangelogMergeFunctionWrapper.java
index b6284986b..0aae5fc44 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/LookupChangelogMergeFunctionWrapper.java
+++ b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/LookupChangelogMergeFunctionWrapper.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.mergetree.compact;
+package org.apache.paimon.mergetree.compact;
 
 import org.apache.paimon.data.InternalRow;
 import org.apache.paimon.file.KeyValue;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/LookupCompaction.java b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/LookupCompaction.java
similarity index 92%
rename from paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/LookupCompaction.java
rename to paimon-core/src/main/java/org/apache/paimon/mergetree/compact/LookupCompaction.java
index 6480c8d72..6434d616a 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/LookupCompaction.java
+++ b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/LookupCompaction.java
@@ -16,10 +16,10 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.mergetree.compact;
+package org.apache.paimon.mergetree.compact;
 
-import org.apache.paimon.file.compact.CompactUnit;
-import org.apache.paimon.file.mergetree.LevelSortedRun;
+import org.apache.paimon.compact.CompactUnit;
+import org.apache.paimon.mergetree.LevelSortedRun;
 
 import java.util.List;
 import java.util.Optional;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/LookupMergeFunction.java b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/LookupMergeFunction.java
similarity index 98%
rename from paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/LookupMergeFunction.java
rename to paimon-core/src/main/java/org/apache/paimon/mergetree/compact/LookupMergeFunction.java
index 639e6d20f..ab46cdabf 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/LookupMergeFunction.java
+++ b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/LookupMergeFunction.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.mergetree.compact;
+package org.apache.paimon.mergetree.compact;
 
 import org.apache.paimon.file.KeyValue;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/LookupMergeTreeCompactRewriter.java b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/LookupMergeTreeCompactRewriter.java
similarity index 90%
rename from paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/LookupMergeTreeCompactRewriter.java
rename to paimon-core/src/main/java/org/apache/paimon/mergetree/compact/LookupMergeTreeCompactRewriter.java
index 3d89a6145..6f16767da 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/LookupMergeTreeCompactRewriter.java
+++ b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/LookupMergeTreeCompactRewriter.java
@@ -16,15 +16,15 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.mergetree.compact;
+package org.apache.paimon.mergetree.compact;
 
 import org.apache.paimon.data.InternalRow;
 import org.apache.paimon.file.KeyValue;
-import org.apache.paimon.file.io.DataFileMeta;
-import org.apache.paimon.file.io.KeyValueFileReaderFactory;
-import org.apache.paimon.file.io.KeyValueFileWriterFactory;
-import org.apache.paimon.file.mergetree.LookupLevels;
-import org.apache.paimon.file.mergetree.SortedRun;
+import org.apache.paimon.io.DataFileMeta;
+import org.apache.paimon.io.KeyValueFileReaderFactory;
+import org.apache.paimon.io.KeyValueFileWriterFactory;
+import org.apache.paimon.mergetree.LookupLevels;
+import org.apache.paimon.mergetree.SortedRun;
 
 import java.io.IOException;
 import java.io.UncheckedIOException;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/MergeFunction.java b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/MergeFunction.java
similarity index 96%
rename from paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/MergeFunction.java
rename to paimon-core/src/main/java/org/apache/paimon/mergetree/compact/MergeFunction.java
index 6ce9b3fff..5e73bb65d 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/MergeFunction.java
+++ b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/MergeFunction.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.mergetree.compact;
+package org.apache.paimon.mergetree.compact;
 
 import org.apache.paimon.file.KeyValue;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/MergeFunctionFactory.java b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/MergeFunctionFactory.java
similarity index 95%
rename from paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/MergeFunctionFactory.java
rename to paimon-core/src/main/java/org/apache/paimon/mergetree/compact/MergeFunctionFactory.java
index 328453f27..73f68c19d 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/MergeFunctionFactory.java
+++ b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/MergeFunctionFactory.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.mergetree.compact;
+package org.apache.paimon.mergetree.compact;
 
 import javax.annotation.Nullable;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/MergeFunctionWrapper.java b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/MergeFunctionWrapper.java
similarity index 95%
rename from paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/MergeFunctionWrapper.java
rename to paimon-core/src/main/java/org/apache/paimon/mergetree/compact/MergeFunctionWrapper.java
index 834b4e48c..34b2fe688 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/MergeFunctionWrapper.java
+++ b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/MergeFunctionWrapper.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.mergetree.compact;
+package org.apache.paimon.mergetree.compact;
 
 import org.apache.paimon.file.KeyValue;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/MergeTreeCompactManager.java b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/MergeTreeCompactManager.java
similarity index 95%
rename from paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/MergeTreeCompactManager.java
rename to paimon-core/src/main/java/org/apache/paimon/mergetree/compact/MergeTreeCompactManager.java
index b7bd4da5a..f9ff47de6 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/MergeTreeCompactManager.java
+++ b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/MergeTreeCompactManager.java
@@ -16,16 +16,16 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.mergetree.compact;
+package org.apache.paimon.mergetree.compact;
 
 import org.apache.paimon.annotation.VisibleForTesting;
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.file.compact.CompactFutureManager;
-import org.apache.paimon.file.compact.CompactResult;
-import org.apache.paimon.file.compact.CompactUnit;
-import org.apache.paimon.file.io.DataFileMeta;
-import org.apache.paimon.file.mergetree.LevelSortedRun;
-import org.apache.paimon.file.mergetree.Levels;
+import org.apache.paimon.compact.CompactFutureManager;
+import org.apache.paimon.compact.CompactResult;
+import org.apache.paimon.compact.CompactUnit;
+import org.apache.paimon.io.DataFileMeta;
+import org.apache.paimon.mergetree.LevelSortedRun;
+import org.apache.paimon.mergetree.Levels;
 import org.apache.paimon.utils.Preconditions;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/MergeTreeCompactRewriter.java b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/MergeTreeCompactRewriter.java
similarity index 86%
rename from paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/MergeTreeCompactRewriter.java
rename to paimon-core/src/main/java/org/apache/paimon/mergetree/compact/MergeTreeCompactRewriter.java
index 05ebb7817..23dcbb1b6 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/MergeTreeCompactRewriter.java
+++ b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/MergeTreeCompactRewriter.java
@@ -16,17 +16,17 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.mergetree.compact;
+package org.apache.paimon.mergetree.compact;
 
 import org.apache.paimon.data.InternalRow;
 import org.apache.paimon.file.KeyValue;
-import org.apache.paimon.file.compact.CompactResult;
-import org.apache.paimon.file.io.DataFileMeta;
-import org.apache.paimon.file.io.KeyValueFileReaderFactory;
-import org.apache.paimon.file.io.KeyValueFileWriterFactory;
-import org.apache.paimon.file.io.RollingFileWriter;
-import org.apache.paimon.file.mergetree.MergeTreeReaders;
-import org.apache.paimon.file.mergetree.SortedRun;
+import org.apache.paimon.compact.CompactResult;
+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.mergetree.MergeTreeReaders;
+import org.apache.paimon.mergetree.SortedRun;
 import org.apache.paimon.reader.RecordReader;
 import org.apache.paimon.reader.RecordReaderIterator;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/MergeTreeCompactTask.java b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/MergeTreeCompactTask.java
similarity index 93%
rename from paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/MergeTreeCompactTask.java
rename to paimon-core/src/main/java/org/apache/paimon/mergetree/compact/MergeTreeCompactTask.java
index 4e07b0582..2f32250e1 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/MergeTreeCompactTask.java
+++ b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/MergeTreeCompactTask.java
@@ -16,14 +16,14 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.mergetree.compact;
+package org.apache.paimon.mergetree.compact;
 
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.file.compact.CompactResult;
-import org.apache.paimon.file.compact.CompactTask;
-import org.apache.paimon.file.compact.CompactUnit;
-import org.apache.paimon.file.io.DataFileMeta;
-import org.apache.paimon.file.mergetree.SortedRun;
+import org.apache.paimon.compact.CompactResult;
+import org.apache.paimon.compact.CompactTask;
+import org.apache.paimon.compact.CompactUnit;
+import org.apache.paimon.io.DataFileMeta;
+import org.apache.paimon.mergetree.SortedRun;
 
 import java.util.ArrayList;
 import java.util.Comparator;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/PartialUpdateMergeFunction.java b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/PartialUpdateMergeFunction.java
similarity index 98%
rename from paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/PartialUpdateMergeFunction.java
rename to paimon-core/src/main/java/org/apache/paimon/mergetree/compact/PartialUpdateMergeFunction.java
index 0b4d5279f..107c19c7d 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/PartialUpdateMergeFunction.java
+++ b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/PartialUpdateMergeFunction.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.mergetree.compact;
+package org.apache.paimon.mergetree.compact;
 
 import org.apache.paimon.data.GenericRow;
 import org.apache.paimon.data.InternalRow;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/ReducerMergeFunctionWrapper.java b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/ReducerMergeFunctionWrapper.java
similarity index 98%
rename from paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/ReducerMergeFunctionWrapper.java
rename to paimon-core/src/main/java/org/apache/paimon/mergetree/compact/ReducerMergeFunctionWrapper.java
index ea3e4de8e..dfbf7b972 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/ReducerMergeFunctionWrapper.java
+++ b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/ReducerMergeFunctionWrapper.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.mergetree.compact;
+package org.apache.paimon.mergetree.compact;
 
 import org.apache.paimon.file.KeyValue;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/SortMergeReader.java b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/SortMergeReader.java
similarity index 99%
rename from paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/SortMergeReader.java
rename to paimon-core/src/main/java/org/apache/paimon/mergetree/compact/SortMergeReader.java
index be2cfa7de..878446908 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/SortMergeReader.java
+++ b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/SortMergeReader.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.mergetree.compact;
+package org.apache.paimon.mergetree.compact;
 
 import org.apache.paimon.data.InternalRow;
 import org.apache.paimon.file.KeyValue;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/UniversalCompaction.java b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/UniversalCompaction.java
similarity index 96%
rename from paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/UniversalCompaction.java
rename to paimon-core/src/main/java/org/apache/paimon/mergetree/compact/UniversalCompaction.java
index 25eb8a87b..ab11b3705 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/UniversalCompaction.java
+++ b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/UniversalCompaction.java
@@ -16,12 +16,12 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.mergetree.compact;
+package org.apache.paimon.mergetree.compact;
 
 import org.apache.paimon.annotation.VisibleForTesting;
-import org.apache.paimon.file.compact.CompactUnit;
-import org.apache.paimon.file.mergetree.LevelSortedRun;
-import org.apache.paimon.file.mergetree.SortedRun;
+import org.apache.paimon.compact.CompactUnit;
+import org.apache.paimon.mergetree.LevelSortedRun;
+import org.apache.paimon.mergetree.SortedRun;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/ValueCountMergeFunction.java b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/ValueCountMergeFunction.java
similarity index 98%
rename from paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/ValueCountMergeFunction.java
rename to paimon-core/src/main/java/org/apache/paimon/mergetree/compact/ValueCountMergeFunction.java
index e8d132dfd..6ae480176 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/ValueCountMergeFunction.java
+++ b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/ValueCountMergeFunction.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.mergetree.compact;
+package org.apache.paimon.mergetree.compact;
 
 import org.apache.paimon.data.GenericRow;
 import org.apache.paimon.data.InternalRow;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/aggregate/AggregateMergeFunction.java b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/aggregate/AggregateMergeFunction.java
similarity index 96%
rename from paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/aggregate/AggregateMergeFunction.java
rename to paimon-core/src/main/java/org/apache/paimon/mergetree/compact/aggregate/AggregateMergeFunction.java
index 319f48a7e..933fd0ae1 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/aggregate/AggregateMergeFunction.java
+++ b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/aggregate/AggregateMergeFunction.java
@@ -16,13 +16,13 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.mergetree.compact.aggregate;
+package org.apache.paimon.mergetree.compact.aggregate;
 
 import org.apache.paimon.data.GenericRow;
 import org.apache.paimon.data.InternalRow;
 import org.apache.paimon.file.KeyValue;
-import org.apache.paimon.file.mergetree.compact.MergeFunction;
-import org.apache.paimon.file.mergetree.compact.MergeFunctionFactory;
+import org.apache.paimon.mergetree.compact.MergeFunction;
+import org.apache.paimon.mergetree.compact.MergeFunctionFactory;
 import org.apache.paimon.options.Options;
 import org.apache.paimon.types.DataType;
 import org.apache.paimon.types.RowKind;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/aggregate/FieldAggregator.java b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/aggregate/FieldAggregator.java
similarity index 98%
rename from paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/aggregate/FieldAggregator.java
rename to paimon-core/src/main/java/org/apache/paimon/mergetree/compact/aggregate/FieldAggregator.java
index 118f1cf8f..39bd64146 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/aggregate/FieldAggregator.java
+++ b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/aggregate/FieldAggregator.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.mergetree.compact.aggregate;
+package org.apache.paimon.mergetree.compact.aggregate;
 
 import org.apache.paimon.types.DataType;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/aggregate/FieldBoolAndAgg.java b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/aggregate/FieldBoolAndAgg.java
similarity index 96%
rename from paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/aggregate/FieldBoolAndAgg.java
rename to paimon-core/src/main/java/org/apache/paimon/mergetree/compact/aggregate/FieldBoolAndAgg.java
index ad976d58e..8731a5149 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/aggregate/FieldBoolAndAgg.java
+++ b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/aggregate/FieldBoolAndAgg.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.mergetree.compact.aggregate;
+package org.apache.paimon.mergetree.compact.aggregate;
 
 import org.apache.paimon.types.DataType;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/aggregate/FieldBoolOrAgg.java b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/aggregate/FieldBoolOrAgg.java
similarity index 96%
rename from paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/aggregate/FieldBoolOrAgg.java
rename to paimon-core/src/main/java/org/apache/paimon/mergetree/compact/aggregate/FieldBoolOrAgg.java
index fd2d0b8af..76b537381 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/aggregate/FieldBoolOrAgg.java
+++ b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/aggregate/FieldBoolOrAgg.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.mergetree.compact.aggregate;
+package org.apache.paimon.mergetree.compact.aggregate;
 
 import org.apache.paimon.types.DataType;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/aggregate/FieldIgnoreRetractAgg.java b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/aggregate/FieldIgnoreRetractAgg.java
similarity index 95%
rename from paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/aggregate/FieldIgnoreRetractAgg.java
rename to paimon-core/src/main/java/org/apache/paimon/mergetree/compact/aggregate/FieldIgnoreRetractAgg.java
index b309f2059..ccbfbd368 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/aggregate/FieldIgnoreRetractAgg.java
+++ b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/aggregate/FieldIgnoreRetractAgg.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.mergetree.compact.aggregate;
+package org.apache.paimon.mergetree.compact.aggregate;
 
 /** An aggregator which ignores retraction messages. */
 public class FieldIgnoreRetractAgg extends FieldAggregator {
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/aggregate/FieldLastNonNullValueAgg.java b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/aggregate/FieldLastNonNullValueAgg.java
similarity index 95%
rename from paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/aggregate/FieldLastNonNullValueAgg.java
rename to paimon-core/src/main/java/org/apache/paimon/mergetree/compact/aggregate/FieldLastNonNullValueAgg.java
index 00cb69ef1..0c9d3dc45 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/aggregate/FieldLastNonNullValueAgg.java
+++ b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/aggregate/FieldLastNonNullValueAgg.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.mergetree.compact.aggregate;
+package org.apache.paimon.mergetree.compact.aggregate;
 
 import org.apache.paimon.types.DataType;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/aggregate/FieldLastValueAgg.java b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/aggregate/FieldLastValueAgg.java
similarity index 95%
rename from paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/aggregate/FieldLastValueAgg.java
rename to paimon-core/src/main/java/org/apache/paimon/mergetree/compact/aggregate/FieldLastValueAgg.java
index a169df428..ad2b03bfd 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/aggregate/FieldLastValueAgg.java
+++ b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/aggregate/FieldLastValueAgg.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.mergetree.compact.aggregate;
+package org.apache.paimon.mergetree.compact.aggregate;
 
 import org.apache.paimon.types.DataType;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/aggregate/FieldListaggAgg.java b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/aggregate/FieldListaggAgg.java
similarity index 97%
rename from paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/aggregate/FieldListaggAgg.java
rename to paimon-core/src/main/java/org/apache/paimon/mergetree/compact/aggregate/FieldListaggAgg.java
index a1fad90a8..de0528d6f 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/aggregate/FieldListaggAgg.java
+++ b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/aggregate/FieldListaggAgg.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.mergetree.compact.aggregate;
+package org.apache.paimon.mergetree.compact.aggregate;
 
 import org.apache.paimon.data.BinaryString;
 import org.apache.paimon.types.DataType;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/aggregate/FieldMaxAgg.java b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/aggregate/FieldMaxAgg.java
similarity index 96%
rename from paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/aggregate/FieldMaxAgg.java
rename to paimon-core/src/main/java/org/apache/paimon/mergetree/compact/aggregate/FieldMaxAgg.java
index 07bf15ed3..4ec2a2fe7 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/aggregate/FieldMaxAgg.java
+++ b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/aggregate/FieldMaxAgg.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.mergetree.compact.aggregate;
+package org.apache.paimon.mergetree.compact.aggregate;
 
 import org.apache.paimon.types.DataType;
 import org.apache.paimon.types.DataTypeRoot;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/aggregate/FieldMinAgg.java b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/aggregate/FieldMinAgg.java
similarity index 96%
rename from paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/aggregate/FieldMinAgg.java
rename to paimon-core/src/main/java/org/apache/paimon/mergetree/compact/aggregate/FieldMinAgg.java
index 3a8804774..c350401c1 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/aggregate/FieldMinAgg.java
+++ b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/aggregate/FieldMinAgg.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.mergetree.compact.aggregate;
+package org.apache.paimon.mergetree.compact.aggregate;
 
 import org.apache.paimon.types.DataType;
 import org.apache.paimon.types.DataTypeRoot;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/aggregate/FieldPrimaryKeyAgg.java b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/aggregate/FieldPrimaryKeyAgg.java
similarity index 95%
rename from paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/aggregate/FieldPrimaryKeyAgg.java
rename to paimon-core/src/main/java/org/apache/paimon/mergetree/compact/aggregate/FieldPrimaryKeyAgg.java
index a825d9d3b..f5b39c7ce 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/aggregate/FieldPrimaryKeyAgg.java
+++ b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/aggregate/FieldPrimaryKeyAgg.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.mergetree.compact.aggregate;
+package org.apache.paimon.mergetree.compact.aggregate;
 
 import org.apache.paimon.types.DataType;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/aggregate/FieldSumAgg.java b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/aggregate/FieldSumAgg.java
similarity index 99%
rename from paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/aggregate/FieldSumAgg.java
rename to paimon-core/src/main/java/org/apache/paimon/mergetree/compact/aggregate/FieldSumAgg.java
index a54d7c9e9..47840bfae 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/mergetree/compact/aggregate/FieldSumAgg.java
+++ b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/aggregate/FieldSumAgg.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.mergetree.compact.aggregate;
+package org.apache.paimon.mergetree.compact.aggregate;
 
 import org.apache.paimon.data.Decimal;
 import org.apache.paimon.types.DataType;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/operation/AbstractFileStoreScan.java b/paimon-core/src/main/java/org/apache/paimon/operation/AbstractFileStoreScan.java
similarity index 96%
rename from paimon-core/src/main/java/org/apache/paimon/file/operation/AbstractFileStoreScan.java
rename to paimon-core/src/main/java/org/apache/paimon/operation/AbstractFileStoreScan.java
index c3e42044e..d9a8b88a1 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/operation/AbstractFileStoreScan.java
+++ b/paimon-core/src/main/java/org/apache/paimon/operation/AbstractFileStoreScan.java
@@ -16,19 +16,19 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.operation;
+package org.apache.paimon.operation;
 
 import org.apache.paimon.data.BinaryRow;
 import org.apache.paimon.file.Snapshot;
-import org.apache.paimon.file.manifest.ManifestEntry;
-import org.apache.paimon.file.manifest.ManifestFile;
-import org.apache.paimon.file.manifest.ManifestFileMeta;
-import org.apache.paimon.file.manifest.ManifestList;
-import org.apache.paimon.file.predicate.BucketSelector;
-import org.apache.paimon.file.predicate.Predicate;
-import org.apache.paimon.file.predicate.PredicateBuilder;
-import org.apache.paimon.file.schema.SchemaManager;
-import org.apache.paimon.file.schema.TableSchema;
+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.predicate.BucketSelector;
+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;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/operation/AbstractFileStoreWrite.java b/paimon-core/src/main/java/org/apache/paimon/operation/AbstractFileStoreWrite.java
similarity index 98%
rename from paimon-core/src/main/java/org/apache/paimon/file/operation/AbstractFileStoreWrite.java
rename to paimon-core/src/main/java/org/apache/paimon/operation/AbstractFileStoreWrite.java
index 6643d7337..9c671be0b 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/operation/AbstractFileStoreWrite.java
+++ b/paimon-core/src/main/java/org/apache/paimon/operation/AbstractFileStoreWrite.java
@@ -16,14 +16,14 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.operation;
+package org.apache.paimon.operation;
 
 import org.apache.paimon.annotation.VisibleForTesting;
 import org.apache.paimon.data.BinaryRow;
 import org.apache.paimon.file.Snapshot;
-import org.apache.paimon.file.disk.IOManager;
-import org.apache.paimon.file.io.DataFileMeta;
-import org.apache.paimon.file.manifest.ManifestEntry;
+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;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/operation/AppendOnlyFileStoreRead.java b/paimon-core/src/main/java/org/apache/paimon/operation/AppendOnlyFileStoreRead.java
similarity index 91%
rename from paimon-core/src/main/java/org/apache/paimon/file/operation/AppendOnlyFileStoreRead.java
rename to paimon-core/src/main/java/org/apache/paimon/operation/AppendOnlyFileStoreRead.java
index f865e493d..e94140e72 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/operation/AppendOnlyFileStoreRead.java
+++ b/paimon-core/src/main/java/org/apache/paimon/operation/AppendOnlyFileStoreRead.java
@@ -16,18 +16,18 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.operation;
+package org.apache.paimon.operation;
 
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.file.io.DataFileMeta;
-import org.apache.paimon.file.io.DataFilePathFactory;
-import org.apache.paimon.file.io.RowDataFileRecordReader;
-import org.apache.paimon.file.mergetree.compact.ConcatRecordReader;
-import org.apache.paimon.file.predicate.Predicate;
-import org.apache.paimon.file.schema.IndexCastMapping;
-import org.apache.paimon.file.schema.SchemaEvolutionUtil;
-import org.apache.paimon.file.schema.SchemaManager;
-import org.apache.paimon.file.schema.TableSchema;
+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.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;
@@ -46,7 +46,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import static org.apache.paimon.file.predicate.PredicateBuilder.splitAnd;
+import static org.apache.paimon.predicate.PredicateBuilder.splitAnd;
 
 /** {@link FileStoreRead} for {@link org.apache.paimon.file.AppendOnlyFileStore}. */
 public class AppendOnlyFileStoreRead implements FileStoreRead<InternalRow> {
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/operation/AppendOnlyFileStoreScan.java b/paimon-core/src/main/java/org/apache/paimon/operation/AppendOnlyFileStoreScan.java
similarity index 85%
rename from paimon-core/src/main/java/org/apache/paimon/file/operation/AppendOnlyFileStoreScan.java
rename to paimon-core/src/main/java/org/apache/paimon/operation/AppendOnlyFileStoreScan.java
index 17fc47e47..b7408a501 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/operation/AppendOnlyFileStoreScan.java
+++ b/paimon-core/src/main/java/org/apache/paimon/operation/AppendOnlyFileStoreScan.java
@@ -16,22 +16,22 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.operation;
+package org.apache.paimon.operation;
 
-import org.apache.paimon.file.manifest.ManifestEntry;
-import org.apache.paimon.file.manifest.ManifestFile;
-import org.apache.paimon.file.manifest.ManifestList;
-import org.apache.paimon.file.predicate.Predicate;
-import org.apache.paimon.file.schema.SchemaManager;
+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.types.RowType;
 
 import java.util.List;
 
-import static org.apache.paimon.file.predicate.PredicateBuilder.and;
-import static org.apache.paimon.file.predicate.PredicateBuilder.pickTransformFieldMapping;
-import static org.apache.paimon.file.predicate.PredicateBuilder.splitAnd;
+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}. */
 public class AppendOnlyFileStoreScan extends AbstractFileStoreScan {
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/operation/AppendOnlyFileStoreWrite.java b/paimon-core/src/main/java/org/apache/paimon/operation/AppendOnlyFileStoreWrite.java
similarity index 92%
rename from paimon-core/src/main/java/org/apache/paimon/file/operation/AppendOnlyFileStoreWrite.java
rename to paimon-core/src/main/java/org/apache/paimon/operation/AppendOnlyFileStoreWrite.java
index 1045053d1..d800ebd01 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/operation/AppendOnlyFileStoreWrite.java
+++ b/paimon-core/src/main/java/org/apache/paimon/operation/AppendOnlyFileStoreWrite.java
@@ -16,18 +16,18 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.operation;
+package org.apache.paimon.operation;
 
 import org.apache.paimon.CoreOptions;
 import org.apache.paimon.data.BinaryRow;
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.file.append.AppendOnlyCompactManager;
-import org.apache.paimon.file.append.AppendOnlyWriter;
-import org.apache.paimon.file.compact.CompactManager;
-import org.apache.paimon.file.compact.NoopCompactManager;
-import org.apache.paimon.file.io.DataFileMeta;
-import org.apache.paimon.file.io.DataFilePathFactory;
-import org.apache.paimon.file.io.RowDataRollingFileWriter;
+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.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;
@@ -46,7 +46,7 @@ import java.util.LinkedList;
 import java.util.List;
 import java.util.concurrent.ExecutorService;
 
-import static org.apache.paimon.file.io.DataFileMeta.getMaxSequenceNumber;
+import static org.apache.paimon.io.DataFileMeta.getMaxSequenceNumber;
 
 /** {@link FileStoreWrite} for {@link org.apache.paimon.file.AppendOnlyFileStore}. */
 public class AppendOnlyFileStoreWrite extends AbstractFileStoreWrite<InternalRow> {
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/operation/FileStoreCommit.java b/paimon-core/src/main/java/org/apache/paimon/operation/FileStoreCommit.java
similarity index 96%
rename from paimon-core/src/main/java/org/apache/paimon/file/operation/FileStoreCommit.java
rename to paimon-core/src/main/java/org/apache/paimon/operation/FileStoreCommit.java
index b28b5ef5e..41e69a94b 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/operation/FileStoreCommit.java
+++ b/paimon-core/src/main/java/org/apache/paimon/operation/FileStoreCommit.java
@@ -16,9 +16,9 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.operation;
+package org.apache.paimon.operation;
 
-import org.apache.paimon.file.manifest.ManifestCommittable;
+import org.apache.paimon.manifest.ManifestCommittable;
 
 import java.util.Collections;
 import java.util.List;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/operation/FileStoreCommitImpl.java b/paimon-core/src/main/java/org/apache/paimon/operation/FileStoreCommitImpl.java
similarity index 98%
rename from paimon-core/src/main/java/org/apache/paimon/file/operation/FileStoreCommitImpl.java
rename to paimon-core/src/main/java/org/apache/paimon/operation/FileStoreCommitImpl.java
index 6221a064d..36b900f0f 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/operation/FileStoreCommitImpl.java
+++ b/paimon-core/src/main/java/org/apache/paimon/operation/FileStoreCommitImpl.java
@@ -16,21 +16,21 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.operation;
+package org.apache.paimon.operation;
 
 import org.apache.paimon.data.BinaryRow;
 import org.apache.paimon.data.InternalRow;
 import org.apache.paimon.file.Snapshot;
-import org.apache.paimon.file.io.DataFileMeta;
-import org.apache.paimon.file.manifest.FileKind;
-import org.apache.paimon.file.manifest.ManifestCommittable;
-import org.apache.paimon.file.manifest.ManifestEntry;
-import org.apache.paimon.file.manifest.ManifestFile;
-import org.apache.paimon.file.manifest.ManifestFileMeta;
-import org.apache.paimon.file.manifest.ManifestList;
-import org.apache.paimon.file.predicate.Predicate;
-import org.apache.paimon.file.predicate.PredicateBuilder;
-import org.apache.paimon.file.schema.SchemaManager;
+import org.apache.paimon.io.DataFileMeta;
+import org.apache.paimon.manifest.FileKind;
+import org.apache.paimon.manifest.ManifestCommittable;
+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.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;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/operation/FileStoreExpire.java b/paimon-core/src/main/java/org/apache/paimon/operation/FileStoreExpire.java
similarity index 96%
rename from paimon-core/src/main/java/org/apache/paimon/file/operation/FileStoreExpire.java
rename to paimon-core/src/main/java/org/apache/paimon/operation/FileStoreExpire.java
index d4e51bc45..6827740ce 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/operation/FileStoreExpire.java
+++ b/paimon-core/src/main/java/org/apache/paimon/operation/FileStoreExpire.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.operation;
+package org.apache.paimon.operation;
 
 /** Expire operation which provides snapshots expire. */
 public interface FileStoreExpire {
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/operation/FileStoreExpireImpl.java b/paimon-core/src/main/java/org/apache/paimon/operation/FileStoreExpireImpl.java
similarity index 98%
rename from paimon-core/src/main/java/org/apache/paimon/file/operation/FileStoreExpireImpl.java
rename to paimon-core/src/main/java/org/apache/paimon/operation/FileStoreExpireImpl.java
index 038ddc5fc..e86580d6c 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/operation/FileStoreExpireImpl.java
+++ b/paimon-core/src/main/java/org/apache/paimon/operation/FileStoreExpireImpl.java
@@ -16,16 +16,16 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.operation;
+package org.apache.paimon.operation;
 
 import org.apache.flink.shaded.guava30.com.google.common.collect.Iterables;
 
 import org.apache.paimon.annotation.VisibleForTesting;
 import org.apache.paimon.file.Snapshot;
-import org.apache.paimon.file.manifest.ManifestEntry;
-import org.apache.paimon.file.manifest.ManifestFile;
-import org.apache.paimon.file.manifest.ManifestFileMeta;
-import org.apache.paimon.file.manifest.ManifestList;
+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;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/operation/FileStoreRead.java b/paimon-core/src/main/java/org/apache/paimon/operation/FileStoreRead.java
similarity index 93%
rename from paimon-core/src/main/java/org/apache/paimon/file/operation/FileStoreRead.java
rename to paimon-core/src/main/java/org/apache/paimon/operation/FileStoreRead.java
index ddeeb8846..2d3e121b1 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/operation/FileStoreRead.java
+++ b/paimon-core/src/main/java/org/apache/paimon/operation/FileStoreRead.java
@@ -16,9 +16,9 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.operation;
+package org.apache.paimon.operation;
 
-import org.apache.paimon.file.predicate.Predicate;
+import org.apache.paimon.predicate.Predicate;
 import org.apache.paimon.reader.RecordReader;
 import org.apache.paimon.table.source.DataSplit;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/operation/FileStoreScan.java b/paimon-core/src/main/java/org/apache/paimon/operation/FileStoreScan.java
similarity index 90%
rename from paimon-core/src/main/java/org/apache/paimon/file/operation/FileStoreScan.java
rename to paimon-core/src/main/java/org/apache/paimon/operation/FileStoreScan.java
index fec9ee8f9..93f5e6196 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/operation/FileStoreScan.java
+++ b/paimon-core/src/main/java/org/apache/paimon/operation/FileStoreScan.java
@@ -16,14 +16,14 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.operation;
+package org.apache.paimon.operation;
 
 import org.apache.paimon.data.BinaryRow;
-import org.apache.paimon.file.io.DataFileMeta;
-import org.apache.paimon.file.manifest.FileKind;
-import org.apache.paimon.file.manifest.ManifestEntry;
-import org.apache.paimon.file.manifest.ManifestFileMeta;
-import org.apache.paimon.file.predicate.Predicate;
+import org.apache.paimon.io.DataFileMeta;
+import org.apache.paimon.manifest.FileKind;
+import org.apache.paimon.manifest.ManifestEntry;
+import org.apache.paimon.manifest.ManifestFileMeta;
+import org.apache.paimon.predicate.Predicate;
 import org.apache.paimon.utils.Filter;
 
 import javax.annotation.Nullable;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/operation/FileStoreWrite.java b/paimon-core/src/main/java/org/apache/paimon/operation/FileStoreWrite.java
similarity index 96%
rename from paimon-core/src/main/java/org/apache/paimon/file/operation/FileStoreWrite.java
rename to paimon-core/src/main/java/org/apache/paimon/operation/FileStoreWrite.java
index 28a281b31..94e625729 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/operation/FileStoreWrite.java
+++ b/paimon-core/src/main/java/org/apache/paimon/operation/FileStoreWrite.java
@@ -16,12 +16,12 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.operation;
+package org.apache.paimon.operation;
 
 import org.apache.paimon.data.BinaryRow;
 import org.apache.paimon.file.FileStore;
-import org.apache.paimon.file.disk.IOManager;
-import org.apache.paimon.file.io.DataFileMeta;
+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;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/operation/KeyValueFileStoreRead.java b/paimon-core/src/main/java/org/apache/paimon/operation/KeyValueFileStoreRead.java
similarity index 89%
rename from paimon-core/src/main/java/org/apache/paimon/file/operation/KeyValueFileStoreRead.java
rename to paimon-core/src/main/java/org/apache/paimon/operation/KeyValueFileStoreRead.java
index 3ed5a28bb..de9aa5a54 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/operation/KeyValueFileStoreRead.java
+++ b/paimon-core/src/main/java/org/apache/paimon/operation/KeyValueFileStoreRead.java
@@ -16,24 +16,24 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.operation;
+package org.apache.paimon.operation;
 
 import org.apache.paimon.data.InternalRow;
 import org.apache.paimon.file.KeyValue;
-import org.apache.paimon.file.io.DataFileMeta;
-import org.apache.paimon.file.io.KeyValueFileReaderFactory;
-import org.apache.paimon.file.mergetree.DropDeleteReader;
-import org.apache.paimon.file.mergetree.MergeTreeReaders;
-import org.apache.paimon.file.mergetree.SortedRun;
-import org.apache.paimon.file.mergetree.compact.ConcatRecordReader;
-import org.apache.paimon.file.mergetree.compact.IntervalPartition;
-import org.apache.paimon.file.mergetree.compact.MergeFunctionFactory;
-import org.apache.paimon.file.mergetree.compact.MergeFunctionWrapper;
-import org.apache.paimon.file.mergetree.compact.ReducerMergeFunctionWrapper;
-import org.apache.paimon.file.predicate.Predicate;
-import org.apache.paimon.file.schema.KeyValueFieldsExtractor;
-import org.apache.paimon.file.schema.SchemaManager;
-import org.apache.paimon.file.schema.TableSchema;
+import org.apache.paimon.io.DataFileMeta;
+import org.apache.paimon.io.KeyValueFileReaderFactory;
+import org.apache.paimon.mergetree.DropDeleteReader;
+import org.apache.paimon.mergetree.MergeTreeReaders;
+import org.apache.paimon.mergetree.SortedRun;
+import org.apache.paimon.mergetree.compact.ConcatRecordReader;
+import org.apache.paimon.mergetree.compact.IntervalPartition;
+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.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;
@@ -52,9 +52,9 @@ import java.util.Optional;
 import java.util.Set;
 import java.util.stream.Collectors;
 
-import static org.apache.paimon.file.io.DataFilePathFactory.CHANGELOG_FILE_PREFIX;
-import static org.apache.paimon.file.predicate.PredicateBuilder.containsFields;
-import static org.apache.paimon.file.predicate.PredicateBuilder.splitAnd;
+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}. */
 public class KeyValueFileStoreRead implements FileStoreRead<KeyValue> {
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/operation/KeyValueFileStoreScan.java b/paimon-core/src/main/java/org/apache/paimon/operation/KeyValueFileStoreScan.java
similarity index 84%
rename from paimon-core/src/main/java/org/apache/paimon/file/operation/KeyValueFileStoreScan.java
rename to paimon-core/src/main/java/org/apache/paimon/operation/KeyValueFileStoreScan.java
index d4fca2cf7..07a0fd672 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/operation/KeyValueFileStoreScan.java
+++ b/paimon-core/src/main/java/org/apache/paimon/operation/KeyValueFileStoreScan.java
@@ -16,23 +16,23 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.operation;
+package org.apache.paimon.operation;
 
-import org.apache.paimon.file.manifest.ManifestEntry;
-import org.apache.paimon.file.manifest.ManifestFile;
-import org.apache.paimon.file.manifest.ManifestList;
-import org.apache.paimon.file.predicate.Predicate;
-import org.apache.paimon.file.schema.KeyValueFieldsExtractor;
-import org.apache.paimon.file.schema.SchemaManager;
+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.types.RowType;
 
 import java.util.List;
 
-import static org.apache.paimon.file.predicate.PredicateBuilder.and;
-import static org.apache.paimon.file.predicate.PredicateBuilder.pickTransformFieldMapping;
-import static org.apache.paimon.file.predicate.PredicateBuilder.splitAnd;
+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}. */
 public class KeyValueFileStoreScan extends AbstractFileStoreScan {
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/operation/KeyValueFileStoreWrite.java b/paimon-core/src/main/java/org/apache/paimon/operation/KeyValueFileStoreWrite.java
similarity index 87%
rename from paimon-core/src/main/java/org/apache/paimon/file/operation/KeyValueFileStoreWrite.java
rename to paimon-core/src/main/java/org/apache/paimon/operation/KeyValueFileStoreWrite.java
index 7a8c58b95..5a827c6ad 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/operation/KeyValueFileStoreWrite.java
+++ b/paimon-core/src/main/java/org/apache/paimon/operation/KeyValueFileStoreWrite.java
@@ -16,32 +16,32 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.operation;
+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.file.compact.CompactManager;
-import org.apache.paimon.file.compact.NoopCompactManager;
-import org.apache.paimon.file.io.DataFileMeta;
-import org.apache.paimon.file.io.KeyValueFileReaderFactory;
-import org.apache.paimon.file.io.KeyValueFileWriterFactory;
-import org.apache.paimon.file.mergetree.Levels;
-import org.apache.paimon.file.mergetree.LookupLevels;
-import org.apache.paimon.file.mergetree.MergeTreeWriter;
-import org.apache.paimon.file.mergetree.compact.CompactRewriter;
-import org.apache.paimon.file.mergetree.compact.CompactStrategy;
-import org.apache.paimon.file.mergetree.compact.FullChangelogMergeTreeCompactRewriter;
-import org.apache.paimon.file.mergetree.compact.LookupCompaction;
-import org.apache.paimon.file.mergetree.compact.LookupMergeTreeCompactRewriter;
-import org.apache.paimon.file.mergetree.compact.MergeFunctionFactory;
-import org.apache.paimon.file.mergetree.compact.MergeTreeCompactManager;
-import org.apache.paimon.file.mergetree.compact.MergeTreeCompactRewriter;
-import org.apache.paimon.file.mergetree.compact.UniversalCompaction;
-import org.apache.paimon.file.schema.KeyValueFieldsExtractor;
-import org.apache.paimon.file.schema.SchemaManager;
+import org.apache.paimon.compact.CompactManager;
+import org.apache.paimon.compact.NoopCompactManager;
+import org.apache.paimon.io.DataFileMeta;
+import org.apache.paimon.io.KeyValueFileReaderFactory;
+import org.apache.paimon.io.KeyValueFileWriterFactory;
+import org.apache.paimon.mergetree.Levels;
+import org.apache.paimon.mergetree.LookupLevels;
+import org.apache.paimon.mergetree.MergeTreeWriter;
+import org.apache.paimon.mergetree.compact.CompactRewriter;
+import org.apache.paimon.mergetree.compact.CompactStrategy;
+import org.apache.paimon.mergetree.compact.FullChangelogMergeTreeCompactRewriter;
+import org.apache.paimon.mergetree.compact.LookupCompaction;
+import org.apache.paimon.mergetree.compact.LookupMergeTreeCompactRewriter;
+import org.apache.paimon.mergetree.compact.MergeFunctionFactory;
+import org.apache.paimon.mergetree.compact.MergeTreeCompactManager;
+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;
@@ -59,7 +59,7 @@ import java.util.List;
 import java.util.concurrent.ExecutorService;
 import java.util.function.Supplier;
 
-import static org.apache.paimon.file.io.DataFileMeta.getMaxSequenceNumber;
+import static org.apache.paimon.io.DataFileMeta.getMaxSequenceNumber;
 
 /** {@link FileStoreWrite} for {@link org.apache.paimon.file.KeyValueFileStore}. */
 public class KeyValueFileStoreWrite extends MemoryFileStoreWrite<KeyValue> {
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/operation/Lock.java b/paimon-core/src/main/java/org/apache/paimon/operation/Lock.java
similarity index 96%
rename from paimon-core/src/main/java/org/apache/paimon/file/operation/Lock.java
rename to paimon-core/src/main/java/org/apache/paimon/operation/Lock.java
index e6ad69897..606ebf249 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/operation/Lock.java
+++ b/paimon-core/src/main/java/org/apache/paimon/operation/Lock.java
@@ -16,11 +16,11 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.operation;
+package org.apache.paimon.operation;
 
 import org.apache.paimon.annotation.Experimental;
-import org.apache.paimon.file.catalog.CatalogLock;
-import org.apache.paimon.file.catalog.Identifier;
+import org.apache.paimon.catalog.CatalogLock;
+import org.apache.paimon.catalog.Identifier;
 
 import javax.annotation.Nullable;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/operation/MemoryFileStoreWrite.java b/paimon-core/src/main/java/org/apache/paimon/operation/MemoryFileStoreWrite.java
similarity index 94%
rename from paimon-core/src/main/java/org/apache/paimon/file/operation/MemoryFileStoreWrite.java
rename to paimon-core/src/main/java/org/apache/paimon/operation/MemoryFileStoreWrite.java
index eebec155a..b7b07129b 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/operation/MemoryFileStoreWrite.java
+++ b/paimon-core/src/main/java/org/apache/paimon/operation/MemoryFileStoreWrite.java
@@ -16,14 +16,14 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.operation;
+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.file.memory.HeapMemorySegmentPool;
-import org.apache.paimon.file.memory.MemoryOwner;
-import org.apache.paimon.file.memory.MemoryPoolFactory;
+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;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/operation/PartitionExpire.java b/paimon-core/src/main/java/org/apache/paimon/operation/PartitionExpire.java
similarity index 95%
rename from paimon-core/src/main/java/org/apache/paimon/file/operation/PartitionExpire.java
rename to paimon-core/src/main/java/org/apache/paimon/operation/PartitionExpire.java
index 3bfbb026e..74c5eca48 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/operation/PartitionExpire.java
+++ b/paimon-core/src/main/java/org/apache/paimon/operation/PartitionExpire.java
@@ -16,13 +16,13 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.operation;
+package org.apache.paimon.operation;
 
 import org.apache.paimon.annotation.VisibleForTesting;
 import org.apache.paimon.data.BinaryRow;
-import org.apache.paimon.file.manifest.ManifestCommittable;
-import org.apache.paimon.file.manifest.ManifestEntry;
-import org.apache.paimon.file.partition.PartitionTimeExtractor;
+import org.apache.paimon.manifest.ManifestCommittable;
+import org.apache.paimon.manifest.ManifestEntry;
+import org.apache.paimon.partition.PartitionTimeExtractor;
 import org.apache.paimon.types.RowType;
 import org.apache.paimon.utils.RowDataToObjectArrayConverter;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/operation/ReverseReader.java b/paimon-core/src/main/java/org/apache/paimon/operation/ReverseReader.java
similarity index 98%
rename from paimon-core/src/main/java/org/apache/paimon/file/operation/ReverseReader.java
rename to paimon-core/src/main/java/org/apache/paimon/operation/ReverseReader.java
index 86e875691..b821f79a3 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/operation/ReverseReader.java
+++ b/paimon-core/src/main/java/org/apache/paimon/operation/ReverseReader.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.operation;
+package org.apache.paimon.operation;
 
 import org.apache.paimon.file.KeyValue;
 import org.apache.paimon.reader.RecordReader;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/operation/ScanKind.java b/paimon-core/src/main/java/org/apache/paimon/operation/ScanKind.java
similarity index 96%
rename from paimon-core/src/main/java/org/apache/paimon/file/operation/ScanKind.java
rename to paimon-core/src/main/java/org/apache/paimon/operation/ScanKind.java
index 3fb3c1216..7d0818aaa 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/operation/ScanKind.java
+++ b/paimon-core/src/main/java/org/apache/paimon/operation/ScanKind.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.operation;
+package org.apache.paimon.operation;
 
 /** Scan which part of the snapshot. */
 public enum ScanKind {
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/partition/PartitionTimeExtractor.java b/paimon-core/src/main/java/org/apache/paimon/partition/PartitionTimeExtractor.java
similarity index 99%
rename from paimon-core/src/main/java/org/apache/paimon/file/partition/PartitionTimeExtractor.java
rename to paimon-core/src/main/java/org/apache/paimon/partition/PartitionTimeExtractor.java
index 90b670d85..7b6fe5ece 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/partition/PartitionTimeExtractor.java
+++ b/paimon-core/src/main/java/org/apache/paimon/partition/PartitionTimeExtractor.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.partition;
+package org.apache.paimon.partition;
 
 import javax.annotation.Nullable;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/predicate/BucketSelector.java b/paimon-core/src/main/java/org/apache/paimon/predicate/BucketSelector.java
similarity index 96%
rename from paimon-core/src/main/java/org/apache/paimon/file/predicate/BucketSelector.java
rename to paimon-core/src/main/java/org/apache/paimon/predicate/BucketSelector.java
index 57c4bd872..46b08b5fb 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/predicate/BucketSelector.java
+++ b/paimon-core/src/main/java/org/apache/paimon/predicate/BucketSelector.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.predicate;
+package org.apache.paimon.predicate;
 
 import org.apache.flink.shaded.guava30.com.google.common.collect.ImmutableSet;
 
@@ -40,8 +40,8 @@ import java.util.concurrent.ConcurrentHashMap;
 import java.util.function.Consumer;
 import java.util.stream.Collectors;
 
-import static org.apache.paimon.file.predicate.PredicateBuilder.splitAnd;
-import static org.apache.paimon.file.predicate.PredicateBuilder.splitOr;
+import static org.apache.paimon.predicate.PredicateBuilder.splitAnd;
+import static org.apache.paimon.predicate.PredicateBuilder.splitOr;
 
 /** Selector to select bucket from {@link Predicate}. */
 @ThreadSafe
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/schema/IndexCastMapping.java b/paimon-core/src/main/java/org/apache/paimon/schema/IndexCastMapping.java
similarity index 91%
rename from paimon-core/src/main/java/org/apache/paimon/file/schema/IndexCastMapping.java
rename to paimon-core/src/main/java/org/apache/paimon/schema/IndexCastMapping.java
index ef4edba51..03a3778ec 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/schema/IndexCastMapping.java
+++ b/paimon-core/src/main/java/org/apache/paimon/schema/IndexCastMapping.java
@@ -16,9 +16,9 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.schema;
+package org.apache.paimon.schema;
 
-import org.apache.paimon.file.casting.CastFieldGetter;
+import org.apache.paimon.casting.CastFieldGetter;
 
 import javax.annotation.Nullable;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/schema/KeyValueFieldsExtractor.java b/paimon-core/src/main/java/org/apache/paimon/schema/KeyValueFieldsExtractor.java
similarity index 97%
rename from paimon-core/src/main/java/org/apache/paimon/file/schema/KeyValueFieldsExtractor.java
rename to paimon-core/src/main/java/org/apache/paimon/schema/KeyValueFieldsExtractor.java
index 3e864684a..245c4b3a2 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/schema/KeyValueFieldsExtractor.java
+++ b/paimon-core/src/main/java/org/apache/paimon/schema/KeyValueFieldsExtractor.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.schema;
+package org.apache.paimon.schema;
 
 import org.apache.paimon.types.DataField;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/schema/Schema.java b/paimon-core/src/main/java/org/apache/paimon/schema/Schema.java
similarity index 99%
rename from paimon-core/src/main/java/org/apache/paimon/file/schema/Schema.java
rename to paimon-core/src/main/java/org/apache/paimon/schema/Schema.java
index 0c52e98e5..9d0c1feae 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/schema/Schema.java
+++ b/paimon-core/src/main/java/org/apache/paimon/schema/Schema.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.schema;
+package org.apache.paimon.schema;
 
 import org.apache.paimon.annotation.Experimental;
 import org.apache.paimon.types.DataField;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/schema/SchemaChange.java b/paimon-core/src/main/java/org/apache/paimon/schema/SchemaChange.java
similarity index 99%
rename from paimon-core/src/main/java/org/apache/paimon/file/schema/SchemaChange.java
rename to paimon-core/src/main/java/org/apache/paimon/schema/SchemaChange.java
index 10192a3b6..c7be60ba9 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/schema/SchemaChange.java
+++ b/paimon-core/src/main/java/org/apache/paimon/schema/SchemaChange.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.schema;
+package org.apache.paimon.schema;
 
 import org.apache.paimon.annotation.Experimental;
 import org.apache.paimon.types.DataType;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/schema/SchemaEvolutionUtil.java b/paimon-core/src/main/java/org/apache/paimon/schema/SchemaEvolutionUtil.java
similarity index 98%
rename from paimon-core/src/main/java/org/apache/paimon/file/schema/SchemaEvolutionUtil.java
rename to paimon-core/src/main/java/org/apache/paimon/schema/SchemaEvolutionUtil.java
index 0953faab3..79b26441c 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/schema/SchemaEvolutionUtil.java
+++ b/paimon-core/src/main/java/org/apache/paimon/schema/SchemaEvolutionUtil.java
@@ -16,16 +16,16 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.schema;
+package org.apache.paimon.schema;
 
 import org.apache.paimon.data.InternalRow;
 import org.apache.paimon.file.KeyValue;
-import org.apache.paimon.file.casting.CastExecutor;
-import org.apache.paimon.file.casting.CastExecutors;
-import org.apache.paimon.file.casting.CastFieldGetter;
-import org.apache.paimon.file.predicate.LeafPredicate;
-import org.apache.paimon.file.predicate.Predicate;
-import org.apache.paimon.file.predicate.PredicateReplaceVisitor;
+import org.apache.paimon.casting.CastExecutor;
+import org.apache.paimon.casting.CastExecutors;
+import org.apache.paimon.casting.CastFieldGetter;
+import org.apache.paimon.predicate.LeafPredicate;
+import org.apache.paimon.predicate.Predicate;
+import org.apache.paimon.predicate.PredicateReplaceVisitor;
 import org.apache.paimon.types.ArrayType;
 import org.apache.paimon.types.DataField;
 import org.apache.paimon.types.DataType;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/schema/SchemaManager.java b/paimon-core/src/main/java/org/apache/paimon/schema/SchemaManager.java
similarity index 96%
rename from paimon-core/src/main/java/org/apache/paimon/file/schema/SchemaManager.java
rename to paimon-core/src/main/java/org/apache/paimon/schema/SchemaManager.java
index 617210e68..a48ecc0f0 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/schema/SchemaManager.java
+++ b/paimon-core/src/main/java/org/apache/paimon/schema/SchemaManager.java
@@ -16,21 +16,21 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.schema;
+package org.apache.paimon.schema;
 
 import org.apache.paimon.CoreOptions;
 import org.apache.paimon.annotation.VisibleForTesting;
-import org.apache.paimon.file.casting.CastExecutors;
-import org.apache.paimon.file.operation.Lock;
-import org.apache.paimon.file.schema.SchemaChange.AddColumn;
-import org.apache.paimon.file.schema.SchemaChange.DropColumn;
-import org.apache.paimon.file.schema.SchemaChange.RemoveOption;
-import org.apache.paimon.file.schema.SchemaChange.RenameColumn;
-import org.apache.paimon.file.schema.SchemaChange.SetOption;
-import org.apache.paimon.file.schema.SchemaChange.UpdateColumnComment;
-import org.apache.paimon.file.schema.SchemaChange.UpdateColumnNullability;
-import org.apache.paimon.file.schema.SchemaChange.UpdateColumnPosition;
-import org.apache.paimon.file.schema.SchemaChange.UpdateColumnType;
+import org.apache.paimon.casting.CastExecutors;
+import org.apache.paimon.operation.Lock;
+import org.apache.paimon.schema.SchemaChange.AddColumn;
+import org.apache.paimon.schema.SchemaChange.DropColumn;
+import org.apache.paimon.schema.SchemaChange.RemoveOption;
+import org.apache.paimon.schema.SchemaChange.RenameColumn;
+import org.apache.paimon.schema.SchemaChange.SetOption;
+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;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/schema/SchemaSerializer.java b/paimon-core/src/main/java/org/apache/paimon/schema/SchemaSerializer.java
similarity index 99%
rename from paimon-core/src/main/java/org/apache/paimon/file/schema/SchemaSerializer.java
rename to paimon-core/src/main/java/org/apache/paimon/schema/SchemaSerializer.java
index d2700ac88..69409f7d6 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/schema/SchemaSerializer.java
+++ b/paimon-core/src/main/java/org/apache/paimon/schema/SchemaSerializer.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.schema;
+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;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/schema/SchemaValidation.java b/paimon-core/src/main/java/org/apache/paimon/schema/SchemaValidation.java
similarity index 97%
rename from paimon-core/src/main/java/org/apache/paimon/file/schema/SchemaValidation.java
rename to paimon-core/src/main/java/org/apache/paimon/schema/SchemaValidation.java
index a3d9072a2..e8c29fae0 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/schema/SchemaValidation.java
+++ b/paimon-core/src/main/java/org/apache/paimon/schema/SchemaValidation.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.schema;
+package org.apache.paimon.schema;
 
 import org.apache.paimon.CoreOptions;
 import org.apache.paimon.file.WriteMode;
@@ -41,8 +41,8 @@ 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.file.schema.SystemColumns.KEY_FIELD_PREFIX;
-import static org.apache.paimon.file.schema.SystemColumns.SYSTEM_FIELD_NAMES;
+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;
 import static org.apache.paimon.utils.Preconditions.checkState;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/schema/SystemColumns.java b/paimon-core/src/main/java/org/apache/paimon/schema/SystemColumns.java
similarity index 97%
rename from paimon-core/src/main/java/org/apache/paimon/file/schema/SystemColumns.java
rename to paimon-core/src/main/java/org/apache/paimon/schema/SystemColumns.java
index 0ebd8cd01..f45960706 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/schema/SystemColumns.java
+++ b/paimon-core/src/main/java/org/apache/paimon/schema/SystemColumns.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.schema;
+package org.apache.paimon.schema;
 
 import java.util.Arrays;
 import java.util.List;
diff --git a/paimon-core/src/main/java/org/apache/paimon/file/schema/TableSchema.java b/paimon-core/src/main/java/org/apache/paimon/schema/TableSchema.java
similarity index 99%
rename from paimon-core/src/main/java/org/apache/paimon/file/schema/TableSchema.java
rename to paimon-core/src/main/java/org/apache/paimon/schema/TableSchema.java
index 88be03940..bbfafe347 100644
--- a/paimon-core/src/main/java/org/apache/paimon/file/schema/TableSchema.java
+++ b/paimon-core/src/main/java/org/apache/paimon/schema/TableSchema.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.schema;
+package org.apache.paimon.schema;
 
 import org.apache.paimon.file.utils.JsonSerdeUtil;
 import org.apache.paimon.types.DataField;
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 6bb9b03a9..bb558aae0 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
@@ -21,11 +21,11 @@ package org.apache.paimon.table;
 import org.apache.paimon.CoreOptions;
 import org.apache.paimon.annotation.VisibleForTesting;
 import org.apache.paimon.file.FileStore;
-import org.apache.paimon.file.operation.FileStoreScan;
-import org.apache.paimon.file.predicate.Predicate;
-import org.apache.paimon.file.schema.SchemaManager;
-import org.apache.paimon.file.schema.SchemaValidation;
-import org.apache.paimon.file.schema.TableSchema;
+import org.apache.paimon.operation.FileStoreScan;
+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;
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 b02738f0d..172d9a752 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
@@ -22,12 +22,12 @@ import org.apache.paimon.CoreOptions;
 import org.apache.paimon.data.InternalRow;
 import org.apache.paimon.file.AppendOnlyFileStore;
 import org.apache.paimon.file.WriteMode;
-import org.apache.paimon.file.operation.AppendOnlyFileStoreRead;
-import org.apache.paimon.file.operation.AppendOnlyFileStoreScan;
-import org.apache.paimon.file.operation.FileStoreScan;
-import org.apache.paimon.file.operation.ReverseReader;
-import org.apache.paimon.file.predicate.Predicate;
-import org.apache.paimon.file.schema.TableSchema;
+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;
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 05b0ca3ba..766373086 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
@@ -24,14 +24,14 @@ 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.file.io.DataFileMeta;
-import org.apache.paimon.file.mergetree.compact.ValueCountMergeFunction;
-import org.apache.paimon.file.operation.FileStoreScan;
-import org.apache.paimon.file.operation.KeyValueFileStoreScan;
-import org.apache.paimon.file.operation.ReverseReader;
-import org.apache.paimon.file.predicate.Predicate;
-import org.apache.paimon.file.schema.KeyValueFieldsExtractor;
-import org.apache.paimon.file.schema.TableSchema;
+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.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;
@@ -52,7 +52,7 @@ import java.util.Collections;
 import java.util.List;
 import java.util.function.BiConsumer;
 
-import static org.apache.paimon.file.schema.SystemColumns.VALUE_COUNT;
+import static org.apache.paimon.schema.SystemColumns.VALUE_COUNT;
 
 /** {@link FileStoreTable} for {@link WriteMode#CHANGE_LOG} write mode without primary keys. */
 public class ChangelogValueCountFileStoreTable extends AbstractFileStoreTable {
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 72f6edeeb..283e566d4 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
@@ -24,16 +24,16 @@ 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.file.mergetree.compact.DeduplicateMergeFunction;
-import org.apache.paimon.file.mergetree.compact.LookupMergeFunction;
-import org.apache.paimon.file.mergetree.compact.MergeFunctionFactory;
-import org.apache.paimon.file.mergetree.compact.PartialUpdateMergeFunction;
-import org.apache.paimon.file.mergetree.compact.aggregate.AggregateMergeFunction;
-import org.apache.paimon.file.operation.FileStoreScan;
-import org.apache.paimon.file.operation.KeyValueFileStoreScan;
-import org.apache.paimon.file.predicate.Predicate;
-import org.apache.paimon.file.schema.KeyValueFieldsExtractor;
-import org.apache.paimon.file.schema.TableSchema;
+import org.apache.paimon.mergetree.compact.DeduplicateMergeFunction;
+import org.apache.paimon.mergetree.compact.LookupMergeFunction;
+import org.apache.paimon.mergetree.compact.MergeFunctionFactory;
+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.predicate.Predicate;
+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;
@@ -53,10 +53,10 @@ import java.util.List;
 import java.util.function.BiConsumer;
 import java.util.stream.Collectors;
 
-import static org.apache.paimon.file.predicate.PredicateBuilder.and;
-import static org.apache.paimon.file.predicate.PredicateBuilder.pickTransformFieldMapping;
-import static org.apache.paimon.file.predicate.PredicateBuilder.splitAnd;
-import static org.apache.paimon.file.schema.SystemColumns.KEY_FIELD_PREFIX;
+import static org.apache.paimon.predicate.PredicateBuilder.and;
+import static org.apache.paimon.predicate.PredicateBuilder.pickTransformFieldMapping;
+import static org.apache.paimon.predicate.PredicateBuilder.splitAnd;
+import static org.apache.paimon.schema.SystemColumns.KEY_FIELD_PREFIX;
 
 /** {@link FileStoreTable} for {@link WriteMode#CHANGE_LOG} write mode with primary keys. */
 public class ChangelogWithKeyFileStoreTable extends AbstractFileStoreTable {
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 56db62f40..6a2ab28dd 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
@@ -19,8 +19,8 @@
 package org.apache.paimon.table;
 
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.file.io.DataFileMeta;
-import org.apache.paimon.file.schema.TableSchema;
+import org.apache.paimon.io.DataFileMeta;
+import org.apache.paimon.schema.TableSchema;
 import org.apache.paimon.file.stats.BinaryTableStats;
 import org.apache.paimon.table.sink.TableCommitImpl;
 import org.apache.paimon.table.sink.TableWriteImpl;
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 93bcdc2d7..bfffdaa66 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
@@ -22,8 +22,8 @@ import org.apache.flink.table.store.catalog.CatalogContext;
 
 import org.apache.paimon.CoreOptions;
 import org.apache.paimon.file.WriteMode;
-import org.apache.paimon.file.schema.SchemaManager;
-import org.apache.paimon.file.schema.TableSchema;
+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.Options;
diff --git a/paimon-core/src/main/java/org/apache/paimon/table/TableUtils.java b/paimon-core/src/main/java/org/apache/paimon/table/TableUtils.java
index 2c189afd5..c494129a0 100644
--- a/paimon-core/src/main/java/org/apache/paimon/table/TableUtils.java
+++ b/paimon-core/src/main/java/org/apache/paimon/table/TableUtils.java
@@ -19,9 +19,9 @@
 package org.apache.paimon.table;
 
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.file.operation.Lock;
-import org.apache.paimon.file.predicate.Predicate;
-import org.apache.paimon.file.predicate.PredicateFilter;
+import org.apache.paimon.operation.Lock;
+import org.apache.paimon.predicate.Predicate;
+import org.apache.paimon.predicate.PredicateFilter;
 import org.apache.paimon.reader.RecordReader;
 import org.apache.paimon.table.sink.BatchTableCommit;
 import org.apache.paimon.table.sink.BatchTableWrite;
diff --git a/paimon-core/src/main/java/org/apache/paimon/table/sink/BucketComputer.java b/paimon-core/src/main/java/org/apache/paimon/table/sink/BucketComputer.java
index 658569d3a..ea17ea0cb 100644
--- a/paimon-core/src/main/java/org/apache/paimon/table/sink/BucketComputer.java
+++ b/paimon-core/src/main/java/org/apache/paimon/table/sink/BucketComputer.java
@@ -23,7 +23,7 @@ import org.apache.paimon.codegen.CodeGenUtils;
 import org.apache.paimon.codegen.Projection;
 import org.apache.paimon.data.BinaryRow;
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.file.schema.TableSchema;
+import org.apache.paimon.schema.TableSchema;
 import org.apache.paimon.types.RowKind;
 import org.apache.paimon.types.RowType;
 
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 f531f669a..48c3e92c4 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
@@ -19,8 +19,8 @@
 package org.apache.paimon.table.sink;
 
 import org.apache.paimon.data.BinaryRow;
-import org.apache.paimon.file.io.CompactIncrement;
-import org.apache.paimon.file.io.NewFilesIncrement;
+import org.apache.paimon.io.CompactIncrement;
+import org.apache.paimon.io.NewFilesIncrement;
 import org.apache.paimon.io.DataInputViewStreamWrapper;
 import org.apache.paimon.io.DataOutputViewStreamWrapper;
 
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 0590e0574..5ec938386 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
@@ -19,9 +19,9 @@
 package org.apache.paimon.table.sink;
 
 import org.apache.paimon.data.serializer.VersionedSerializer;
-import org.apache.paimon.file.io.CompactIncrement;
-import org.apache.paimon.file.io.DataFileMetaSerializer;
-import org.apache.paimon.file.io.NewFilesIncrement;
+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;
diff --git a/paimon-core/src/main/java/org/apache/paimon/table/sink/InnerTableCommit.java b/paimon-core/src/main/java/org/apache/paimon/table/sink/InnerTableCommit.java
index c6675e0e2..2f4e5430c 100644
--- a/paimon-core/src/main/java/org/apache/paimon/table/sink/InnerTableCommit.java
+++ b/paimon-core/src/main/java/org/apache/paimon/table/sink/InnerTableCommit.java
@@ -18,7 +18,7 @@
 
 package org.apache.paimon.table.sink;
 
-import org.apache.paimon.file.operation.Lock;
+import org.apache.paimon.operation.Lock;
 
 import javax.annotation.Nullable;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/table/sink/PartitionComputer.java b/paimon-core/src/main/java/org/apache/paimon/table/sink/PartitionComputer.java
index d7194ae52..5858160d1 100644
--- a/paimon-core/src/main/java/org/apache/paimon/table/sink/PartitionComputer.java
+++ b/paimon-core/src/main/java/org/apache/paimon/table/sink/PartitionComputer.java
@@ -22,7 +22,7 @@ import org.apache.paimon.codegen.CodeGenUtils;
 import org.apache.paimon.codegen.Projection;
 import org.apache.paimon.data.BinaryRow;
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.file.schema.TableSchema;
+import org.apache.paimon.schema.TableSchema;
 import org.apache.paimon.types.RowType;
 
 /** A {@link PartitionComputer} to compute partition by partition keys. */
diff --git a/paimon-core/src/main/java/org/apache/paimon/table/sink/SinkRecordConverter.java b/paimon-core/src/main/java/org/apache/paimon/table/sink/SinkRecordConverter.java
index 7926f44e7..e55311063 100644
--- a/paimon-core/src/main/java/org/apache/paimon/table/sink/SinkRecordConverter.java
+++ b/paimon-core/src/main/java/org/apache/paimon/table/sink/SinkRecordConverter.java
@@ -22,7 +22,7 @@ import org.apache.paimon.codegen.CodeGenUtils;
 import org.apache.paimon.codegen.Projection;
 import org.apache.paimon.data.BinaryRow;
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.file.schema.TableSchema;
+import org.apache.paimon.schema.TableSchema;
 import org.apache.paimon.types.RowType;
 
 import javax.annotation.Nullable;
diff --git a/paimon-core/src/main/java/org/apache/paimon/table/sink/TableCommitImpl.java b/paimon-core/src/main/java/org/apache/paimon/table/sink/TableCommitImpl.java
index f149b443c..190e5f863 100644
--- a/paimon-core/src/main/java/org/apache/paimon/table/sink/TableCommitImpl.java
+++ b/paimon-core/src/main/java/org/apache/paimon/table/sink/TableCommitImpl.java
@@ -18,11 +18,11 @@
 
 package org.apache.paimon.table.sink;
 
-import org.apache.paimon.file.manifest.ManifestCommittable;
-import org.apache.paimon.file.operation.FileStoreCommit;
-import org.apache.paimon.file.operation.FileStoreExpire;
-import org.apache.paimon.file.operation.Lock;
-import org.apache.paimon.file.operation.PartitionExpire;
+import org.apache.paimon.manifest.ManifestCommittable;
+import org.apache.paimon.operation.FileStoreCommit;
+import org.apache.paimon.operation.FileStoreExpire;
+import org.apache.paimon.operation.Lock;
+import org.apache.paimon.operation.PartitionExpire;
 
 import javax.annotation.Nullable;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/table/sink/TableWrite.java b/paimon-core/src/main/java/org/apache/paimon/table/sink/TableWrite.java
index dedc5c7ad..7fcc20c78 100644
--- a/paimon-core/src/main/java/org/apache/paimon/table/sink/TableWrite.java
+++ b/paimon-core/src/main/java/org/apache/paimon/table/sink/TableWrite.java
@@ -21,7 +21,7 @@ package org.apache.paimon.table.sink;
 import org.apache.paimon.annotation.Experimental;
 import org.apache.paimon.data.BinaryRow;
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.file.disk.IOManager;
+import org.apache.paimon.disk.IOManager;
 import org.apache.paimon.table.Table;
 
 /**
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 c95e925e5..34489edbf 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
@@ -20,10 +20,10 @@ package org.apache.paimon.table.sink;
 
 import org.apache.paimon.data.BinaryRow;
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.file.disk.IOManager;
-import org.apache.paimon.file.io.DataFileMeta;
-import org.apache.paimon.file.operation.AbstractFileStoreWrite;
-import org.apache.paimon.file.operation.FileStoreWrite;
+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 java.util.List;
diff --git a/paimon-core/src/main/java/org/apache/paimon/table/source/AbstractDataTableScan.java b/paimon-core/src/main/java/org/apache/paimon/table/source/AbstractDataTableScan.java
index 1f6701696..eb5604209 100644
--- a/paimon-core/src/main/java/org/apache/paimon/table/source/AbstractDataTableScan.java
+++ b/paimon-core/src/main/java/org/apache/paimon/table/source/AbstractDataTableScan.java
@@ -20,9 +20,9 @@ package org.apache.paimon.table.source;
 
 import org.apache.paimon.CoreOptions;
 import org.apache.paimon.annotation.VisibleForTesting;
-import org.apache.paimon.file.operation.FileStoreScan;
-import org.apache.paimon.file.operation.ScanKind;
-import org.apache.paimon.file.predicate.Predicate;
+import org.apache.paimon.operation.FileStoreScan;
+import org.apache.paimon.operation.ScanKind;
+import org.apache.paimon.predicate.Predicate;
 import org.apache.paimon.table.source.snapshot.CompactedStartingScanner;
 import org.apache.paimon.table.source.snapshot.ContinuousFromSnapshotStartingScanner;
 import org.apache.paimon.table.source.snapshot.ContinuousFromTimestampStartingScanner;
diff --git a/paimon-core/src/main/java/org/apache/paimon/table/source/AppendOnlySplitGenerator.java b/paimon-core/src/main/java/org/apache/paimon/table/source/AppendOnlySplitGenerator.java
index d2e47f5e6..051b3292f 100644
--- a/paimon-core/src/main/java/org/apache/paimon/table/source/AppendOnlySplitGenerator.java
+++ b/paimon-core/src/main/java/org/apache/paimon/table/source/AppendOnlySplitGenerator.java
@@ -18,7 +18,7 @@
 
 package org.apache.paimon.table.source;
 
-import org.apache.paimon.file.io.DataFileMeta;
+import org.apache.paimon.io.DataFileMeta;
 import org.apache.paimon.utils.OrderedPacking;
 
 import java.util.List;
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 28b30c502..d7893015f 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
@@ -19,8 +19,8 @@
 package org.apache.paimon.table.source;
 
 import org.apache.paimon.data.BinaryRow;
-import org.apache.paimon.file.io.DataFileMeta;
-import org.apache.paimon.file.io.DataFileMetaSerializer;
+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;
diff --git a/paimon-core/src/main/java/org/apache/paimon/table/source/DataTableScan.java b/paimon-core/src/main/java/org/apache/paimon/table/source/DataTableScan.java
index 50105827a..066f0fb1b 100644
--- a/paimon-core/src/main/java/org/apache/paimon/table/source/DataTableScan.java
+++ b/paimon-core/src/main/java/org/apache/paimon/table/source/DataTableScan.java
@@ -19,8 +19,8 @@
 package org.apache.paimon.table.source;
 
 import org.apache.paimon.annotation.VisibleForTesting;
-import org.apache.paimon.file.operation.ScanKind;
-import org.apache.paimon.file.predicate.Predicate;
+import org.apache.paimon.operation.ScanKind;
+import org.apache.paimon.predicate.Predicate;
 import org.apache.paimon.utils.Filter;
 
 import javax.annotation.Nullable;
diff --git a/paimon-core/src/main/java/org/apache/paimon/table/source/InnerTableRead.java b/paimon-core/src/main/java/org/apache/paimon/table/source/InnerTableRead.java
index 47829e634..b1bdb9d52 100644
--- a/paimon-core/src/main/java/org/apache/paimon/table/source/InnerTableRead.java
+++ b/paimon-core/src/main/java/org/apache/paimon/table/source/InnerTableRead.java
@@ -18,8 +18,8 @@
 
 package org.apache.paimon.table.source;
 
-import org.apache.paimon.file.predicate.Predicate;
-import org.apache.paimon.file.predicate.PredicateBuilder;
+import org.apache.paimon.predicate.Predicate;
+import org.apache.paimon.predicate.PredicateBuilder;
 
 import java.util.Arrays;
 import java.util.List;
diff --git a/paimon-core/src/main/java/org/apache/paimon/table/source/InnerTableScan.java b/paimon-core/src/main/java/org/apache/paimon/table/source/InnerTableScan.java
index a995ab293..8c485743e 100644
--- a/paimon-core/src/main/java/org/apache/paimon/table/source/InnerTableScan.java
+++ b/paimon-core/src/main/java/org/apache/paimon/table/source/InnerTableScan.java
@@ -18,8 +18,8 @@
 
 package org.apache.paimon.table.source;
 
-import org.apache.paimon.file.predicate.Predicate;
-import org.apache.paimon.file.predicate.PredicateBuilder;
+import org.apache.paimon.predicate.Predicate;
+import org.apache.paimon.predicate.PredicateBuilder;
 
 import java.util.List;
 
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 9c4f424fb..b839561a0 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
@@ -20,7 +20,7 @@ package org.apache.paimon.table.source;
 
 import org.apache.paimon.data.InternalRow;
 import org.apache.paimon.file.KeyValue;
-import org.apache.paimon.file.operation.KeyValueFileStoreRead;
+import org.apache.paimon.operation.KeyValueFileStoreRead;
 import org.apache.paimon.reader.RecordReader;
 
 import javax.annotation.Nullable;
diff --git a/paimon-core/src/main/java/org/apache/paimon/table/source/MergeTreeSplitGenerator.java b/paimon-core/src/main/java/org/apache/paimon/table/source/MergeTreeSplitGenerator.java
index bace23d6b..f5f1cc39c 100644
--- a/paimon-core/src/main/java/org/apache/paimon/table/source/MergeTreeSplitGenerator.java
+++ b/paimon-core/src/main/java/org/apache/paimon/table/source/MergeTreeSplitGenerator.java
@@ -19,9 +19,9 @@
 package org.apache.paimon.table.source;
 
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.file.io.DataFileMeta;
-import org.apache.paimon.file.mergetree.SortedRun;
-import org.apache.paimon.file.mergetree.compact.IntervalPartition;
+import org.apache.paimon.io.DataFileMeta;
+import org.apache.paimon.mergetree.SortedRun;
+import org.apache.paimon.mergetree.compact.IntervalPartition;
 import org.apache.paimon.utils.OrderedPacking;
 
 import java.util.ArrayList;
diff --git a/paimon-core/src/main/java/org/apache/paimon/table/source/ReadBuilder.java b/paimon-core/src/main/java/org/apache/paimon/table/source/ReadBuilder.java
index 5ba78f31d..ba3b720f1 100644
--- a/paimon-core/src/main/java/org/apache/paimon/table/source/ReadBuilder.java
+++ b/paimon-core/src/main/java/org/apache/paimon/table/source/ReadBuilder.java
@@ -20,8 +20,8 @@ package org.apache.paimon.table.source;
 
 import org.apache.paimon.annotation.Experimental;
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.file.predicate.Predicate;
-import org.apache.paimon.file.predicate.PredicateBuilder;
+import org.apache.paimon.predicate.Predicate;
+import org.apache.paimon.predicate.PredicateBuilder;
 import org.apache.paimon.types.RowType;
 
 import java.io.Serializable;
diff --git a/paimon-core/src/main/java/org/apache/paimon/table/source/ReadBuilderImpl.java b/paimon-core/src/main/java/org/apache/paimon/table/source/ReadBuilderImpl.java
index fa5598950..eeca2c575 100644
--- a/paimon-core/src/main/java/org/apache/paimon/table/source/ReadBuilderImpl.java
+++ b/paimon-core/src/main/java/org/apache/paimon/table/source/ReadBuilderImpl.java
@@ -18,7 +18,7 @@
 
 package org.apache.paimon.table.source;
 
-import org.apache.paimon.file.predicate.Predicate;
+import org.apache.paimon.predicate.Predicate;
 import org.apache.paimon.table.InnerTable;
 import org.apache.paimon.types.RowType;
 import org.apache.paimon.utils.Projection;
diff --git a/paimon-core/src/main/java/org/apache/paimon/table/source/SplitGenerator.java b/paimon-core/src/main/java/org/apache/paimon/table/source/SplitGenerator.java
index 35ad5c8b5..7677875d0 100644
--- a/paimon-core/src/main/java/org/apache/paimon/table/source/SplitGenerator.java
+++ b/paimon-core/src/main/java/org/apache/paimon/table/source/SplitGenerator.java
@@ -18,7 +18,7 @@
 
 package org.apache.paimon.table.source;
 
-import org.apache.paimon.file.io.DataFileMeta;
+import org.apache.paimon.io.DataFileMeta;
 
 import java.util.List;
 
diff --git a/paimon-core/src/main/java/org/apache/paimon/table/source/StreamDataTableScan.java b/paimon-core/src/main/java/org/apache/paimon/table/source/StreamDataTableScan.java
index 413ff2a8f..bdfdb7c91 100644
--- a/paimon-core/src/main/java/org/apache/paimon/table/source/StreamDataTableScan.java
+++ b/paimon-core/src/main/java/org/apache/paimon/table/source/StreamDataTableScan.java
@@ -19,7 +19,7 @@
 package org.apache.paimon.table.source;
 
 import org.apache.paimon.CoreOptions;
-import org.apache.paimon.file.schema.TableSchema;
+import org.apache.paimon.schema.TableSchema;
 import org.apache.paimon.table.DataTable;
 import org.apache.paimon.table.source.snapshot.FollowUpScanner;
 import org.apache.paimon.table.source.snapshot.StartingScanner;
diff --git a/paimon-core/src/main/java/org/apache/paimon/table/source/TableRead.java b/paimon-core/src/main/java/org/apache/paimon/table/source/TableRead.java
index 02b0ef479..2fa89c737 100644
--- a/paimon-core/src/main/java/org/apache/paimon/table/source/TableRead.java
+++ b/paimon-core/src/main/java/org/apache/paimon/table/source/TableRead.java
@@ -20,8 +20,8 @@ package org.apache.paimon.table.source;
 
 import org.apache.paimon.annotation.Experimental;
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.file.mergetree.compact.ConcatRecordReader;
-import org.apache.paimon.file.operation.FileStoreRead;
+import org.apache.paimon.mergetree.compact.ConcatRecordReader;
+import org.apache.paimon.operation.FileStoreRead;
 import org.apache.paimon.reader.RecordReader;
 
 import java.io.IOException;
diff --git a/paimon-core/src/main/java/org/apache/paimon/table/source/TableStreamingReader.java b/paimon-core/src/main/java/org/apache/paimon/table/source/TableStreamingReader.java
index 258653636..f9cc9688f 100644
--- a/paimon-core/src/main/java/org/apache/paimon/table/source/TableStreamingReader.java
+++ b/paimon-core/src/main/java/org/apache/paimon/table/source/TableStreamingReader.java
@@ -22,9 +22,9 @@ import org.apache.flink.shaded.guava30.com.google.common.collect.Iterators;
 import org.apache.flink.shaded.guava30.com.google.common.primitives.Ints;
 
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.file.mergetree.compact.ConcatRecordReader;
-import org.apache.paimon.file.predicate.Predicate;
-import org.apache.paimon.file.predicate.PredicateFilter;
+import org.apache.paimon.mergetree.compact.ConcatRecordReader;
+import org.apache.paimon.predicate.Predicate;
+import org.apache.paimon.predicate.PredicateFilter;
 import org.apache.paimon.reader.RecordReaderIterator;
 import org.apache.paimon.table.FileStoreTable;
 import org.apache.paimon.table.source.DataTableScan.DataFilePlan;
@@ -39,7 +39,7 @@ import java.util.List;
 import java.util.function.IntUnaryOperator;
 import java.util.stream.IntStream;
 
-import static org.apache.paimon.file.predicate.PredicateBuilder.transformFieldMapping;
+import static org.apache.paimon.predicate.PredicateBuilder.transformFieldMapping;
 
 /** A streaming reader to read table. */
 public class TableStreamingReader {
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 c8c55da6d..200660679 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
@@ -19,7 +19,7 @@
 package org.apache.paimon.table.source.snapshot;
 
 import org.apache.paimon.CoreOptions;
-import org.apache.paimon.file.operation.ScanKind;
+import org.apache.paimon.operation.ScanKind;
 import org.apache.paimon.file.utils.SnapshotManager;
 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/CompactionChangelogFollowUpScanner.java b/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/CompactionChangelogFollowUpScanner.java
index 88ff90ab1..96101fee7 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
@@ -20,7 +20,7 @@ package org.apache.paimon.table.source.snapshot;
 
 import org.apache.paimon.CoreOptions;
 import org.apache.paimon.file.Snapshot;
-import org.apache.paimon.file.operation.ScanKind;
+import org.apache.paimon.operation.ScanKind;
 import org.apache.paimon.table.source.DataTableScan;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
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 ac8099f54..787b71999 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
@@ -19,7 +19,7 @@
 package org.apache.paimon.table.source.snapshot;
 
 import org.apache.paimon.file.Snapshot;
-import org.apache.paimon.file.operation.ScanKind;
+import org.apache.paimon.operation.ScanKind;
 import org.apache.paimon.table.source.DataTableScan;
 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 4604c6972..605b4ffb4 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
@@ -20,7 +20,7 @@ package org.apache.paimon.table.source.snapshot;
 
 import org.apache.paimon.CoreOptions;
 import org.apache.paimon.file.Snapshot;
-import org.apache.paimon.file.operation.ScanKind;
+import org.apache.paimon.operation.ScanKind;
 import org.apache.paimon.table.source.DataTableScan;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
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 03f1ad596..c24ca1716 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
@@ -19,7 +19,7 @@
 package org.apache.paimon.table.source.snapshot;
 
 import org.apache.paimon.CoreOptions;
-import org.apache.paimon.file.operation.ScanKind;
+import org.apache.paimon.operation.ScanKind;
 import org.apache.paimon.file.utils.SnapshotManager;
 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/InputChangelogFollowUpScanner.java b/paimon-core/src/main/java/org/apache/paimon/table/source/snapshot/InputChangelogFollowUpScanner.java
index 71466c9b7..c9a017e2d 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
@@ -20,7 +20,7 @@ package org.apache.paimon.table.source.snapshot;
 
 import org.apache.paimon.CoreOptions;
 import org.apache.paimon.file.Snapshot;
-import org.apache.paimon.file.operation.ScanKind;
+import org.apache.paimon.operation.ScanKind;
 import org.apache.paimon.table.source.DataTableScan;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
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 07d94b2b9..58f84292d 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
@@ -20,9 +20,9 @@ package org.apache.paimon.table.source.snapshot;
 
 import org.apache.paimon.data.BinaryRow;
 import org.apache.paimon.file.Snapshot;
-import org.apache.paimon.file.io.DataFileMeta;
-import org.apache.paimon.file.operation.ScanKind;
-import org.apache.paimon.file.predicate.Predicate;
+import org.apache.paimon.io.DataFileMeta;
+import org.apache.paimon.operation.ScanKind;
+import org.apache.paimon.predicate.Predicate;
 import org.apache.paimon.table.source.DataSplit;
 import org.apache.paimon.table.source.SplitGenerator;
 import org.apache.paimon.utils.Filter;
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 bb700a852..e563a6099 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
@@ -23,13 +23,13 @@ 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.file.io.DataFileMeta;
-import org.apache.paimon.file.manifest.FileKind;
-import org.apache.paimon.file.operation.FileStoreScan;
-import org.apache.paimon.file.operation.ScanKind;
-import org.apache.paimon.file.predicate.Predicate;
-import org.apache.paimon.file.predicate.PredicateBuilder;
-import org.apache.paimon.file.schema.TableSchema;
+import org.apache.paimon.io.DataFileMeta;
+import org.apache.paimon.manifest.FileKind;
+import org.apache.paimon.operation.FileStoreScan;
+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;
@@ -42,7 +42,7 @@ import java.util.Map;
 import java.util.Optional;
 import java.util.function.BiConsumer;
 
-import static org.apache.paimon.file.predicate.PredicateBuilder.transformFieldMapping;
+import static org.apache.paimon.predicate.PredicateBuilder.transformFieldMapping;
 import static org.apache.paimon.table.source.snapshot.SnapshotSplitReader.generateSplits;
 
 /** Implementation of {@link SnapshotSplitReader}. */
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 4d8cd09ae..4fcfb529a 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
@@ -19,7 +19,7 @@
 package org.apache.paimon.table.source.snapshot;
 
 import org.apache.paimon.CoreOptions;
-import org.apache.paimon.file.operation.ScanKind;
+import org.apache.paimon.operation.ScanKind;
 import org.apache.paimon.file.utils.SnapshotManager;
 import org.apache.paimon.table.source.DataTableScan;
 
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 8cbde4e33..3d0a9926c 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
@@ -19,7 +19,7 @@
 package org.apache.paimon.table.source.snapshot;
 
 import org.apache.paimon.CoreOptions;
-import org.apache.paimon.file.operation.ScanKind;
+import org.apache.paimon.operation.ScanKind;
 import org.apache.paimon.file.utils.SnapshotManager;
 import org.apache.paimon.table.source.DataTableScan;
 import org.slf4j.Logger;
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 75e9f230b..a704b8ec3 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,11 +23,11 @@ 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.file.operation.ScanKind;
-import org.apache.paimon.file.predicate.LeafPredicate;
-import org.apache.paimon.file.predicate.Predicate;
-import org.apache.paimon.file.predicate.PredicateBuilder;
-import org.apache.paimon.file.predicate.PredicateReplaceVisitor;
+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;
@@ -62,7 +62,7 @@ import java.util.Map;
 import java.util.Optional;
 import java.util.stream.Collectors;
 
-import static org.apache.paimon.file.catalog.Catalog.SYSTEM_TABLE_SPLITTER;
+import static org.apache.paimon.catalog.Catalog.SYSTEM_TABLE_SPLITTER;
 
 /** A {@link Table} for reading audit log of table. */
 public class AuditLogTable implements DataTable, ReadonlyTable {
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 3eaba4748..f6158af12 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,9 +22,9 @@ 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.file.io.DataFileMeta;
-import org.apache.paimon.file.io.DataFileMetaSerializer;
-import org.apache.paimon.file.predicate.Predicate;
+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;
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 b86b36d50..c74a4d13d 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,11 +23,11 @@ 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.file.io.DataFileMeta;
-import org.apache.paimon.file.io.DataFilePathFactory;
-import org.apache.paimon.file.predicate.Predicate;
-import org.apache.paimon.file.schema.SchemaManager;
-import org.apache.paimon.file.schema.TableSchema;
+import org.apache.paimon.io.DataFileMeta;
+import org.apache.paimon.io.DataFilePathFactory;
+import org.apache.paimon.predicate.Predicate;
+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;
@@ -67,7 +67,7 @@ import java.util.TreeMap;
 import java.util.function.Function;
 import java.util.function.Supplier;
 
-import static org.apache.paimon.file.catalog.Catalog.SYSTEM_TABLE_SPLITTER;
+import static org.apache.paimon.catalog.Catalog.SYSTEM_TABLE_SPLITTER;
 
 /** A {@link Table} for showing files of a snapshot in specific table. */
 public class FilesTable implements ReadonlyTable {
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 6db1c556d..495f466dd 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,8 +23,8 @@ 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.file.predicate.Predicate;
-import org.apache.paimon.file.schema.SchemaManager;
+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;
@@ -46,7 +46,7 @@ import java.util.Iterator;
 import java.util.Map;
 import java.util.Objects;
 
-import static org.apache.paimon.file.catalog.Catalog.SYSTEM_TABLE_SPLITTER;
+import static org.apache.paimon.catalog.Catalog.SYSTEM_TABLE_SPLITTER;
 import static org.apache.paimon.file.utils.SerializationUtils.newStringType;
 
 /** A {@link Table} for showing options of table. */
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 c53c245bc..f26bc9299 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,9 +23,9 @@ 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.file.predicate.Predicate;
-import org.apache.paimon.file.schema.SchemaManager;
-import org.apache.paimon.file.schema.TableSchema;
+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;
@@ -51,7 +51,7 @@ import java.util.Iterator;
 import java.util.Map;
 import java.util.Objects;
 
-import static org.apache.paimon.file.catalog.Catalog.SYSTEM_TABLE_SPLITTER;
+import static org.apache.paimon.catalog.Catalog.SYSTEM_TABLE_SPLITTER;
 
 /** A {@link Table} for showing schemas of table. */
 public class SchemasTable implements ReadonlyTable {
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 06bda9d11..424a760b0 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
@@ -25,7 +25,7 @@ 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.file.predicate.Predicate;
+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;
@@ -54,7 +54,7 @@ import java.util.Iterator;
 import java.util.Map;
 import java.util.Objects;
 
-import static org.apache.paimon.file.catalog.Catalog.SYSTEM_TABLE_SPLITTER;
+import static org.apache.paimon.catalog.Catalog.SYSTEM_TABLE_SPLITTER;
 
 /** A {@link Table} for showing committing snapshots of table. */
 public class SnapshotsTable implements ReadonlyTable {
diff --git a/paimon-core/src/main/resources/META-INF/services/org.apache.paimon.file.catalog.CatalogFactory b/paimon-core/src/main/resources/META-INF/services/org.apache.paimon.file.org.apache.paimon.catalog.CatalogFactory
similarity index 93%
rename from paimon-core/src/main/resources/META-INF/services/org.apache.paimon.file.catalog.CatalogFactory
rename to paimon-core/src/main/resources/META-INF/services/org.apache.paimon.file.org.apache.paimon.catalog.CatalogFactory
index fcc49ea7c..485ba5531 100644
--- a/paimon-core/src/main/resources/META-INF/services/org.apache.paimon.file.catalog.CatalogFactory
+++ b/paimon-core/src/main/resources/META-INF/services/org.apache.paimon.file.org.apache.paimon.catalog.CatalogFactory
@@ -13,4 +13,4 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-org.apache.paimon.file.catalog.FileSystemCatalogFactory
+org.apache.paimon.catalog.FileSystemCatalogFactory
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/append/AppendOnlyCompactManagerTest.java b/paimon-core/src/test/java/org/apache/paimon/append/AppendOnlyCompactManagerTest.java
similarity index 98%
rename from paimon-core/src/test/java/org/apache/paimon/file/append/AppendOnlyCompactManagerTest.java
rename to paimon-core/src/test/java/org/apache/paimon/append/AppendOnlyCompactManagerTest.java
index 10950fb73..4f9753749 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/append/AppendOnlyCompactManagerTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/append/AppendOnlyCompactManagerTest.java
@@ -16,9 +16,9 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.append;
+package org.apache.paimon.append;
 
-import org.apache.paimon.file.io.DataFileMeta;
+import org.apache.paimon.io.DataFileMeta;
 import org.apache.paimon.fs.local.LocalFileIO;
 import org.junit.jupiter.api.Test;
 
@@ -28,7 +28,7 @@ import java.util.LinkedList;
 import java.util.List;
 import java.util.Optional;
 
-import static org.apache.paimon.file.io.DataFileTestUtils.newFile;
+import static org.apache.paimon.io.DataFileTestUtils.newFile;
 import static org.assertj.core.api.Assertions.assertThat;
 
 /** Test for {@link AppendOnlyCompactManager}. */
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/append/AppendOnlyWriterTest.java b/paimon-core/src/test/java/org/apache/paimon/append/AppendOnlyWriterTest.java
similarity index 98%
rename from paimon-core/src/test/java/org/apache/paimon/file/append/AppendOnlyWriterTest.java
rename to paimon-core/src/test/java/org/apache/paimon/append/AppendOnlyWriterTest.java
index 8f44e16b9..5f65670e4 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/append/AppendOnlyWriterTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/append/AppendOnlyWriterTest.java
@@ -17,15 +17,15 @@
  * under the License.
  */
 
-package org.apache.paimon.file.append;
+package org.apache.paimon.append;
 
 import org.apache.paimon.CoreOptions;
 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.file.io.DataFileMeta;
-import org.apache.paimon.file.io.DataFilePathFactory;
+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;
@@ -51,7 +51,7 @@ import java.util.List;
 import java.util.UUID;
 import java.util.concurrent.Executors;
 
-import static org.apache.paimon.file.io.DataFileMeta.getMaxSequenceNumber;
+import static org.apache.paimon.io.DataFileMeta.getMaxSequenceNumber;
 import static org.assertj.core.api.Assertions.assertThat;
 
 /** Test the correctness for {@link AppendOnlyWriter}. */
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/append/IterativeCompactTaskTest.java b/paimon-core/src/test/java/org/apache/paimon/append/IterativeCompactTaskTest.java
similarity index 98%
rename from paimon-core/src/test/java/org/apache/paimon/file/append/IterativeCompactTaskTest.java
rename to paimon-core/src/test/java/org/apache/paimon/append/IterativeCompactTaskTest.java
index bf45f09ad..e896ea5c3 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/append/IterativeCompactTaskTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/append/IterativeCompactTaskTest.java
@@ -16,10 +16,10 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.append;
+package org.apache.paimon.append;
 
-import org.apache.paimon.file.compact.CompactResult;
-import org.apache.paimon.file.io.DataFileMeta;
+import org.apache.paimon.compact.CompactResult;
+import org.apache.paimon.io.DataFileMeta;
 import org.apache.paimon.fs.local.LocalFileIO;
 import org.junit.jupiter.api.Test;
 
@@ -30,7 +30,7 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 
-import static org.apache.paimon.file.io.DataFileTestUtils.newFile;
+import static org.apache.paimon.io.DataFileTestUtils.newFile;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.junit.jupiter.api.Assertions.fail;
 
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/casting/CastExecutorTest.java b/paimon-core/src/test/java/org/apache/paimon/casting/CastExecutorTest.java
similarity index 99%
rename from paimon-core/src/test/java/org/apache/paimon/file/casting/CastExecutorTest.java
rename to paimon-core/src/test/java/org/apache/paimon/casting/CastExecutorTest.java
index 8d38895d9..f16f6d73b 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/casting/CastExecutorTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/casting/CastExecutorTest.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.casting;
+package org.apache.paimon.casting;
 
 import org.apache.paimon.data.BinaryString;
 import org.apache.paimon.data.Timestamp;
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/catalog/CatalogFactoryTest.java b/paimon-core/src/test/java/org/apache/paimon/catalog/CatalogFactoryTest.java
similarity index 98%
rename from paimon-core/src/test/java/org/apache/paimon/file/catalog/CatalogFactoryTest.java
rename to paimon-core/src/test/java/org/apache/paimon/catalog/CatalogFactoryTest.java
index 79528229f..f9076427e 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/catalog/CatalogFactoryTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/catalog/CatalogFactoryTest.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.catalog;
+package org.apache.paimon.catalog;
 
 import org.apache.flink.table.store.catalog.CatalogContext;
 
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/disk/BufferFileWriterReaderTest.java b/paimon-core/src/test/java/org/apache/paimon/disk/BufferFileWriterReaderTest.java
similarity index 98%
rename from paimon-core/src/test/java/org/apache/paimon/file/disk/BufferFileWriterReaderTest.java
rename to paimon-core/src/test/java/org/apache/paimon/disk/BufferFileWriterReaderTest.java
index 4dc897017..c3d7b1ba4 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/disk/BufferFileWriterReaderTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/disk/BufferFileWriterReaderTest.java
@@ -16,9 +16,9 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.disk;
+package org.apache.paimon.disk;
 
-import org.apache.paimon.file.memory.Buffer;
+import org.apache.paimon.memory.Buffer;
 import org.apache.paimon.memory.MemorySegment;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/disk/IOManagerTest.java b/paimon-core/src/test/java/org/apache/paimon/disk/IOManagerTest.java
similarity index 98%
rename from paimon-core/src/test/java/org/apache/paimon/file/disk/IOManagerTest.java
rename to paimon-core/src/test/java/org/apache/paimon/disk/IOManagerTest.java
index 01224dafe..ba551419e 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/disk/IOManagerTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/disk/IOManagerTest.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.disk;
+package org.apache.paimon.disk;
 
 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/TestFileStore.java b/paimon-core/src/test/java/org/apache/paimon/file/TestFileStore.java
index fcc37dd50..8288c0649 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/TestFileStore.java
+++ b/paimon-core/src/test/java/org/apache/paimon/file/TestFileStore.java
@@ -21,23 +21,23 @@ package org.apache.paimon.file;
 import org.apache.paimon.CoreOptions;
 import org.apache.paimon.data.BinaryRow;
 import org.apache.paimon.data.serializer.InternalRowSerializer;
-import org.apache.paimon.file.io.DataFileMeta;
-import org.apache.paimon.file.manifest.ManifestCommittable;
-import org.apache.paimon.file.manifest.ManifestEntry;
-import org.apache.paimon.file.manifest.ManifestFileMeta;
-import org.apache.paimon.file.manifest.ManifestList;
-import org.apache.paimon.file.memory.HeapMemorySegmentPool;
-import org.apache.paimon.file.memory.MemoryOwner;
-import org.apache.paimon.file.mergetree.compact.MergeFunctionFactory;
-import org.apache.paimon.file.operation.AbstractFileStoreWrite;
-import org.apache.paimon.file.operation.FileStoreCommit;
-import org.apache.paimon.file.operation.FileStoreCommitImpl;
-import org.apache.paimon.file.operation.FileStoreExpireImpl;
-import org.apache.paimon.file.operation.FileStoreRead;
-import org.apache.paimon.file.operation.FileStoreScan;
-import org.apache.paimon.file.operation.ScanKind;
-import org.apache.paimon.file.schema.KeyValueFieldsExtractor;
-import org.apache.paimon.file.schema.SchemaManager;
+import org.apache.paimon.io.DataFileMeta;
+import org.apache.paimon.manifest.ManifestCommittable;
+import org.apache.paimon.manifest.ManifestEntry;
+import org.apache.paimon.manifest.ManifestFileMeta;
+import org.apache.paimon.manifest.ManifestList;
+import org.apache.paimon.memory.HeapMemorySegmentPool;
+import org.apache.paimon.memory.MemoryOwner;
+import org.apache.paimon.mergetree.compact.MergeFunctionFactory;
+import org.apache.paimon.operation.AbstractFileStoreWrite;
+import org.apache.paimon.operation.FileStoreCommit;
+import org.apache.paimon.operation.FileStoreCommitImpl;
+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;
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/TestKeyValueGenerator.java b/paimon-core/src/test/java/org/apache/paimon/file/TestKeyValueGenerator.java
index 2c3c1a4c6..f97cc9590 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/TestKeyValueGenerator.java
+++ b/paimon-core/src/test/java/org/apache/paimon/file/TestKeyValueGenerator.java
@@ -25,9 +25,9 @@ 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.file.schema.KeyValueFieldsExtractor;
-import org.apache.paimon.file.schema.SchemaManager;
-import org.apache.paimon.file.schema.TableSchema;
+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;
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/format/FileFormatSuffixTest.java b/paimon-core/src/test/java/org/apache/paimon/file/format/FileFormatSuffixTest.java
index 26a78b6c7..0519a7b36 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/format/FileFormatSuffixTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/file/format/FileFormatSuffixTest.java
@@ -20,12 +20,12 @@ package org.apache.paimon.file.format;
 
 import org.apache.paimon.data.BinaryString;
 import org.apache.paimon.data.GenericRow;
-import org.apache.paimon.file.append.AppendOnlyCompactManager;
-import org.apache.paimon.file.append.AppendOnlyWriter;
-import org.apache.paimon.file.io.DataFileMeta;
-import org.apache.paimon.file.io.DataFilePathFactory;
-import org.apache.paimon.file.io.KeyValueFileReadWriteTest;
-import org.apache.paimon.file.io.KeyValueFileWriterFactory;
+import org.apache.paimon.append.AppendOnlyCompactManager;
+import org.apache.paimon.append.AppendOnlyWriter;
+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;
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/format/FileStatsExtractingAvroFormat.java b/paimon-core/src/test/java/org/apache/paimon/file/format/FileStatsExtractingAvroFormat.java
index 52aa9608a..3ddc2c5ab 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/format/FileStatsExtractingAvroFormat.java
+++ b/paimon-core/src/test/java/org/apache/paimon/file/format/FileStatsExtractingAvroFormat.java
@@ -18,7 +18,7 @@
 
 package org.apache.paimon.file.format;
 
-import org.apache.paimon.file.predicate.Predicate;
+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;
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/format/FlushingFileFormat.java b/paimon-core/src/test/java/org/apache/paimon/file/format/FlushingFileFormat.java
index 0307a6a74..e0044d977 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/format/FlushingFileFormat.java
+++ b/paimon-core/src/test/java/org/apache/paimon/file/format/FlushingFileFormat.java
@@ -19,7 +19,7 @@
 package org.apache.paimon.file.format;
 
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.file.predicate.Predicate;
+import org.apache.paimon.predicate.Predicate;
 import org.apache.paimon.format.FileFormat;
 import org.apache.paimon.format.FormatReaderFactory;
 import org.apache.paimon.format.FormatWriter;
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/sort/BinaryExternalSortBufferTest.java b/paimon-core/src/test/java/org/apache/paimon/file/sort/BinaryExternalSortBufferTest.java
index 6b835807a..005865a23 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/sort/BinaryExternalSortBufferTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/file/sort/BinaryExternalSortBufferTest.java
@@ -23,9 +23,9 @@ import org.apache.paimon.data.BinaryRowWriter;
 import org.apache.paimon.data.BinaryString;
 import org.apache.paimon.data.serializer.AbstractRowDataSerializer;
 import org.apache.paimon.data.serializer.BinaryRowSerializer;
-import org.apache.paimon.file.disk.IOManager;
-import org.apache.paimon.file.memory.HeapMemorySegmentPool;
-import org.apache.paimon.file.memory.MemorySegmentPool;
+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.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/stats/FieldStatsArraySerializerTest.java b/paimon-core/src/test/java/org/apache/paimon/file/stats/FieldStatsArraySerializerTest.java
index f9311b198..6bdf2ebfe 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/stats/FieldStatsArraySerializerTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/file/stats/FieldStatsArraySerializerTest.java
@@ -19,9 +19,9 @@
 package org.apache.paimon.file.stats;
 
 import org.apache.paimon.data.BinaryRow;
-import org.apache.paimon.file.casting.CastExecutor;
-import org.apache.paimon.file.schema.SchemaEvolutionUtil;
-import org.apache.paimon.file.schema.TableSchema;
+import org.apache.paimon.casting.CastExecutor;
+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;
@@ -30,7 +30,7 @@ import org.junit.jupiter.api.Test;
 import java.util.Arrays;
 import java.util.Collections;
 
-import static org.apache.paimon.file.io.DataFileTestUtils.row;
+import static org.apache.paimon.io.DataFileTestUtils.row;
 import static org.assertj.core.api.Assertions.assertThat;
 
 /** Tests for {@link FieldStatsArraySerializer}. */
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/utils/FileStorePathFactoryTest.java b/paimon-core/src/test/java/org/apache/paimon/file/utils/FileStorePathFactoryTest.java
index 9f5cf2938..80a2cf0de 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/utils/FileStorePathFactoryTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/file/utils/FileStorePathFactoryTest.java
@@ -22,7 +22,7 @@ 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.file.io.DataFilePathFactory;
+import org.apache.paimon.io.DataFilePathFactory;
 import org.apache.paimon.fs.Path;
 import org.apache.paimon.types.DataType;
 import org.apache.paimon.types.IntType;
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/io/DataFileMetaSerializerTest.java b/paimon-core/src/test/java/org/apache/paimon/io/DataFileMetaSerializerTest.java
similarity index 97%
rename from paimon-core/src/test/java/org/apache/paimon/file/io/DataFileMetaSerializerTest.java
rename to paimon-core/src/test/java/org/apache/paimon/io/DataFileMetaSerializerTest.java
index 2077c2921..e5686d875 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/io/DataFileMetaSerializerTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/io/DataFileMetaSerializerTest.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.io;
+package org.apache.paimon.io;
 
 import org.apache.paimon.file.utils.ObjectSerializerTestBase;
 
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/io/DataFilePathFactoryTest.java b/paimon-core/src/test/java/org/apache/paimon/io/DataFilePathFactoryTest.java
similarity index 98%
rename from paimon-core/src/test/java/org/apache/paimon/file/io/DataFilePathFactoryTest.java
rename to paimon-core/src/test/java/org/apache/paimon/io/DataFilePathFactoryTest.java
index 341cde49d..9c47d816b 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/io/DataFilePathFactoryTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/io/DataFilePathFactoryTest.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.io;
+package org.apache.paimon.io;
 
 import org.apache.paimon.CoreOptions;
 import org.apache.paimon.fs.Path;
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/io/DataFileTestDataGenerator.java b/paimon-core/src/test/java/org/apache/paimon/io/DataFileTestDataGenerator.java
similarity index 99%
rename from paimon-core/src/test/java/org/apache/paimon/file/io/DataFileTestDataGenerator.java
rename to paimon-core/src/test/java/org/apache/paimon/io/DataFileTestDataGenerator.java
index 33ac51532..579335aa4 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/io/DataFileTestDataGenerator.java
+++ b/paimon-core/src/test/java/org/apache/paimon/io/DataFileTestDataGenerator.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.io;
+package org.apache.paimon.io;
 
 import org.apache.paimon.data.BinaryRow;
 import org.apache.paimon.file.KeyValue;
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/io/DataFileTestUtils.java b/paimon-core/src/test/java/org/apache/paimon/io/DataFileTestUtils.java
similarity index 98%
rename from paimon-core/src/test/java/org/apache/paimon/file/io/DataFileTestUtils.java
rename to paimon-core/src/test/java/org/apache/paimon/io/DataFileTestUtils.java
index c3813e4e8..57eb7a597 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/io/DataFileTestUtils.java
+++ b/paimon-core/src/test/java/org/apache/paimon/io/DataFileTestUtils.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.io;
+package org.apache.paimon.io;
 
 import org.apache.paimon.data.BinaryRow;
 import org.apache.paimon.data.BinaryRowWriter;
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/io/KeyValueFileReadWriteTest.java b/paimon-core/src/test/java/org/apache/paimon/io/KeyValueFileReadWriteTest.java
similarity index 99%
rename from paimon-core/src/test/java/org/apache/paimon/file/io/KeyValueFileReadWriteTest.java
rename to paimon-core/src/test/java/org/apache/paimon/io/KeyValueFileReadWriteTest.java
index c5ca8e828..8fffcb5bc 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/io/KeyValueFileReadWriteTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/io/KeyValueFileReadWriteTest.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.io;
+package org.apache.paimon.io;
 
 import org.apache.paimon.CoreOptions;
 import org.apache.paimon.data.BinaryRow;
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/io/RollingFileWriterTest.java b/paimon-core/src/test/java/org/apache/paimon/io/RollingFileWriterTest.java
similarity index 99%
rename from paimon-core/src/test/java/org/apache/paimon/file/io/RollingFileWriterTest.java
rename to paimon-core/src/test/java/org/apache/paimon/io/RollingFileWriterTest.java
index ed62fd084..007598121 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/io/RollingFileWriterTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/io/RollingFileWriterTest.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.io;
+package org.apache.paimon.io;
 
 import org.apache.paimon.CoreOptions;
 import org.apache.paimon.data.GenericRow;
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/manifest/ManifestCommittableSerializerTest.java b/paimon-core/src/test/java/org/apache/paimon/manifest/ManifestCommittableSerializerTest.java
similarity index 94%
rename from paimon-core/src/test/java/org/apache/paimon/file/manifest/ManifestCommittableSerializerTest.java
rename to paimon-core/src/test/java/org/apache/paimon/manifest/ManifestCommittableSerializerTest.java
index c3e03ec2d..1edf0b1f0 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/manifest/ManifestCommittableSerializerTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/manifest/ManifestCommittableSerializerTest.java
@@ -16,12 +16,12 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.manifest;
+package org.apache.paimon.manifest;
 
 import org.apache.paimon.data.BinaryRow;
-import org.apache.paimon.file.io.CompactIncrement;
-import org.apache.paimon.file.io.DataFileMeta;
-import org.apache.paimon.file.io.NewFilesIncrement;
+import org.apache.paimon.io.CompactIncrement;
+import org.apache.paimon.io.DataFileMeta;
+import org.apache.paimon.io.NewFilesIncrement;
 import org.apache.paimon.table.sink.CommitMessage;
 import org.apache.paimon.table.sink.CommitMessageImpl;
 import org.junit.jupiter.api.Test;
@@ -33,7 +33,7 @@ import java.util.List;
 import java.util.concurrent.ThreadLocalRandom;
 import java.util.concurrent.atomic.AtomicInteger;
 
-import static org.apache.paimon.file.mergetree.compact.MergeTreeCompactManagerTest.row;
+import static org.apache.paimon.mergetree.compact.MergeTreeCompactManagerTest.row;
 import static org.apache.paimon.file.stats.StatsTestUtils.newTableStats;
 import static org.assertj.core.api.Assertions.assertThat;
 
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/manifest/ManifestEntrySerializerTest.java b/paimon-core/src/test/java/org/apache/paimon/manifest/ManifestEntrySerializerTest.java
similarity index 97%
rename from paimon-core/src/test/java/org/apache/paimon/file/manifest/ManifestEntrySerializerTest.java
rename to paimon-core/src/test/java/org/apache/paimon/manifest/ManifestEntrySerializerTest.java
index 51c74caab..dbaf43e25 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/manifest/ManifestEntrySerializerTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/manifest/ManifestEntrySerializerTest.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.manifest;
+package org.apache.paimon.manifest;
 
 import org.apache.paimon.file.utils.ObjectSerializer;
 import org.apache.paimon.file.utils.ObjectSerializerTestBase;
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/manifest/ManifestFileMetaSerializerTest.java b/paimon-core/src/test/java/org/apache/paimon/manifest/ManifestFileMetaSerializerTest.java
similarity index 97%
rename from paimon-core/src/test/java/org/apache/paimon/file/manifest/ManifestFileMetaSerializerTest.java
rename to paimon-core/src/test/java/org/apache/paimon/manifest/ManifestFileMetaSerializerTest.java
index 85712d7f6..7f7b8925d 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/manifest/ManifestFileMetaSerializerTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/manifest/ManifestFileMetaSerializerTest.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.manifest;
+package org.apache.paimon.manifest;
 
 import org.apache.paimon.file.utils.ObjectSerializer;
 import org.apache.paimon.file.utils.ObjectSerializerTestBase;
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/manifest/ManifestFileMetaTest.java b/paimon-core/src/test/java/org/apache/paimon/manifest/ManifestFileMetaTest.java
similarity index 98%
rename from paimon-core/src/test/java/org/apache/paimon/file/manifest/ManifestFileMetaTest.java
rename to paimon-core/src/test/java/org/apache/paimon/manifest/ManifestFileMetaTest.java
index f8eac44fb..ce66f5fbc 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/manifest/ManifestFileMetaTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/manifest/ManifestFileMetaTest.java
@@ -16,14 +16,14 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.manifest;
+package org.apache.paimon.manifest;
 
 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.file.io.DataFileMeta;
-import org.apache.paimon.file.schema.SchemaManager;
+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;
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/manifest/ManifestFileTest.java b/paimon-core/src/test/java/org/apache/paimon/manifest/ManifestFileTest.java
similarity index 98%
rename from paimon-core/src/test/java/org/apache/paimon/file/manifest/ManifestFileTest.java
rename to paimon-core/src/test/java/org/apache/paimon/manifest/ManifestFileTest.java
index 7506af87f..d5b01e12d 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/manifest/ManifestFileTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/manifest/ManifestFileTest.java
@@ -16,10 +16,10 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.manifest;
+package org.apache.paimon.manifest;
 
 import org.apache.paimon.CoreOptions;
-import org.apache.paimon.file.schema.SchemaManager;
+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;
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/manifest/ManifestListTest.java b/paimon-core/src/test/java/org/apache/paimon/manifest/ManifestListTest.java
similarity index 98%
rename from paimon-core/src/test/java/org/apache/paimon/file/manifest/ManifestListTest.java
rename to paimon-core/src/test/java/org/apache/paimon/manifest/ManifestListTest.java
index c8e6f3af6..c32cff3c2 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/manifest/ManifestListTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/manifest/ManifestListTest.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.manifest;
+package org.apache.paimon.manifest;
 
 import org.apache.paimon.CoreOptions;
 import org.apache.paimon.file.TestKeyValueGenerator;
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/manifest/ManifestTestDataGenerator.java b/paimon-core/src/test/java/org/apache/paimon/manifest/ManifestTestDataGenerator.java
similarity index 98%
rename from paimon-core/src/test/java/org/apache/paimon/file/manifest/ManifestTestDataGenerator.java
rename to paimon-core/src/test/java/org/apache/paimon/manifest/ManifestTestDataGenerator.java
index 510462c97..301d6603c 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/manifest/ManifestTestDataGenerator.java
+++ b/paimon-core/src/test/java/org/apache/paimon/manifest/ManifestTestDataGenerator.java
@@ -16,12 +16,12 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.manifest;
+package org.apache.paimon.manifest;
 
 import org.apache.paimon.data.BinaryRow;
 import org.apache.paimon.file.KeyValue;
 import org.apache.paimon.file.TestKeyValueGenerator;
-import org.apache.paimon.file.io.DataFileTestDataGenerator;
+import org.apache.paimon.io.DataFileTestDataGenerator;
 import org.apache.paimon.file.stats.FieldStatsArraySerializer;
 import org.apache.paimon.format.FieldStatsCollector;
 import org.apache.paimon.utils.Preconditions;
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/memory/MemoryPoolFactoryTest.java b/paimon-core/src/test/java/org/apache/paimon/memory/MemoryPoolFactoryTest.java
similarity index 98%
rename from paimon-core/src/test/java/org/apache/paimon/file/memory/MemoryPoolFactoryTest.java
rename to paimon-core/src/test/java/org/apache/paimon/memory/MemoryPoolFactoryTest.java
index 4600f7f41..6c6c1a4b7 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/memory/MemoryPoolFactoryTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/memory/MemoryPoolFactoryTest.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.memory;
+package org.apache.paimon.memory;
 
 import org.junit.jupiter.api.Test;
 
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/mergetree/LevelsTest.java b/paimon-core/src/test/java/org/apache/paimon/mergetree/LevelsTest.java
similarity index 93%
rename from paimon-core/src/test/java/org/apache/paimon/file/mergetree/LevelsTest.java
rename to paimon-core/src/test/java/org/apache/paimon/mergetree/LevelsTest.java
index c306e5ef0..2c8a1c16d 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/mergetree/LevelsTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/mergetree/LevelsTest.java
@@ -16,10 +16,10 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.mergetree;
+package org.apache.paimon.mergetree;
 
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.file.io.DataFileMeta;
+import org.apache.paimon.io.DataFileMeta;
 import org.junit.jupiter.api.Test;
 
 import java.util.Arrays;
@@ -27,7 +27,7 @@ import java.util.Collections;
 import java.util.Comparator;
 import java.util.UUID;
 
-import static org.apache.paimon.file.mergetree.compact.MergeTreeCompactManagerTest.row;
+import static org.apache.paimon.mergetree.compact.MergeTreeCompactManagerTest.row;
 import static org.assertj.core.api.Assertions.assertThat;
 
 /** Test for {@link Levels}. */
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/mergetree/LookupLevelsTest.java b/paimon-core/src/test/java/org/apache/paimon/mergetree/LookupLevelsTest.java
similarity index 95%
rename from paimon-core/src/test/java/org/apache/paimon/file/mergetree/LookupLevelsTest.java
rename to paimon-core/src/test/java/org/apache/paimon/mergetree/LookupLevelsTest.java
index 08aade8e7..4853a15e4 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/mergetree/LookupLevelsTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/mergetree/LookupLevelsTest.java
@@ -16,20 +16,20 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.mergetree;
+package org.apache.paimon.mergetree;
 
 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.file.io.DataFileMeta;
-import org.apache.paimon.file.io.KeyValueFileReaderFactory;
-import org.apache.paimon.file.io.KeyValueFileWriterFactory;
-import org.apache.paimon.file.io.RollingFileWriter;
-import org.apache.paimon.file.schema.KeyValueFieldsExtractor;
-import org.apache.paimon.file.schema.SchemaManager;
-import org.apache.paimon.file.schema.TableSchema;
+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;
@@ -58,7 +58,7 @@ 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.file.io.DataFileTestUtils.row;
+import static org.apache.paimon.io.DataFileTestUtils.row;
 import static org.assertj.core.api.Assertions.assertThat;
 
 /** Test {@link LookupLevels}. */
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/mergetree/MergeTreeTest.java b/paimon-core/src/test/java/org/apache/paimon/mergetree/MergeTreeTest.java
similarity index 95%
rename from paimon-core/src/test/java/org/apache/paimon/file/mergetree/MergeTreeTest.java
rename to paimon-core/src/test/java/org/apache/paimon/mergetree/MergeTreeTest.java
index 596d68e24..03d546da7 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/mergetree/MergeTreeTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/mergetree/MergeTreeTest.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.mergetree;
+package org.apache.paimon.mergetree;
 
 import org.apache.paimon.CoreOptions;
 import org.apache.paimon.CoreOptions.ChangelogProducer;
@@ -24,22 +24,22 @@ 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.compact.CompactResult;
+import org.apache.paimon.compact.CompactResult;
 import org.apache.paimon.file.format.FlushingFileFormat;
-import org.apache.paimon.file.io.DataFileMeta;
-import org.apache.paimon.file.io.KeyValueFileReaderFactory;
-import org.apache.paimon.file.io.KeyValueFileWriterFactory;
-import org.apache.paimon.file.io.RollingFileWriter;
-import org.apache.paimon.file.memory.HeapMemorySegmentPool;
-import org.apache.paimon.file.mergetree.compact.AbstractCompactRewriter;
-import org.apache.paimon.file.mergetree.compact.CompactStrategy;
-import org.apache.paimon.file.mergetree.compact.DeduplicateMergeFunction;
-import org.apache.paimon.file.mergetree.compact.IntervalPartition;
-import org.apache.paimon.file.mergetree.compact.MergeTreeCompactManager;
-import org.apache.paimon.file.mergetree.compact.UniversalCompaction;
-import org.apache.paimon.file.schema.KeyValueFieldsExtractor;
-import org.apache.paimon.file.schema.SchemaManager;
-import org.apache.paimon.file.schema.TableSchema;
+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.memory.HeapMemorySegmentPool;
+import org.apache.paimon.mergetree.compact.AbstractCompactRewriter;
+import org.apache.paimon.mergetree.compact.CompactStrategy;
+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;
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/mergetree/SortBufferWriteBufferTestBase.java b/paimon-core/src/test/java/org/apache/paimon/mergetree/SortBufferWriteBufferTestBase.java
similarity index 94%
rename from paimon-core/src/test/java/org/apache/paimon/file/mergetree/SortBufferWriteBufferTestBase.java
rename to paimon-core/src/test/java/org/apache/paimon/mergetree/SortBufferWriteBufferTestBase.java
index ff107edb1..4ff7c1aec 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/mergetree/SortBufferWriteBufferTestBase.java
+++ b/paimon-core/src/test/java/org/apache/paimon/mergetree/SortBufferWriteBufferTestBase.java
@@ -16,15 +16,15 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.mergetree;
+package org.apache.paimon.mergetree;
 
 import org.apache.paimon.codegen.RecordComparator;
 import org.apache.paimon.file.KeyValue;
-import org.apache.paimon.file.memory.HeapMemorySegmentPool;
-import org.apache.paimon.file.mergetree.compact.DeduplicateMergeFunction;
-import org.apache.paimon.file.mergetree.compact.MergeFunction;
-import org.apache.paimon.file.mergetree.compact.MergeFunctionTestUtils;
-import org.apache.paimon.file.mergetree.compact.ValueCountMergeFunction;
+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;
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/mergetree/compact/CombiningRecordReaderTestBase.java b/paimon-core/src/test/java/org/apache/paimon/mergetree/compact/CombiningRecordReaderTestBase.java
similarity index 98%
rename from paimon-core/src/test/java/org/apache/paimon/file/mergetree/compact/CombiningRecordReaderTestBase.java
rename to paimon-core/src/test/java/org/apache/paimon/mergetree/compact/CombiningRecordReaderTestBase.java
index a6fb19231..62a345259 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/mergetree/compact/CombiningRecordReaderTestBase.java
+++ b/paimon-core/src/test/java/org/apache/paimon/mergetree/compact/CombiningRecordReaderTestBase.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.mergetree.compact;
+package org.apache.paimon.mergetree.compact;
 
 import org.apache.paimon.codegen.RecordComparator;
 import org.apache.paimon.file.KeyValue;
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/mergetree/compact/ConcatRecordReaderTest.java b/paimon-core/src/test/java/org/apache/paimon/mergetree/compact/ConcatRecordReaderTest.java
similarity index 98%
rename from paimon-core/src/test/java/org/apache/paimon/file/mergetree/compact/ConcatRecordReaderTest.java
rename to paimon-core/src/test/java/org/apache/paimon/mergetree/compact/ConcatRecordReaderTest.java
index 7b04e11d4..e04dcdb75 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/mergetree/compact/ConcatRecordReaderTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/mergetree/compact/ConcatRecordReaderTest.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.mergetree.compact;
+package org.apache.paimon.mergetree.compact;
 
 import org.apache.paimon.file.KeyValue;
 import org.apache.paimon.file.utils.ReusingTestData;
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/mergetree/compact/ForceUpLevel0CompactionTest.java b/paimon-core/src/test/java/org/apache/paimon/mergetree/compact/ForceUpLevel0CompactionTest.java
similarity index 88%
rename from paimon-core/src/test/java/org/apache/paimon/file/mergetree/compact/ForceUpLevel0CompactionTest.java
rename to paimon-core/src/test/java/org/apache/paimon/mergetree/compact/ForceUpLevel0CompactionTest.java
index 1097e8182..958d4a25f 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/mergetree/compact/ForceUpLevel0CompactionTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/mergetree/compact/ForceUpLevel0CompactionTest.java
@@ -16,18 +16,18 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.mergetree.compact;
+package org.apache.paimon.mergetree.compact;
 
-import org.apache.paimon.file.compact.CompactUnit;
-import org.apache.paimon.file.mergetree.LevelSortedRun;
-import org.apache.paimon.file.mergetree.SortedRun;
+import org.apache.paimon.compact.CompactUnit;
+import org.apache.paimon.mergetree.LevelSortedRun;
+import org.apache.paimon.mergetree.SortedRun;
 import org.junit.jupiter.api.Test;
 
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.Optional;
 
-import static org.apache.paimon.file.mergetree.compact.UniversalCompactionTest.file;
+import static org.apache.paimon.mergetree.compact.UniversalCompactionTest.file;
 import static org.assertj.core.api.Assertions.assertThat;
 
 /** Test for {@link ForceUpLevel0Compaction}. */
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/mergetree/compact/FullChangelogMergeFunctionWrapperTestBase.java b/paimon-core/src/test/java/org/apache/paimon/mergetree/compact/FullChangelogMergeFunctionWrapperTestBase.java
similarity index 98%
rename from paimon-core/src/test/java/org/apache/paimon/file/mergetree/compact/FullChangelogMergeFunctionWrapperTestBase.java
rename to paimon-core/src/test/java/org/apache/paimon/mergetree/compact/FullChangelogMergeFunctionWrapperTestBase.java
index 10353c976..88a1975ed 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/mergetree/compact/FullChangelogMergeFunctionWrapperTestBase.java
+++ b/paimon-core/src/test/java/org/apache/paimon/mergetree/compact/FullChangelogMergeFunctionWrapperTestBase.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.mergetree.compact;
+package org.apache.paimon.mergetree.compact;
 
 import org.apache.paimon.file.KeyValue;
 import org.apache.paimon.types.RowKind;
@@ -28,7 +28,7 @@ import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
 
-import static org.apache.paimon.file.io.DataFileTestUtils.row;
+import static org.apache.paimon.io.DataFileTestUtils.row;
 
 /** Tests for {@link FullChangelogMergeFunctionWrapper}. */
 public abstract class FullChangelogMergeFunctionWrapperTestBase {
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/mergetree/compact/IntervalPartitionTest.java b/paimon-core/src/test/java/org/apache/paimon/mergetree/compact/IntervalPartitionTest.java
similarity index 97%
rename from paimon-core/src/test/java/org/apache/paimon/file/mergetree/compact/IntervalPartitionTest.java
rename to paimon-core/src/test/java/org/apache/paimon/mergetree/compact/IntervalPartitionTest.java
index 59a6462d0..1065e77b9 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/mergetree/compact/IntervalPartitionTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/mergetree/compact/IntervalPartitionTest.java
@@ -16,14 +16,14 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.mergetree.compact;
+package org.apache.paimon.mergetree.compact;
 
 import org.apache.paimon.codegen.RecordComparator;
 import org.apache.paimon.data.BinaryRow;
 import org.apache.paimon.data.BinaryRowWriter;
 import org.apache.paimon.data.Timestamp;
-import org.apache.paimon.file.io.DataFileMeta;
-import org.apache.paimon.file.mergetree.SortedRun;
+import org.apache.paimon.io.DataFileMeta;
+import org.apache.paimon.mergetree.SortedRun;
 import org.apache.paimon.file.stats.StatsTestUtils;
 import org.junit.jupiter.api.RepeatedTest;
 import org.junit.jupiter.api.Test;
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/mergetree/compact/LookupChangelogMergeFunctionWrapperTest.java b/paimon-core/src/test/java/org/apache/paimon/mergetree/compact/LookupChangelogMergeFunctionWrapperTest.java
similarity index 96%
rename from paimon-core/src/test/java/org/apache/paimon/file/mergetree/compact/LookupChangelogMergeFunctionWrapperTest.java
rename to paimon-core/src/test/java/org/apache/paimon/mergetree/compact/LookupChangelogMergeFunctionWrapperTest.java
index 1c73936b5..7e3fb6b2d 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/mergetree/compact/LookupChangelogMergeFunctionWrapperTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/mergetree/compact/LookupChangelogMergeFunctionWrapperTest.java
@@ -16,14 +16,14 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.mergetree.compact;
+package org.apache.paimon.mergetree.compact;
 
 import org.apache.paimon.data.InternalRow;
 import org.apache.paimon.data.InternalRow.FieldGetter;
 import org.apache.paimon.file.KeyValue;
-import org.apache.paimon.file.mergetree.compact.aggregate.AggregateMergeFunction;
-import org.apache.paimon.file.mergetree.compact.aggregate.FieldAggregator;
-import org.apache.paimon.file.mergetree.compact.aggregate.FieldSumAgg;
+import org.apache.paimon.mergetree.compact.aggregate.AggregateMergeFunction;
+import org.apache.paimon.mergetree.compact.aggregate.FieldAggregator;
+import org.apache.paimon.mergetree.compact.aggregate.FieldSumAgg;
 import org.apache.paimon.types.DataTypes;
 import org.junit.jupiter.api.Test;
 
@@ -31,7 +31,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import static org.apache.paimon.file.io.DataFileTestUtils.row;
+import static org.apache.paimon.io.DataFileTestUtils.row;
 import static org.apache.paimon.types.RowKind.DELETE;
 import static org.apache.paimon.types.RowKind.INSERT;
 import static org.apache.paimon.types.RowKind.UPDATE_AFTER;
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/mergetree/compact/MergeFunctionTestUtils.java b/paimon-core/src/test/java/org/apache/paimon/mergetree/compact/MergeFunctionTestUtils.java
similarity index 98%
rename from paimon-core/src/test/java/org/apache/paimon/file/mergetree/compact/MergeFunctionTestUtils.java
rename to paimon-core/src/test/java/org/apache/paimon/mergetree/compact/MergeFunctionTestUtils.java
index 56888fe51..d1a898461 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/mergetree/compact/MergeFunctionTestUtils.java
+++ b/paimon-core/src/test/java/org/apache/paimon/mergetree/compact/MergeFunctionTestUtils.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.mergetree.compact;
+package org.apache.paimon.mergetree.compact;
 
 import org.apache.paimon.file.KeyValue;
 import org.apache.paimon.file.utils.ReusingTestData;
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/mergetree/compact/MergeTreeCompactManagerTest.java b/paimon-core/src/test/java/org/apache/paimon/mergetree/compact/MergeTreeCompactManagerTest.java
similarity index 96%
rename from paimon-core/src/test/java/org/apache/paimon/file/mergetree/compact/MergeTreeCompactManagerTest.java
rename to paimon-core/src/test/java/org/apache/paimon/mergetree/compact/MergeTreeCompactManagerTest.java
index 6143a8ccc..12c445060 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/mergetree/compact/MergeTreeCompactManagerTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/mergetree/compact/MergeTreeCompactManagerTest.java
@@ -16,16 +16,16 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.mergetree.compact;
+package org.apache.paimon.mergetree.compact;
 
 import org.apache.paimon.data.BinaryRow;
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.file.compact.CompactResult;
-import org.apache.paimon.file.compact.CompactUnit;
-import org.apache.paimon.file.io.DataFileMeta;
-import org.apache.paimon.file.io.DataFileTestUtils;
-import org.apache.paimon.file.mergetree.Levels;
-import org.apache.paimon.file.mergetree.SortedRun;
+import org.apache.paimon.compact.CompactResult;
+import org.apache.paimon.compact.CompactUnit;
+import org.apache.paimon.io.DataFileMeta;
+import org.apache.paimon.io.DataFileTestUtils;
+import org.apache.paimon.mergetree.Levels;
+import org.apache.paimon.mergetree.SortedRun;
 import org.junit.jupiter.api.AfterAll;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
@@ -42,7 +42,7 @@ import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.stream.Collectors;
 
-import static org.apache.paimon.file.io.DataFileTestUtils.newFile;
+import static org.apache.paimon.io.DataFileTestUtils.newFile;
 import static org.assertj.core.api.Assertions.assertThat;
 
 /** Test for {@link MergeTreeCompactManager}. */
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/mergetree/compact/ReducerMergeFunctionWrapperTestBase.java b/paimon-core/src/test/java/org/apache/paimon/mergetree/compact/ReducerMergeFunctionWrapperTestBase.java
similarity index 97%
rename from paimon-core/src/test/java/org/apache/paimon/file/mergetree/compact/ReducerMergeFunctionWrapperTestBase.java
rename to paimon-core/src/test/java/org/apache/paimon/mergetree/compact/ReducerMergeFunctionWrapperTestBase.java
index 14b1eb35e..6add9da8a 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/mergetree/compact/ReducerMergeFunctionWrapperTestBase.java
+++ b/paimon-core/src/test/java/org/apache/paimon/mergetree/compact/ReducerMergeFunctionWrapperTestBase.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.mergetree.compact;
+package org.apache.paimon.mergetree.compact;
 
 import org.apache.paimon.data.GenericRow;
 import org.apache.paimon.file.KeyValue;
@@ -32,7 +32,7 @@ import java.util.Collections;
 import java.util.List;
 import java.util.stream.Stream;
 
-import static org.apache.paimon.file.io.DataFileTestUtils.row;
+import static org.apache.paimon.io.DataFileTestUtils.row;
 import static org.assertj.core.api.Assertions.assertThatThrownBy;
 
 /** Tests for {@link ReducerMergeFunctionWrapper}. */
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/mergetree/compact/SortMergeReaderTestBase.java b/paimon-core/src/test/java/org/apache/paimon/mergetree/compact/SortMergeReaderTestBase.java
similarity index 98%
rename from paimon-core/src/test/java/org/apache/paimon/file/mergetree/compact/SortMergeReaderTestBase.java
rename to paimon-core/src/test/java/org/apache/paimon/mergetree/compact/SortMergeReaderTestBase.java
index aa7c5c2df..d5971d7d9 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/mergetree/compact/SortMergeReaderTestBase.java
+++ b/paimon-core/src/test/java/org/apache/paimon/mergetree/compact/SortMergeReaderTestBase.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.mergetree.compact;
+package org.apache.paimon.mergetree.compact;
 
 import org.apache.paimon.file.KeyValue;
 import org.apache.paimon.file.utils.ReusingTestData;
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/mergetree/compact/UniversalCompactionTest.java b/paimon-core/src/test/java/org/apache/paimon/mergetree/compact/UniversalCompactionTest.java
similarity index 97%
rename from paimon-core/src/test/java/org/apache/paimon/file/mergetree/compact/UniversalCompactionTest.java
rename to paimon-core/src/test/java/org/apache/paimon/mergetree/compact/UniversalCompactionTest.java
index 71429a9ec..62a090c8d 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/mergetree/compact/UniversalCompactionTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/mergetree/compact/UniversalCompactionTest.java
@@ -16,12 +16,12 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.mergetree.compact;
+package org.apache.paimon.mergetree.compact;
 
-import org.apache.paimon.file.compact.CompactUnit;
-import org.apache.paimon.file.io.DataFileMeta;
-import org.apache.paimon.file.mergetree.LevelSortedRun;
-import org.apache.paimon.file.mergetree.SortedRun;
+import org.apache.paimon.compact.CompactUnit;
+import org.apache.paimon.io.DataFileMeta;
+import org.apache.paimon.mergetree.LevelSortedRun;
+import org.apache.paimon.mergetree.SortedRun;
 import org.junit.jupiter.api.Test;
 
 import java.util.ArrayList;
@@ -30,7 +30,7 @@ import java.util.List;
 import java.util.Optional;
 import java.util.stream.Collectors;
 
-import static org.apache.paimon.file.mergetree.compact.UniversalCompaction.createUnit;
+import static org.apache.paimon.mergetree.compact.UniversalCompaction.createUnit;
 import static org.assertj.core.api.Assertions.assertThat;
 
 /** Test for {@link UniversalCompaction}. */
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/mergetree/compact/aggregate/FieldAggregatorTest.java b/paimon-core/src/test/java/org/apache/paimon/mergetree/compact/aggregate/FieldAggregatorTest.java
similarity index 99%
rename from paimon-core/src/test/java/org/apache/paimon/file/mergetree/compact/aggregate/FieldAggregatorTest.java
rename to paimon-core/src/test/java/org/apache/paimon/mergetree/compact/aggregate/FieldAggregatorTest.java
index 397cf136e..d2c1d379d 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/mergetree/compact/aggregate/FieldAggregatorTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/mergetree/compact/aggregate/FieldAggregatorTest.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.mergetree.compact.aggregate;
+package org.apache.paimon.mergetree.compact.aggregate;
 
 import org.apache.paimon.data.BinaryString;
 import org.apache.paimon.data.Decimal;
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/operation/CleanedFileStoreExpireTest.java b/paimon-core/src/test/java/org/apache/paimon/operation/CleanedFileStoreExpireTest.java
similarity index 97%
rename from paimon-core/src/test/java/org/apache/paimon/file/operation/CleanedFileStoreExpireTest.java
rename to paimon-core/src/test/java/org/apache/paimon/operation/CleanedFileStoreExpireTest.java
index 8f73811d4..22426ce4b 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/operation/CleanedFileStoreExpireTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/operation/CleanedFileStoreExpireTest.java
@@ -16,14 +16,14 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.operation;
+package org.apache.paimon.operation;
 
 import org.apache.paimon.data.BinaryRow;
 import org.apache.paimon.data.Timestamp;
 import org.apache.paimon.file.KeyValue;
-import org.apache.paimon.file.io.DataFileMeta;
-import org.apache.paimon.file.manifest.FileKind;
-import org.apache.paimon.file.manifest.ManifestEntry;
+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;
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/operation/FileStoreCommitTest.java b/paimon-core/src/test/java/org/apache/paimon/operation/FileStoreCommitTest.java
similarity index 98%
rename from paimon-core/src/test/java/org/apache/paimon/file/operation/FileStoreCommitTest.java
rename to paimon-core/src/test/java/org/apache/paimon/operation/FileStoreCommitTest.java
index 7d98f211f..413d3404a 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/operation/FileStoreCommitTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/operation/FileStoreCommitTest.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.operation;
+package org.apache.paimon.operation;
 
 import org.apache.paimon.CoreOptions;
 import org.apache.paimon.data.BinaryRow;
@@ -24,11 +24,11 @@ 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.file.manifest.ManifestCommittable;
-import org.apache.paimon.file.mergetree.compact.DeduplicateMergeFunction;
-import org.apache.paimon.file.schema.Schema;
-import org.apache.paimon.file.schema.SchemaManager;
-import org.apache.paimon.file.schema.SchemaUtils;
+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;
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/operation/FileStoreExpireTestBase.java b/paimon-core/src/test/java/org/apache/paimon/operation/FileStoreExpireTestBase.java
similarity index 95%
rename from paimon-core/src/test/java/org/apache/paimon/file/operation/FileStoreExpireTestBase.java
rename to paimon-core/src/test/java/org/apache/paimon/operation/FileStoreExpireTestBase.java
index f04781d1f..af94ab019 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/operation/FileStoreExpireTestBase.java
+++ b/paimon-core/src/test/java/org/apache/paimon/operation/FileStoreExpireTestBase.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.operation;
+package org.apache.paimon.operation;
 
 import org.apache.paimon.CoreOptions;
 import org.apache.paimon.data.BinaryRow;
@@ -24,9 +24,9 @@ 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.file.mergetree.compact.DeduplicateMergeFunction;
-import org.apache.paimon.file.schema.Schema;
-import org.apache.paimon.file.schema.SchemaManager;
+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;
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/operation/KeyValueFileStoreReadTest.java b/paimon-core/src/test/java/org/apache/paimon/operation/KeyValueFileStoreReadTest.java
similarity index 96%
rename from paimon-core/src/test/java/org/apache/paimon/file/operation/KeyValueFileStoreReadTest.java
rename to paimon-core/src/test/java/org/apache/paimon/operation/KeyValueFileStoreReadTest.java
index 4b176707b..906b716e9 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/operation/KeyValueFileStoreReadTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/operation/KeyValueFileStoreReadTest.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.operation;
+package org.apache.paimon.operation;
 
 import org.apache.paimon.data.BinaryRow;
 import org.apache.paimon.data.GenericRow;
@@ -24,14 +24,14 @@ 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.file.manifest.ManifestEntry;
-import org.apache.paimon.file.mergetree.compact.DeduplicateMergeFunction;
-import org.apache.paimon.file.mergetree.compact.MergeFunctionFactory;
-import org.apache.paimon.file.mergetree.compact.ValueCountMergeFunction;
-import org.apache.paimon.file.schema.KeyValueFieldsExtractor;
-import org.apache.paimon.file.schema.Schema;
-import org.apache.paimon.file.schema.SchemaManager;
-import org.apache.paimon.file.schema.TableSchema;
+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.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;
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/operation/KeyValueFileStoreScanTest.java b/paimon-core/src/test/java/org/apache/paimon/operation/KeyValueFileStoreScanTest.java
similarity index 96%
rename from paimon-core/src/test/java/org/apache/paimon/file/operation/KeyValueFileStoreScanTest.java
rename to paimon-core/src/test/java/org/apache/paimon/operation/KeyValueFileStoreScanTest.java
index b239e670f..4c3cd9102 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/operation/KeyValueFileStoreScanTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/operation/KeyValueFileStoreScanTest.java
@@ -16,19 +16,19 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.operation;
+package org.apache.paimon.operation;
 
 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.file.manifest.ManifestFileMeta;
-import org.apache.paimon.file.manifest.ManifestList;
-import org.apache.paimon.file.mergetree.compact.DeduplicateMergeFunction;
-import org.apache.paimon.file.predicate.PredicateBuilder;
-import org.apache.paimon.file.schema.Schema;
-import org.apache.paimon.file.schema.SchemaManager;
+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;
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/operation/PartitionExpireTest.java b/paimon-core/src/test/java/org/apache/paimon/operation/PartitionExpireTest.java
similarity index 97%
rename from paimon-core/src/test/java/org/apache/paimon/file/operation/PartitionExpireTest.java
rename to paimon-core/src/test/java/org/apache/paimon/operation/PartitionExpireTest.java
index 31efeb003..0d0ed78ec 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/operation/PartitionExpireTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/operation/PartitionExpireTest.java
@@ -16,13 +16,13 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.operation;
+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.file.schema.Schema;
-import org.apache.paimon.file.schema.SchemaManager;
+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.table.AbstractFileStoreTable;
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/operation/TestCommitThread.java b/paimon-core/src/test/java/org/apache/paimon/operation/TestCommitThread.java
similarity index 98%
rename from paimon-core/src/test/java/org/apache/paimon/file/operation/TestCommitThread.java
rename to paimon-core/src/test/java/org/apache/paimon/operation/TestCommitThread.java
index 56ee23893..501f322a3 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/operation/TestCommitThread.java
+++ b/paimon-core/src/test/java/org/apache/paimon/operation/TestCommitThread.java
@@ -16,15 +16,15 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.operation;
+package org.apache.paimon.operation;
 
 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.file.manifest.ManifestCommittable;
-import org.apache.paimon.file.memory.HeapMemorySegmentPool;
-import org.apache.paimon.file.mergetree.MergeTreeWriter;
+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;
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/operation/UncleanedFileStoreExpireTest.java b/paimon-core/src/test/java/org/apache/paimon/operation/UncleanedFileStoreExpireTest.java
similarity index 98%
rename from paimon-core/src/test/java/org/apache/paimon/file/operation/UncleanedFileStoreExpireTest.java
rename to paimon-core/src/test/java/org/apache/paimon/operation/UncleanedFileStoreExpireTest.java
index f21cf8567..ea8755051 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/operation/UncleanedFileStoreExpireTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/operation/UncleanedFileStoreExpireTest.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.operation;
+package org.apache.paimon.operation;
 
 import org.apache.paimon.file.KeyValue;
 import org.apache.paimon.fs.Path;
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/partition/PartitionTimeExtractorTest.java b/paimon-core/src/test/java/org/apache/paimon/partition/PartitionTimeExtractorTest.java
similarity index 98%
rename from paimon-core/src/test/java/org/apache/paimon/file/partition/PartitionTimeExtractorTest.java
rename to paimon-core/src/test/java/org/apache/paimon/partition/PartitionTimeExtractorTest.java
index 4d73764d3..ca9b4869b 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/partition/PartitionTimeExtractorTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/partition/PartitionTimeExtractorTest.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.partition;
+package org.apache.paimon.partition;
 
 import org.junit.jupiter.api.Test;
 
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/predicate/BucketSelectorTest.java b/paimon-core/src/test/java/org/apache/paimon/predicate/BucketSelectorTest.java
similarity index 97%
rename from paimon-core/src/test/java/org/apache/paimon/file/predicate/BucketSelectorTest.java
rename to paimon-core/src/test/java/org/apache/paimon/predicate/BucketSelectorTest.java
index 94a95b9cb..089ca7196 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/predicate/BucketSelectorTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/predicate/BucketSelectorTest.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.predicate;
+package org.apache.paimon.predicate;
 
 import org.apache.paimon.types.IntType;
 import org.apache.paimon.types.RowType;
@@ -25,8 +25,8 @@ import org.junit.jupiter.api.Test;
 import java.util.Arrays;
 import java.util.Optional;
 
-import static org.apache.paimon.file.predicate.PredicateBuilder.and;
-import static org.apache.paimon.file.predicate.PredicateBuilder.or;
+import static org.apache.paimon.predicate.PredicateBuilder.and;
+import static org.apache.paimon.predicate.PredicateBuilder.or;
 import static org.assertj.core.api.Assertions.assertThat;
 
 /** Test for {@link BucketSelector}. */
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/predicate/PredicateBuilderTest.java b/paimon-core/src/test/java/org/apache/paimon/predicate/PredicateBuilderTest.java
similarity index 99%
rename from paimon-core/src/test/java/org/apache/paimon/file/predicate/PredicateBuilderTest.java
rename to paimon-core/src/test/java/org/apache/paimon/predicate/PredicateBuilderTest.java
index 456053f9c..425c28ca2 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/predicate/PredicateBuilderTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/predicate/PredicateBuilderTest.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.predicate;
+package org.apache.paimon.predicate;
 
 import org.apache.paimon.format.FieldStats;
 import org.apache.paimon.types.IntType;
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/predicate/PredicateTest.java b/paimon-core/src/test/java/org/apache/paimon/predicate/PredicateTest.java
similarity index 99%
rename from paimon-core/src/test/java/org/apache/paimon/file/predicate/PredicateTest.java
rename to paimon-core/src/test/java/org/apache/paimon/predicate/PredicateTest.java
index 9666e6188..c8a7527f0 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/predicate/PredicateTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/predicate/PredicateTest.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.predicate;
+package org.apache.paimon.predicate;
 
 import org.apache.paimon.format.FieldStats;
 import org.apache.paimon.types.IntType;
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/schema/DataTypeJsonParserTest.java b/paimon-core/src/test/java/org/apache/paimon/schema/DataTypeJsonParserTest.java
similarity index 99%
rename from paimon-core/src/test/java/org/apache/paimon/file/schema/DataTypeJsonParserTest.java
rename to paimon-core/src/test/java/org/apache/paimon/schema/DataTypeJsonParserTest.java
index cb3dea348..1b0ecaca9 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/schema/DataTypeJsonParserTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/schema/DataTypeJsonParserTest.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.schema;
+package org.apache.paimon.schema;
 
 import org.apache.paimon.file.utils.JsonSerdeUtil;
 import org.apache.paimon.types.ArrayType;
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/schema/SchemaEvolutionUtilTest.java b/paimon-core/src/test/java/org/apache/paimon/schema/SchemaEvolutionUtilTest.java
similarity index 98%
rename from paimon-core/src/test/java/org/apache/paimon/file/schema/SchemaEvolutionUtilTest.java
rename to paimon-core/src/test/java/org/apache/paimon/schema/SchemaEvolutionUtilTest.java
index 9ee33c127..423135d33 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/schema/SchemaEvolutionUtilTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/schema/SchemaEvolutionUtilTest.java
@@ -16,15 +16,15 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.schema;
+package org.apache.paimon.schema;
 
 import org.apache.paimon.data.GenericRow;
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.file.predicate.Equal;
-import org.apache.paimon.file.predicate.IsNotNull;
-import org.apache.paimon.file.predicate.IsNull;
-import org.apache.paimon.file.predicate.LeafPredicate;
-import org.apache.paimon.file.predicate.Predicate;
+import org.apache.paimon.predicate.Equal;
+import org.apache.paimon.predicate.IsNotNull;
+import org.apache.paimon.predicate.IsNull;
+import org.apache.paimon.predicate.LeafPredicate;
+import org.apache.paimon.predicate.Predicate;
 import org.apache.paimon.types.BigIntType;
 import org.apache.paimon.types.DataField;
 import org.apache.paimon.types.DataTypes;
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/schema/SchemaManagerTest.java b/paimon-core/src/test/java/org/apache/paimon/schema/SchemaManagerTest.java
similarity index 99%
rename from paimon-core/src/test/java/org/apache/paimon/file/schema/SchemaManagerTest.java
rename to paimon-core/src/test/java/org/apache/paimon/schema/SchemaManagerTest.java
index 85761b5af..a264bcebd 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/schema/SchemaManagerTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/schema/SchemaManagerTest.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.schema;
+package org.apache.paimon.schema;
 
 import org.apache.paimon.CoreOptions;
 import org.apache.paimon.file.WriteMode;
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/schema/SchemaUtils.java b/paimon-core/src/test/java/org/apache/paimon/schema/SchemaUtils.java
similarity index 98%
rename from paimon-core/src/test/java/org/apache/paimon/file/schema/SchemaUtils.java
rename to paimon-core/src/test/java/org/apache/paimon/schema/SchemaUtils.java
index fb36490e0..435c3263b 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/schema/SchemaUtils.java
+++ b/paimon-core/src/test/java/org/apache/paimon/schema/SchemaUtils.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.schema;
+package org.apache.paimon.schema;
 
 import org.apache.paimon.CoreOptions;
 import org.apache.paimon.types.DataField;
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/schema/TableSchemaSerializationTest.java b/paimon-core/src/test/java/org/apache/paimon/schema/TableSchemaSerializationTest.java
similarity index 95%
rename from paimon-core/src/test/java/org/apache/paimon/file/schema/TableSchemaSerializationTest.java
rename to paimon-core/src/test/java/org/apache/paimon/schema/TableSchemaSerializationTest.java
index 4baee264a..9b66536a0 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/schema/TableSchemaSerializationTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/schema/TableSchemaSerializationTest.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.schema;
+package org.apache.paimon.schema;
 
 import org.apache.paimon.file.utils.JsonSerdeUtil;
 import org.apache.paimon.types.ArrayType;
@@ -32,7 +32,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import static org.apache.paimon.file.schema.TableSchemaTest.newRowType;
+import static org.apache.paimon.schema.TableSchemaTest.newRowType;
 import static org.assertj.core.api.Assertions.assertThat;
 
 /** Test for serialize {@link TableSchema}. */
diff --git a/paimon-core/src/test/java/org/apache/paimon/file/schema/TableSchemaTest.java b/paimon-core/src/test/java/org/apache/paimon/schema/TableSchemaTest.java
similarity index 98%
rename from paimon-core/src/test/java/org/apache/paimon/file/schema/TableSchemaTest.java
rename to paimon-core/src/test/java/org/apache/paimon/schema/TableSchemaTest.java
index 83053ad6c..378bd2f27 100644
--- a/paimon-core/src/test/java/org/apache/paimon/file/schema/TableSchemaTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/schema/TableSchemaTest.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.paimon.file.schema;
+package org.apache.paimon.schema;
 
 import org.apache.paimon.types.DataField;
 import org.apache.paimon.types.IntType;
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 19db80fae..8a98fd042 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,8 +18,8 @@
 
 package org.apache.paimon.table;
 
-import org.apache.paimon.file.schema.SchemaManager;
-import org.apache.paimon.file.schema.TableSchema;
+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 6cab341fd..c983d2445 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
@@ -23,13 +23,13 @@ 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.file.operation.ScanKind;
-import org.apache.paimon.file.predicate.Predicate;
-import org.apache.paimon.file.predicate.PredicateBuilder;
-import org.apache.paimon.file.schema.Schema;
-import org.apache.paimon.file.schema.SchemaManager;
-import org.apache.paimon.file.schema.SchemaUtils;
-import org.apache.paimon.file.schema.TableSchema;
+import org.apache.paimon.operation.ScanKind;
+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;
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 1f2883297..6a8d5729e 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
@@ -20,8 +20,8 @@ package org.apache.paimon.table;
 
 import org.apache.paimon.CoreOptions;
 import org.apache.paimon.file.WriteMode;
-import org.apache.paimon.file.schema.SchemaManager;
-import org.apache.paimon.file.schema.TableSchema;
+import org.apache.paimon.schema.SchemaManager;
+import org.apache.paimon.schema.TableSchema;
 import org.junit.jupiter.api.BeforeEach;
 
 import java.util.Map;
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 9b1fc9503..92e82246a 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
@@ -20,9 +20,9 @@ package org.apache.paimon.table;
 
 import org.apache.paimon.CoreOptions;
 import org.apache.paimon.file.WriteMode;
-import org.apache.paimon.file.io.DataFileMeta;
-import org.apache.paimon.file.schema.SchemaManager;
-import org.apache.paimon.file.schema.TableSchema;
+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.junit.jupiter.api.BeforeEach;
 
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 6ffb965ac..581f78881 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
@@ -20,9 +20,9 @@ package org.apache.paimon.table;
 
 import org.apache.paimon.CoreOptions;
 import org.apache.paimon.file.WriteMode;
-import org.apache.paimon.file.io.DataFileMeta;
-import org.apache.paimon.file.schema.SchemaManager;
-import org.apache.paimon.file.schema.TableSchema;
+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.junit.jupiter.api.BeforeEach;
 
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 d3b3fff64..0797bb374 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
@@ -20,8 +20,8 @@ package org.apache.paimon.table;
 
 import org.apache.paimon.CoreOptions;
 import org.apache.paimon.file.WriteMode;
-import org.apache.paimon.file.schema.SchemaManager;
-import org.apache.paimon.file.schema.TableSchema;
+import org.apache.paimon.schema.SchemaManager;
+import org.apache.paimon.schema.TableSchema;
 import org.junit.jupiter.api.BeforeEach;
 
 import java.util.Collections;
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 72bb1650c..fb4b02c48 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
@@ -20,9 +20,9 @@ package org.apache.paimon.table;
 
 import org.apache.paimon.CoreOptions;
 import org.apache.paimon.file.WriteMode;
-import org.apache.paimon.file.io.DataFileMeta;
-import org.apache.paimon.file.schema.SchemaManager;
-import org.apache.paimon.file.schema.TableSchema;
+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.junit.jupiter.api.BeforeEach;
 
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 55bdfbbb5..80a5985e6 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
@@ -20,8 +20,8 @@ package org.apache.paimon.table;
 
 import org.apache.paimon.CoreOptions;
 import org.apache.paimon.file.WriteMode;
-import org.apache.paimon.file.schema.SchemaManager;
-import org.apache.paimon.file.schema.TableSchema;
+import org.apache.paimon.schema.SchemaManager;
+import org.apache.paimon.schema.TableSchema;
 import org.junit.jupiter.api.BeforeEach;
 
 import java.util.Collections;
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 7ae26175a..0f87fd81f 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
@@ -20,9 +20,9 @@ package org.apache.paimon.table;
 
 import org.apache.paimon.CoreOptions;
 import org.apache.paimon.file.WriteMode;
-import org.apache.paimon.file.io.DataFileMeta;
-import org.apache.paimon.file.schema.SchemaManager;
-import org.apache.paimon.file.schema.TableSchema;
+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.junit.jupiter.api.BeforeEach;
 
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 2266a7913..42769bb89 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
@@ -20,14 +20,14 @@ package org.apache.paimon.table;
 
 import org.apache.paimon.CoreOptions;
 import org.apache.paimon.file.WriteMode;
-import org.apache.paimon.file.io.DataFilePathFactory;
-import org.apache.paimon.file.operation.ScanKind;
-import org.apache.paimon.file.predicate.Predicate;
-import org.apache.paimon.file.predicate.PredicateBuilder;
-import org.apache.paimon.file.schema.Schema;
-import org.apache.paimon.file.schema.SchemaManager;
-import org.apache.paimon.file.schema.SchemaUtils;
-import org.apache.paimon.file.schema.TableSchema;
+import org.apache.paimon.io.DataFilePathFactory;
+import org.apache.paimon.operation.ScanKind;
+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;
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 185e4d011..8a14a491c 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
@@ -21,10 +21,10 @@ package org.apache.paimon.table;
 import org.apache.paimon.CoreOptions;
 import org.apache.paimon.data.InternalRow;
 import org.apache.paimon.file.WriteMode;
-import org.apache.paimon.file.predicate.Predicate;
-import org.apache.paimon.file.predicate.PredicateBuilder;
-import org.apache.paimon.file.schema.SchemaManager;
-import org.apache.paimon.file.schema.TableSchema;
+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.table.source.Split;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
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 b826ff327..a2254633f 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
@@ -20,10 +20,10 @@ package org.apache.paimon.table;
 
 import org.apache.paimon.CoreOptions;
 import org.apache.paimon.file.WriteMode;
-import org.apache.paimon.file.operation.ScanKind;
-import org.apache.paimon.file.predicate.PredicateBuilder;
-import org.apache.paimon.file.schema.SchemaManager;
-import org.apache.paimon.file.schema.TableSchema;
+import org.apache.paimon.operation.ScanKind;
+import org.apache.paimon.predicate.PredicateBuilder;
+import org.apache.paimon.schema.SchemaManager;
+import org.apache.paimon.schema.TableSchema;
 import org.apache.paimon.table.source.Split;
 import org.apache.paimon.table.source.TableRead;
 import org.apache.paimon.types.RowType;
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 80bccb847..c9f2f1f40 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
@@ -20,11 +20,11 @@ package org.apache.paimon.table;
 
 import org.apache.paimon.CoreOptions;
 import org.apache.paimon.file.WriteMode;
-import org.apache.paimon.file.io.DataFileMeta;
-import org.apache.paimon.file.predicate.Predicate;
-import org.apache.paimon.file.predicate.PredicateBuilder;
-import org.apache.paimon.file.schema.SchemaManager;
-import org.apache.paimon.file.schema.TableSchema;
+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.table.source.DataSplit;
 import org.junit.jupiter.api.BeforeEach;
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 f3a6ffbb8..527f482f5 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
@@ -24,13 +24,13 @@ 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.file.operation.ScanKind;
-import org.apache.paimon.file.predicate.Predicate;
-import org.apache.paimon.file.predicate.PredicateBuilder;
-import org.apache.paimon.file.schema.Schema;
-import org.apache.paimon.file.schema.SchemaManager;
-import org.apache.paimon.file.schema.SchemaUtils;
-import org.apache.paimon.file.schema.TableSchema;
+import org.apache.paimon.operation.ScanKind;
+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;
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 8bafc2210..1f8296d69 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
@@ -21,11 +21,11 @@ package org.apache.paimon.table;
 import org.apache.paimon.CoreOptions;
 import org.apache.paimon.data.BinaryString;
 import org.apache.paimon.file.WriteMode;
-import org.apache.paimon.file.io.DataFileMeta;
-import org.apache.paimon.file.predicate.Predicate;
-import org.apache.paimon.file.predicate.PredicateBuilder;
-import org.apache.paimon.file.schema.SchemaManager;
-import org.apache.paimon.file.schema.TableSchema;
+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.table.source.DataSplit;
diff --git a/paimon-core/src/test/java/org/apache/paimon/table/ColumnTypeFileDataTestBase.java b/paimon-core/src/test/java/org/apache/paimon/table/ColumnTypeFileDataTestBase.java
index 811d600ca..21471e14e 100644
--- a/paimon-core/src/test/java/org/apache/paimon/table/ColumnTypeFileDataTestBase.java
+++ b/paimon-core/src/test/java/org/apache/paimon/table/ColumnTypeFileDataTestBase.java
@@ -20,8 +20,8 @@ package org.apache.paimon.table;
 
 import org.apache.paimon.CoreOptions;
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.file.predicate.Predicate;
-import org.apache.paimon.file.predicate.PredicateBuilder;
+import org.apache.paimon.predicate.Predicate;
+import org.apache.paimon.predicate.PredicateBuilder;
 import org.apache.paimon.table.source.Split;
 import org.apache.paimon.types.DataField;
 import org.apache.paimon.utils.RowDataUtils;
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 7b400dfc8..cee712fed 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,9 +21,9 @@ 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.file.io.DataFileMeta;
-import org.apache.paimon.file.predicate.Predicate;
-import org.apache.paimon.file.predicate.PredicateBuilder;
+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.table.source.DataSplit;
diff --git a/paimon-core/src/test/java/org/apache/paimon/table/FileDataFilterTestBase.java b/paimon-core/src/test/java/org/apache/paimon/table/FileDataFilterTestBase.java
index f78445825..066c50927 100644
--- a/paimon-core/src/test/java/org/apache/paimon/table/FileDataFilterTestBase.java
+++ b/paimon-core/src/test/java/org/apache/paimon/table/FileDataFilterTestBase.java
@@ -19,12 +19,12 @@
 package org.apache.paimon.table;
 
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.file.operation.ScanKind;
-import org.apache.paimon.file.predicate.Equal;
-import org.apache.paimon.file.predicate.IsNull;
-import org.apache.paimon.file.predicate.LeafPredicate;
-import org.apache.paimon.file.predicate.Predicate;
-import org.apache.paimon.file.predicate.PredicateBuilder;
+import org.apache.paimon.operation.ScanKind;
+import org.apache.paimon.predicate.Equal;
+import org.apache.paimon.predicate.IsNull;
+import org.apache.paimon.predicate.LeafPredicate;
+import org.apache.paimon.predicate.Predicate;
+import org.apache.paimon.predicate.PredicateBuilder;
 import org.apache.paimon.table.source.Split;
 import org.apache.paimon.table.source.TableRead;
 import org.apache.paimon.types.DataTypes;
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 4352a34f8..9b61f0899 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,9 +18,9 @@
 
 package org.apache.paimon.table;
 
-import org.apache.paimon.file.io.DataFileMeta;
-import org.apache.paimon.file.predicate.Predicate;
-import org.apache.paimon.file.predicate.PredicateBuilder;
+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.table.source.DataSplit;
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 c47bc99b2..d86086df4 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
@@ -26,12 +26,12 @@ 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.file.io.DataFileMeta;
-import org.apache.paimon.file.mergetree.compact.ConcatRecordReader;
-import org.apache.paimon.file.mergetree.compact.ConcatRecordReader.ReaderSupplier;
-import org.apache.paimon.file.predicate.PredicateBuilder;
-import org.apache.paimon.file.schema.SchemaChange;
-import org.apache.paimon.file.schema.SchemaManager;
+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;
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 9d46183c9..e0d315cf7 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,12 +24,12 @@ 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.file.io.DataFileMeta;
-import org.apache.paimon.file.mergetree.compact.ConcatRecordReader;
-import org.apache.paimon.file.schema.Schema;
-import org.apache.paimon.file.schema.SchemaChange;
-import org.apache.paimon.file.schema.SchemaManager;
-import org.apache.paimon.file.schema.TableSchema;
+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;
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 50eef3c6c..d249fc1a5 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,11 +21,11 @@ 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.file.predicate.Predicate;
-import org.apache.paimon.file.predicate.PredicateBuilder;
-import org.apache.paimon.file.schema.Schema;
-import org.apache.paimon.file.schema.SchemaChange;
-import org.apache.paimon.file.schema.SchemaManager;
+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;
@@ -50,8 +50,8 @@ import java.util.List;
 import java.util.UUID;
 import java.util.function.Consumer;
 
-import static org.apache.paimon.file.schema.SystemColumns.KEY_FIELD_PREFIX;
-import static org.apache.paimon.file.schema.SystemColumns.SYSTEM_FIELD_NAMES;
+import static org.apache.paimon.schema.SystemColumns.KEY_FIELD_PREFIX;
+import static org.apache.paimon.schema.SystemColumns.SYSTEM_FIELD_NAMES;
 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/table/WritePreemptMemoryTest.java b/paimon-core/src/test/java/org/apache/paimon/table/WritePreemptMemoryTest.java
index a28be963d..e33580fbc 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
@@ -21,10 +21,10 @@ package org.apache.paimon.table;
 import org.apache.paimon.CoreOptions;
 import org.apache.paimon.data.GenericRow;
 import org.apache.paimon.file.WriteMode;
-import org.apache.paimon.file.schema.Schema;
-import org.apache.paimon.file.schema.SchemaManager;
-import org.apache.paimon.file.schema.SchemaUtils;
-import org.apache.paimon.file.schema.TableSchema;
+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;
diff --git a/paimon-core/src/test/java/org/apache/paimon/table/sink/CommitMessageSerializerTest.java b/paimon-core/src/test/java/org/apache/paimon/table/sink/CommitMessageSerializerTest.java
index b808e19de..244ebe6db 100644
--- a/paimon-core/src/test/java/org/apache/paimon/table/sink/CommitMessageSerializerTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/table/sink/CommitMessageSerializerTest.java
@@ -18,15 +18,15 @@
 
 package org.apache.paimon.table.sink;
 
-import org.apache.paimon.file.io.CompactIncrement;
-import org.apache.paimon.file.io.NewFilesIncrement;
+import org.apache.paimon.io.CompactIncrement;
+import org.apache.paimon.io.NewFilesIncrement;
 import org.junit.jupiter.api.Test;
 
 import java.io.IOException;
 
-import static org.apache.paimon.file.manifest.ManifestCommittableSerializerTest.randomCompactIncrement;
-import static org.apache.paimon.file.manifest.ManifestCommittableSerializerTest.randomNewFilesIncrement;
-import static org.apache.paimon.file.mergetree.compact.MergeTreeCompactManagerTest.row;
+import static org.apache.paimon.manifest.ManifestCommittableSerializerTest.randomCompactIncrement;
+import static org.apache.paimon.manifest.ManifestCommittableSerializerTest.randomNewFilesIncrement;
+import static org.apache.paimon.mergetree.compact.MergeTreeCompactManagerTest.row;
 import static org.assertj.core.api.Assertions.assertThat;
 
 /** Test for {@link CommitMessageSerializer}. */
diff --git a/paimon-core/src/test/java/org/apache/paimon/table/sink/SinkRecordConverterTest.java b/paimon-core/src/test/java/org/apache/paimon/table/sink/SinkRecordConverterTest.java
index 52c995283..d43afe7ea 100644
--- a/paimon-core/src/test/java/org/apache/paimon/table/sink/SinkRecordConverterTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/table/sink/SinkRecordConverterTest.java
@@ -20,7 +20,7 @@ package org.apache.paimon.table.sink;
 
 import org.apache.paimon.data.GenericRow;
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.file.schema.TableSchema;
+import org.apache.paimon.schema.TableSchema;
 import org.apache.paimon.types.DataField;
 import org.apache.paimon.types.IntType;
 import org.apache.paimon.types.RowType;
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 81b6f0312..c7964c5e7 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,11 +21,11 @@ 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.file.operation.AbstractFileStoreWrite;
-import org.apache.paimon.file.schema.Schema;
-import org.apache.paimon.file.schema.SchemaManager;
-import org.apache.paimon.file.schema.SchemaUtils;
-import org.apache.paimon.file.schema.TableSchema;
+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;
diff --git a/paimon-core/src/test/java/org/apache/paimon/table/source/SplitGeneratorTest.java b/paimon-core/src/test/java/org/apache/paimon/table/source/SplitGeneratorTest.java
index 4ca1f2d90..8e2865eb0 100644
--- a/paimon-core/src/test/java/org/apache/paimon/table/source/SplitGeneratorTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/table/source/SplitGeneratorTest.java
@@ -19,7 +19,7 @@
 package org.apache.paimon.table.source;
 
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.file.io.DataFileMeta;
+import org.apache.paimon.io.DataFileMeta;
 import org.junit.jupiter.api.Test;
 
 import java.util.Arrays;
@@ -28,7 +28,7 @@ import java.util.Comparator;
 import java.util.List;
 import java.util.stream.Collectors;
 
-import static org.apache.paimon.file.io.DataFileTestUtils.fromMinMax;
+import static org.apache.paimon.io.DataFileTestUtils.fromMinMax;
 import static org.assertj.core.api.Assertions.assertThat;
 
 /** Test for {@link AppendOnlySplitGenerator} and {@link MergeTreeSplitGenerator}. */
diff --git a/paimon-core/src/test/java/org/apache/paimon/table/source/SplitTest.java b/paimon-core/src/test/java/org/apache/paimon/table/source/SplitTest.java
index 3f4b1473e..42fafa7c4 100644
--- a/paimon-core/src/test/java/org/apache/paimon/table/source/SplitTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/table/source/SplitTest.java
@@ -18,8 +18,8 @@
 
 package org.apache.paimon.table.source;
 
-import org.apache.paimon.file.io.DataFileMeta;
-import org.apache.paimon.file.io.DataFileTestDataGenerator;
+import org.apache.paimon.io.DataFileMeta;
+import org.apache.paimon.io.DataFileTestDataGenerator;
 import org.apache.paimon.io.DataInputDeserializer;
 import org.apache.paimon.io.DataOutputViewStreamWrapper;
 import org.junit.jupiter.api.Test;
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 cdca5fc09..6d860d696 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
@@ -19,7 +19,7 @@
 package org.apache.paimon.table.source.snapshot;
 
 import org.apache.paimon.file.Snapshot;
-import org.apache.paimon.file.manifest.ManifestCommittable;
+import org.apache.paimon.manifest.ManifestCommittable;
 import org.apache.paimon.file.utils.SnapshotManager;
 import org.apache.paimon.table.sink.TableCommitImpl;
 import org.junit.jupiter.api.Test;
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 190cffd3e..ad6712986 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
@@ -20,7 +20,7 @@ package org.apache.paimon.table.source.snapshot;
 
 import org.apache.paimon.data.InternalRow;
 import org.apache.paimon.file.Snapshot;
-import org.apache.paimon.file.io.DataFileMetaSerializer;
+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;
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 23c4b7ed2..11bdea810 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,10 +22,10 @@ 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.file.mergetree.compact.ConcatRecordReader;
-import org.apache.paimon.file.schema.Schema;
-import org.apache.paimon.file.schema.SchemaManager;
-import org.apache.paimon.file.schema.TableSchema;
+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;
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 fa002f750..61a288df2 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,8 +38,8 @@ 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.file.schema.Schema;
-import org.apache.paimon.file.schema.TableSchema;
+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;
diff --git a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/FlinkCatalog.java b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/FlinkCatalog.java
index e5bd512b9..90bb7b537 100644
--- a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/FlinkCatalog.java
+++ b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/FlinkCatalog.java
@@ -45,10 +45,10 @@ import org.apache.flink.table.factories.Factory;
 import org.apache.flink.table.types.logical.RowType;
 
 import org.apache.paimon.annotation.VisibleForTesting;
-import org.apache.paimon.file.catalog.Catalog;
-import org.apache.paimon.file.catalog.Identifier;
-import org.apache.paimon.file.schema.Schema;
-import org.apache.paimon.file.schema.SchemaChange;
+import org.apache.paimon.catalog.Catalog;
+import org.apache.paimon.catalog.Identifier;
+import org.apache.paimon.schema.Schema;
+import org.apache.paimon.schema.SchemaChange;
 import org.apache.paimon.table.FileStoreTable;
 import org.apache.paimon.table.Table;
 
diff --git a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/FlinkCatalogFactory.java b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/FlinkCatalogFactory.java
index 5c62de6fb..b9d90ee16 100644
--- a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/FlinkCatalogFactory.java
+++ b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/FlinkCatalogFactory.java
@@ -20,8 +20,8 @@ package org.apache.paimon.connector;
 
 import org.apache.flink.table.store.catalog.CatalogContext;
 
-import org.apache.paimon.file.catalog.Catalog;
-import org.apache.paimon.file.catalog.CatalogFactory;
+import org.apache.paimon.catalog.Catalog;
+import org.apache.paimon.catalog.CatalogFactory;
 import org.apache.paimon.options.ConfigOption;
 import org.apache.paimon.options.ConfigOptions;
 
diff --git a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/PredicateConverter.java b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/PredicateConverter.java
index 1d4eed200..a28d1bcb0 100644
--- a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/PredicateConverter.java
+++ b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/PredicateConverter.java
@@ -34,8 +34,8 @@ import org.apache.flink.table.types.logical.LogicalTypeFamily;
 import org.apache.flink.table.types.logical.RowType;
 
 import org.apache.paimon.data.BinaryString;
-import org.apache.paimon.file.predicate.Predicate;
-import org.apache.paimon.file.predicate.PredicateBuilder;
+import org.apache.paimon.predicate.Predicate;
+import org.apache.paimon.predicate.PredicateBuilder;
 import org.apache.paimon.utils.TypeUtils;
 
 import java.util.ArrayList;
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 e50c89117..6ed238933 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
@@ -26,8 +26,8 @@ import org.apache.flink.table.factories.FactoryUtil;
 
 import org.apache.paimon.CoreOptions;
 import org.apache.paimon.connector.sink.TableStoreSink;
-import org.apache.paimon.file.catalog.CatalogLock;
-import org.apache.paimon.file.schema.SchemaManager;
+import org.apache.paimon.catalog.CatalogLock;
+import org.apache.paimon.schema.SchemaManager;
 import org.apache.paimon.fs.FileIO;
 import org.apache.paimon.fs.Path;
 import org.apache.paimon.options.Options;
diff --git a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/action/Action.java b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/action/Action.java
index a43a764a7..0e4c86099 100644
--- a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/action/Action.java
+++ b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/action/Action.java
@@ -21,7 +21,7 @@ package org.apache.paimon.connector.action;
 import org.apache.flink.api.java.tuple.Tuple3;
 import org.apache.flink.api.java.utils.MultipleParameterTool;
 
-import org.apache.paimon.file.catalog.CatalogUtils;
+import org.apache.paimon.catalog.CatalogUtils;
 
 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 ca6fb5b41..d028a06c5 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
@@ -31,10 +31,10 @@ 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.file.catalog.Catalog;
-import org.apache.paimon.file.catalog.CatalogFactory;
-import org.apache.paimon.file.catalog.Identifier;
-import org.apache.paimon.file.operation.Lock;
+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;
 import org.apache.paimon.table.FileStoreTable;
@@ -49,7 +49,7 @@ import java.util.List;
 import java.util.UUID;
 import java.util.stream.Collectors;
 
-import static org.apache.paimon.file.catalog.Catalog.DEFAULT_DATABASE;
+import static org.apache.paimon.catalog.Catalog.DEFAULT_DATABASE;
 
 /** Abstract base of {@link Action}. */
 public abstract class ActionBase implements Action {
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 24754f24b..9a8a03f4b 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,9 +29,9 @@ 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.file.predicate.Predicate;
-import org.apache.paimon.file.predicate.PredicateFilter;
-import org.apache.paimon.file.schema.TableSchema;
+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;
@@ -61,7 +61,7 @@ import java.util.stream.Collectors;
 import java.util.stream.IntStream;
 
 import static org.apache.paimon.connector.RocksDBOptions.LOOKUP_CACHE_ROWS;
-import static org.apache.paimon.file.predicate.PredicateBuilder.transformFieldMapping;
+import static org.apache.paimon.predicate.PredicateBuilder.transformFieldMapping;
 import static org.apache.paimon.utils.Preconditions.checkArgument;
 
 /** A lookup {@link TableFunction} for file store. */
diff --git a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/sink/BucketStreamPartitioner.java b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/sink/BucketStreamPartitioner.java
index e7727f7cf..7fe8ba0de 100644
--- a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/sink/BucketStreamPartitioner.java
+++ b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/sink/BucketStreamPartitioner.java
@@ -26,7 +26,7 @@ import org.apache.flink.table.data.RowData;
 
 import org.apache.paimon.connector.FlinkRowWrapper;
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.file.schema.TableSchema;
+import org.apache.paimon.schema.TableSchema;
 import org.apache.paimon.table.sink.BucketComputer;
 import org.apache.paimon.table.sink.PartitionComputer;
 
diff --git a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/sink/CommittableStateManager.java b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/sink/CommittableStateManager.java
index f67ea7d9f..7712a9803 100644
--- a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/sink/CommittableStateManager.java
+++ b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/sink/CommittableStateManager.java
@@ -20,14 +20,14 @@ package org.apache.paimon.connector.sink;
 import org.apache.flink.runtime.state.StateInitializationContext;
 import org.apache.flink.runtime.state.StateSnapshotContext;
 
-import org.apache.paimon.file.manifest.ManifestCommittable;
+import org.apache.paimon.manifest.ManifestCommittable;
 
 import java.io.Serializable;
 import java.util.List;
 
 /**
  * Helper interface for {@link CommitterOperator}. This interface manages operator states about
- * {@link org.apache.paimon.file.manifest.ManifestCommittable}.
+ * {@link org.apache.paimon.manifest.ManifestCommittable}.
  */
 public interface CommittableStateManager extends Serializable {
 
diff --git a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/sink/Committer.java b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/sink/Committer.java
index 0629a79b2..9a2bb6026 100644
--- a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/sink/Committer.java
+++ b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/sink/Committer.java
@@ -19,7 +19,7 @@
 
 package org.apache.paimon.connector.sink;
 
-import org.apache.paimon.file.manifest.ManifestCommittable;
+import org.apache.paimon.manifest.ManifestCommittable;
 
 import java.io.IOException;
 import java.util.List;
diff --git a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/sink/CommitterOperator.java b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/sink/CommitterOperator.java
index c64ffc8ae..7605bcdb4 100644
--- a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/sink/CommitterOperator.java
+++ b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/sink/CommitterOperator.java
@@ -27,7 +27,7 @@ import org.apache.flink.streaming.api.watermark.Watermark;
 import org.apache.flink.streaming.runtime.streamrecord.StreamRecord;
 import org.apache.flink.util.function.SerializableFunction;
 
-import org.apache.paimon.file.manifest.ManifestCommittable;
+import org.apache.paimon.manifest.ManifestCommittable;
 
 import java.util.ArrayDeque;
 import java.util.ArrayList;
diff --git a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/sink/CompactorSink.java b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/sink/CompactorSink.java
index af74fc56c..cca36ab7e 100644
--- a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/sink/CompactorSink.java
+++ b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/sink/CompactorSink.java
@@ -22,7 +22,7 @@ import org.apache.flink.streaming.api.operators.OneInputStreamOperator;
 import org.apache.flink.table.data.RowData;
 import org.apache.flink.util.function.SerializableFunction;
 
-import org.apache.paimon.file.operation.Lock;
+import org.apache.paimon.operation.Lock;
 import org.apache.paimon.table.FileStoreTable;
 
 /** {@link FlinkSink} for dedicated compact jobs. */
diff --git a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/sink/CompactorSinkBuilder.java b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/sink/CompactorSinkBuilder.java
index e02e9824b..494c9c703 100644
--- a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/sink/CompactorSinkBuilder.java
+++ b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/sink/CompactorSinkBuilder.java
@@ -24,7 +24,7 @@ import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
 import org.apache.flink.streaming.api.transformations.PartitionTransformation;
 import org.apache.flink.table.data.RowData;
 
-import org.apache.paimon.file.operation.Lock;
+import org.apache.paimon.operation.Lock;
 import org.apache.paimon.table.FileStoreTable;
 import org.apache.paimon.table.system.BucketsTable;
 
diff --git a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/sink/FileStoreSink.java b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/sink/FileStoreSink.java
index a9a481728..2b6e86a9a 100644
--- a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/sink/FileStoreSink.java
+++ b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/sink/FileStoreSink.java
@@ -23,8 +23,8 @@ import org.apache.flink.table.data.RowData;
 import org.apache.flink.util.function.SerializableFunction;
 
 import org.apache.paimon.connector.VersionedSerializerWrapper;
-import org.apache.paimon.file.manifest.ManifestCommittableSerializer;
-import org.apache.paimon.file.operation.Lock;
+import org.apache.paimon.manifest.ManifestCommittableSerializer;
+import org.apache.paimon.operation.Lock;
 import org.apache.paimon.table.FileStoreTable;
 
 import javax.annotation.Nullable;
diff --git a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/sink/FlinkSinkBuilder.java b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/sink/FlinkSinkBuilder.java
index 194b1c3bb..ee32ba8ce 100644
--- a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/sink/FlinkSinkBuilder.java
+++ b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/sink/FlinkSinkBuilder.java
@@ -26,7 +26,7 @@ import org.apache.flink.streaming.api.transformations.PartitionTransformation;
 import org.apache.flink.table.data.RowData;
 
 import org.apache.paimon.connector.FlinkConnectorOptions;
-import org.apache.paimon.file.operation.Lock;
+import org.apache.paimon.operation.Lock;
 import org.apache.paimon.table.FileStoreTable;
 
 import javax.annotation.Nullable;
diff --git a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/sink/NoopCommittableStateManager.java b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/sink/NoopCommittableStateManager.java
index 60661a4c0..11d7b10b1 100644
--- a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/sink/NoopCommittableStateManager.java
+++ b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/sink/NoopCommittableStateManager.java
@@ -20,7 +20,7 @@ package org.apache.paimon.connector.sink;
 import org.apache.flink.runtime.state.StateInitializationContext;
 import org.apache.flink.runtime.state.StateSnapshotContext;
 
-import org.apache.paimon.file.manifest.ManifestCommittable;
+import org.apache.paimon.manifest.ManifestCommittable;
 
 import java.util.List;
 
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 13218affd..f5c558679 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
@@ -25,7 +25,7 @@ import org.apache.flink.runtime.state.StateInitializationContext;
 import org.apache.flink.runtime.state.StateSnapshotContext;
 import org.apache.flink.streaming.api.operators.util.SimpleVersionedListState;
 
-import org.apache.paimon.file.manifest.ManifestCommittable;
+import org.apache.paimon.manifest.ManifestCommittable;
 import org.apache.paimon.file.utils.SerializableSupplier;
 
 import java.util.ArrayList;
diff --git a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/sink/StoreCommitter.java b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/sink/StoreCommitter.java
index a51a5b8f3..671c94b61 100644
--- a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/sink/StoreCommitter.java
+++ b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/sink/StoreCommitter.java
@@ -18,7 +18,7 @@
 
 package org.apache.paimon.connector.sink;
 
-import org.apache.paimon.file.manifest.ManifestCommittable;
+import org.apache.paimon.manifest.ManifestCommittable;
 import org.apache.paimon.table.sink.CommitMessage;
 import org.apache.paimon.table.sink.TableCommit;
 import org.apache.paimon.table.sink.TableCommitImpl;
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 bbfea4376..e9145e119 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
@@ -26,8 +26,8 @@ import org.apache.paimon.CoreOptions;
 import org.apache.paimon.connector.FlinkRowWrapper;
 import org.apache.paimon.data.BinaryRow;
 import org.apache.paimon.data.serializer.InternalRowSerializer;
-import org.apache.paimon.file.io.DataFileMeta;
-import org.apache.paimon.file.io.DataFileMetaSerializer;
+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.Preconditions;
diff --git a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/sink/StoreSinkWrite.java b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/sink/StoreSinkWrite.java
index 59a6f2185..efd4f71b4 100644
--- a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/sink/StoreSinkWrite.java
+++ b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/sink/StoreSinkWrite.java
@@ -24,7 +24,7 @@ import org.apache.flink.runtime.state.StateSnapshotContext;
 
 import org.apache.paimon.data.BinaryRow;
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.file.io.DataFileMeta;
+import org.apache.paimon.io.DataFileMeta;
 import org.apache.paimon.table.FileStoreTable;
 import org.apache.paimon.table.sink.SinkRecord;
 
diff --git a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/sink/StoreSinkWriteImpl.java b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/sink/StoreSinkWriteImpl.java
index 928d3596f..c7ace62e5 100644
--- a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/sink/StoreSinkWriteImpl.java
+++ b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/sink/StoreSinkWriteImpl.java
@@ -24,8 +24,8 @@ import org.apache.flink.runtime.state.StateSnapshotContext;
 
 import org.apache.paimon.data.BinaryRow;
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.file.disk.IOManagerImpl;
-import org.apache.paimon.file.io.DataFileMeta;
+import org.apache.paimon.disk.IOManagerImpl;
+import org.apache.paimon.io.DataFileMeta;
 import org.apache.paimon.table.FileStoreTable;
 import org.apache.paimon.table.sink.CommitMessage;
 import org.apache.paimon.table.sink.SinkRecord;
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 6739c45ae..8d9d42812 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
@@ -35,8 +35,8 @@ 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.file.catalog.CatalogLock;
-import org.apache.paimon.file.operation.Lock;
+import org.apache.paimon.catalog.CatalogLock;
+import org.apache.paimon.operation.Lock;
 import org.apache.paimon.options.Options;
 import org.apache.paimon.table.AppendOnlyFileStoreTable;
 import org.apache.paimon.table.ChangelogValueCountFileStoreTable;
diff --git a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/source/CompactorSourceBuilder.java b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/source/CompactorSourceBuilder.java
index 928731264..38a281b11 100644
--- a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/source/CompactorSourceBuilder.java
+++ b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/source/CompactorSourceBuilder.java
@@ -26,8 +26,8 @@ import org.apache.flink.table.data.RowData;
 import org.apache.flink.table.runtime.typeutils.InternalTypeInfo;
 
 import org.apache.paimon.connector.LogicalTypeConversion;
-import org.apache.paimon.file.predicate.Predicate;
-import org.apache.paimon.file.predicate.PredicateBuilder;
+import org.apache.paimon.predicate.Predicate;
+import org.apache.paimon.predicate.PredicateBuilder;
 import org.apache.paimon.table.FileStoreTable;
 import org.apache.paimon.table.source.StreamDataTableScan;
 import org.apache.paimon.table.source.snapshot.ContinuousCompactorFollowUpScanner;
diff --git a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/source/ContinuousFileStoreSource.java b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/source/ContinuousFileStoreSource.java
index e9cbaf1bc..5701ae704 100644
--- a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/source/ContinuousFileStoreSource.java
+++ b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/source/ContinuousFileStoreSource.java
@@ -23,7 +23,7 @@ import org.apache.flink.api.connector.source.SourceReaderContext;
 import org.apache.flink.api.connector.source.SplitEnumerator;
 import org.apache.flink.api.connector.source.SplitEnumeratorContext;
 
-import org.apache.paimon.file.predicate.Predicate;
+import org.apache.paimon.predicate.Predicate;
 import org.apache.paimon.table.DataTable;
 import org.apache.paimon.table.source.StreamDataTableScan;
 import org.apache.paimon.table.source.TableRead;
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 daafdedf4..4c3e98a60 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,7 +34,7 @@ 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.file.predicate.Predicate;
+import org.apache.paimon.predicate.Predicate;
 import org.apache.paimon.options.Options;
 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/FlinkTableSource.java b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/source/FlinkTableSource.java
index b5fa30e9c..cf04c07ca 100644
--- a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/source/FlinkTableSource.java
+++ b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/source/FlinkTableSource.java
@@ -27,8 +27,8 @@ import org.apache.flink.table.types.logical.RowType;
 
 import org.apache.paimon.connector.LogicalTypeConversion;
 import org.apache.paimon.connector.PredicateConverter;
-import org.apache.paimon.file.predicate.Predicate;
-import org.apache.paimon.file.predicate.PredicateBuilder;
+import org.apache.paimon.predicate.Predicate;
+import org.apache.paimon.predicate.PredicateBuilder;
 import org.apache.paimon.table.Table;
 
 import javax.annotation.Nullable;
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 ffae6e192..b67d83f62 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
@@ -23,7 +23,7 @@ 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.file.predicate.Predicate;
+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;
diff --git a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/source/SystemTableSource.java b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/source/SystemTableSource.java
index 12db464aa..aad5422c2 100644
--- a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/source/SystemTableSource.java
+++ b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/connector/source/SystemTableSource.java
@@ -24,7 +24,7 @@ import org.apache.flink.table.connector.source.DynamicTableSource;
 import org.apache.flink.table.connector.source.SourceProvider;
 import org.apache.flink.table.data.RowData;
 
-import org.apache.paimon.file.predicate.Predicate;
+import org.apache.paimon.predicate.Predicate;
 import org.apache.paimon.table.DataTable;
 import org.apache.paimon.table.Table;
 
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 5d0cdfdf4..9a378f33e 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,7 +36,7 @@ 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.file.predicate.Predicate;
+import org.apache.paimon.predicate.Predicate;
 import org.apache.paimon.options.Options;
 import org.apache.paimon.table.AppendOnlyFileStoreTable;
 import org.apache.paimon.table.ChangelogValueCountFileStoreTable;
diff --git a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/BinaryRowTypeSerializerTest.java b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/BinaryRowTypeSerializerTest.java
index 4a00a3654..4fd2139b3 100644
--- a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/BinaryRowTypeSerializerTest.java
+++ b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/BinaryRowTypeSerializerTest.java
@@ -25,7 +25,7 @@ import org.apache.paimon.data.BinaryRow;
 
 import java.util.Random;
 
-import static org.apache.paimon.file.io.DataFileTestUtils.row;
+import static org.apache.paimon.io.DataFileTestUtils.row;
 
 /** Test for {@link BinaryRowTypeSerializer}. */
 public class BinaryRowTypeSerializerTest extends SerializerTestBase<BinaryRow> {
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 4aea33928..34a52a7b6 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,8 +21,8 @@ package org.apache.paimon.connector;
 import org.apache.flink.types.Row;
 
 import org.apache.commons.lang3.StringUtils;
-import org.apache.paimon.file.schema.SchemaChange;
-import org.apache.paimon.file.schema.SchemaManager;
+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.types.IntType;
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 73b5f8359..d2d9d399b 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,8 +26,8 @@ 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.file.schema.Schema;
-import org.apache.paimon.file.schema.SchemaManager;
+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;
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 332c43c81..4ad44eb91 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,8 +49,8 @@ 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.file.schema.Schema;
-import org.apache.paimon.file.schema.SchemaManager;
+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;
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 463937d30..9ea31e956 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
@@ -22,9 +22,9 @@ import org.apache.flink.types.Row;
 import org.apache.flink.util.CloseableIterator;
 
 import org.apache.paimon.connector.kafka.KafkaTableTestBase;
-import org.apache.paimon.file.catalog.AbstractCatalog;
-import org.apache.paimon.file.catalog.Catalog;
-import org.apache.paimon.file.catalog.Identifier;
+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.fs.Path;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/FlinkCatalogTest.java b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/FlinkCatalogTest.java
index 603b57658..0a6aa19b8 100644
--- a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/FlinkCatalogTest.java
+++ b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/FlinkCatalogTest.java
@@ -37,7 +37,7 @@ import org.apache.flink.table.catalog.exceptions.TableAlreadyExistException;
 import org.apache.flink.table.catalog.exceptions.TableNotExistException;
 import org.apache.flink.table.store.catalog.CatalogContext;
 
-import org.apache.paimon.file.catalog.AbstractCatalog;
+import org.apache.paimon.catalog.AbstractCatalog;
 import org.apache.paimon.fs.Path;
 import org.apache.paimon.options.Options;
 import org.junit.jupiter.api.BeforeEach;
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 792640c88..f249f99e2 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
@@ -20,8 +20,8 @@ package org.apache.paimon.connector;
 
 import org.apache.paimon.CoreOptions;
 import org.apache.paimon.file.Snapshot;
-import org.apache.paimon.file.manifest.ManifestFileMeta;
-import org.apache.paimon.file.manifest.ManifestList;
+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.format.FileFormat;
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 0234450e8..5c1b2290a 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,8 +34,8 @@ import org.apache.flink.table.types.logical.VarCharType;
 import org.apache.flink.types.Row;
 
 import org.apache.paimon.data.BinaryString;
-import org.apache.paimon.file.predicate.Predicate;
-import org.apache.paimon.file.predicate.PredicateBuilder;
+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;
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 9b2581ac6..477783741 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,7 +41,7 @@ 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.file.schema.SchemaManager;
+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;
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 6dbb43b6d..e1cfc8e8a 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
@@ -24,8 +24,8 @@ import org.apache.flink.runtime.jobgraph.SavepointConfigOptions;
 import org.apache.flink.types.Row;
 
 import org.apache.paimon.file.Snapshot;
-import org.apache.paimon.file.schema.SchemaManager;
-import org.apache.paimon.file.schema.TableSchema;
+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.junit.jupiter.api.Test;
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 746b928be..be309fad6 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
@@ -24,10 +24,10 @@ 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.file.catalog.Catalog;
-import org.apache.paimon.file.catalog.CatalogFactory;
-import org.apache.paimon.file.catalog.Identifier;
-import org.apache.paimon.file.schema.Schema;
+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;
diff --git a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/kafka/KafkaLogTestUtils.java b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/kafka/KafkaLogTestUtils.java
index f6800c4e1..e2f5c941a 100644
--- a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/kafka/KafkaLogTestUtils.java
+++ b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/kafka/KafkaLogTestUtils.java
@@ -61,7 +61,7 @@ import static org.apache.paimon.CoreOptions.LOG_CONSISTENCY;
 import static org.apache.paimon.connector.kafka.KafkaLogOptions.BOOTSTRAP_SERVERS;
 import static org.apache.paimon.connector.kafka.KafkaLogOptions.TOPIC;
 import static org.apache.paimon.data.BinaryRow.EMPTY_ROW;
-import static org.apache.paimon.file.mergetree.compact.MergeTreeCompactManagerTest.row;
+import static org.apache.paimon.mergetree.compact.MergeTreeCompactManagerTest.row;
 
 /** Utils for the test of {@link KafkaLogStoreFactory}. */
 public class KafkaLogTestUtils {
diff --git a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/sink/CommittableSerializerTest.java b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/sink/CommittableSerializerTest.java
index e84db06af..b525b249c 100644
--- a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/sink/CommittableSerializerTest.java
+++ b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/sink/CommittableSerializerTest.java
@@ -18,8 +18,8 @@
 
 package org.apache.paimon.connector.sink;
 
-import org.apache.paimon.file.io.CompactIncrement;
-import org.apache.paimon.file.io.NewFilesIncrement;
+import org.apache.paimon.io.CompactIncrement;
+import org.apache.paimon.io.NewFilesIncrement;
 import org.apache.paimon.table.sink.CommitMessage;
 import org.apache.paimon.table.sink.CommitMessageImpl;
 import org.apache.paimon.table.sink.CommitMessageSerializer;
@@ -27,9 +27,9 @@ import org.junit.jupiter.api.Test;
 
 import java.io.IOException;
 
-import static org.apache.paimon.file.manifest.ManifestCommittableSerializerTest.randomCompactIncrement;
-import static org.apache.paimon.file.manifest.ManifestCommittableSerializerTest.randomNewFilesIncrement;
-import static org.apache.paimon.file.mergetree.compact.MergeTreeCompactManagerTest.row;
+import static org.apache.paimon.manifest.ManifestCommittableSerializerTest.randomCompactIncrement;
+import static org.apache.paimon.manifest.ManifestCommittableSerializerTest.randomNewFilesIncrement;
+import static org.apache.paimon.mergetree.compact.MergeTreeCompactManagerTest.row;
 import static org.assertj.core.api.Assertions.assertThat;
 
 /** Test for {@link CommittableSerializer}. */
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 0aad7abb3..1cbcd7914 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,7 +26,7 @@ import org.apache.flink.streaming.util.OneInputStreamOperatorTestHarness;
 
 import org.apache.paimon.connector.VersionedSerializerWrapper;
 import org.apache.paimon.data.GenericRow;
-import org.apache.paimon.file.manifest.ManifestCommittableSerializer;
+import org.apache.paimon.manifest.ManifestCommittableSerializer;
 import org.apache.paimon.file.utils.SnapshotManager;
 import org.apache.paimon.fs.local.LocalFileIO;
 import org.apache.paimon.table.FileStoreTable;
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 1e6d5f5ae..67e6653c5 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,8 +20,8 @@ package org.apache.paimon.connector.sink;
 
 import org.apache.paimon.CoreOptions;
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.file.schema.Schema;
-import org.apache.paimon.file.schema.SchemaManager;
+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;
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 3060705bb..910b20674 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
@@ -28,9 +28,9 @@ 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.file.schema.Schema;
-import org.apache.paimon.file.schema.SchemaManager;
-import org.apache.paimon.file.schema.TableSchema;
+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;
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 c25569505..6d1b7c7a8 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,7 +31,7 @@ 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.file.io.DataFileMeta;
+import org.apache.paimon.io.DataFileMeta;
 import org.apache.paimon.fs.local.LocalFileIO;
 import org.apache.paimon.table.FileStoreTable;
 import org.apache.paimon.table.FileStoreTableFactory;
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 a6034ca6f..3e8b39795 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,10 +28,10 @@ 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.file.io.DataFileMetaSerializer;
-import org.apache.paimon.file.schema.Schema;
-import org.apache.paimon.file.schema.SchemaManager;
-import org.apache.paimon.file.schema.TableSchema;
+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;
diff --git a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/source/ContinuousFileSplitEnumeratorTest.java b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/source/ContinuousFileSplitEnumeratorTest.java
index b23d5e466..e0c791ffe 100644
--- a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/source/ContinuousFileSplitEnumeratorTest.java
+++ b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/source/ContinuousFileSplitEnumeratorTest.java
@@ -21,7 +21,7 @@ package org.apache.paimon.connector.source;
 import org.apache.flink.api.connector.source.SplitEnumeratorContext;
 import org.apache.flink.connector.testutils.source.reader.TestingSplitEnumeratorContext;
 
-import org.apache.paimon.file.io.DataFileMeta;
+import org.apache.paimon.io.DataFileMeta;
 import org.apache.paimon.table.source.DataSplit;
 import org.apache.paimon.table.source.DataTableScan.DataFilePlan;
 import org.apache.paimon.table.source.EndOfScanException;
@@ -39,7 +39,7 @@ import java.util.concurrent.LinkedBlockingQueue;
 import java.util.stream.Collectors;
 
 import static org.apache.flink.connector.testutils.source.reader.TestingSplitEnumeratorContext.SplitAssignmentState;
-import static org.apache.paimon.file.mergetree.compact.MergeTreeCompactManagerTest.row;
+import static org.apache.paimon.mergetree.compact.MergeTreeCompactManagerTest.row;
 import static org.assertj.core.api.Assertions.assertThat;
 
 /** Unit tests for the {@link ContinuousFileSplitEnumerator}. */
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 6f610cf23..b82ab6f6a 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,8 +20,8 @@ package org.apache.paimon.connector.source;
 
 import org.apache.flink.connector.testutils.source.reader.TestingReaderContext;
 
-import org.apache.paimon.file.schema.Schema;
-import org.apache.paimon.file.schema.SchemaManager;
+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.types.BigIntType;
@@ -36,7 +36,7 @@ import java.util.Arrays;
 import java.util.Collections;
 
 import static org.apache.paimon.connector.source.FileStoreSourceSplitSerializerTest.newSourceSplit;
-import static org.apache.paimon.file.mergetree.compact.MergeTreeCompactManagerTest.row;
+import static org.apache.paimon.mergetree.compact.MergeTreeCompactManagerTest.row;
 import static org.assertj.core.api.Assertions.assertThat;
 
 /** Unit tests for the {@link FileStoreSourceReader}. */
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 93043cd08..ceb2d9962 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
@@ -18,10 +18,10 @@
 
 package org.apache.paimon.connector.source;
 
-import org.apache.paimon.file.io.DataFileMeta;
-import org.apache.paimon.file.manifest.FileKind;
-import org.apache.paimon.file.manifest.ManifestEntry;
-import org.apache.paimon.file.operation.FileStoreScan;
+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.table.source.DataSplit;
 import org.apache.paimon.table.source.DataTableScan;
@@ -36,7 +36,7 @@ import java.util.Comparator;
 import java.util.List;
 import java.util.stream.Collectors;
 
-import static org.apache.paimon.file.mergetree.compact.MergeTreeCompactManagerTest.row;
+import static org.apache.paimon.mergetree.compact.MergeTreeCompactManagerTest.row;
 import static org.assertj.core.api.Assertions.assertThat;
 
 /** Test for {@link FileStoreSourceSplitGenerator}. */
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 a7d5cc0e9..715804f0c 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
@@ -31,9 +31,9 @@ import org.apache.flink.types.RowKind;
 
 import org.apache.paimon.data.GenericRow;
 import org.apache.paimon.file.KeyValue;
-import org.apache.paimon.file.io.DataFileMeta;
-import org.apache.paimon.file.schema.Schema;
-import org.apache.paimon.file.schema.SchemaManager;
+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;
@@ -54,7 +54,7 @@ import java.util.stream.Stream;
 import static org.apache.paimon.connector.LogicalTypeConversion.toDataType;
 import static org.apache.paimon.connector.source.FileStoreSourceSplitSerializerTest.newFile;
 import static org.apache.paimon.connector.source.FileStoreSourceSplitSerializerTest.newSourceSplit;
-import static org.apache.paimon.file.mergetree.compact.MergeTreeCompactManagerTest.row;
+import static org.apache.paimon.mergetree.compact.MergeTreeCompactManagerTest.row;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.assertThatThrownBy;
 
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 f2839a4d4..3fb08b942 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
@@ -21,7 +21,7 @@ package org.apache.paimon.connector.source;
 import org.apache.flink.core.io.SimpleVersionedSerialization;
 
 import org.apache.paimon.data.BinaryRow;
-import org.apache.paimon.file.io.DataFileMeta;
+import org.apache.paimon.io.DataFileMeta;
 import org.apache.paimon.file.stats.StatsTestUtils;
 import org.apache.paimon.table.source.DataSplit;
 import org.junit.jupiter.api.Test;
@@ -30,7 +30,7 @@ import java.io.IOException;
 import java.util.Arrays;
 import java.util.List;
 
-import static org.apache.paimon.file.io.DataFileTestUtils.row;
+import static org.apache.paimon.io.DataFileTestUtils.row;
 import static org.assertj.core.api.Assertions.assertThat;
 
 /** Unit tests for the {@link FileStoreSourceSplitSerializer}. */
diff --git a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/source/FileStoreSourceSplitStateTest.java b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/source/FileStoreSourceSplitStateTest.java
index 80b034323..84e0f57da 100644
--- a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/source/FileStoreSourceSplitStateTest.java
+++ b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/source/FileStoreSourceSplitStateTest.java
@@ -26,7 +26,7 @@ import java.util.Arrays;
 
 import static org.apache.paimon.connector.source.FileStoreSourceSplitSerializerTest.newFile;
 import static org.apache.paimon.connector.source.FileStoreSourceSplitSerializerTest.newSourceSplit;
-import static org.apache.paimon.file.mergetree.compact.MergeTreeCompactManagerTest.row;
+import static org.apache.paimon.mergetree.compact.MergeTreeCompactManagerTest.row;
 import static org.assertj.core.api.Assertions.assertThat;
 
 /** Unit tests for the {@link FileStoreSourceSplitState}. */
diff --git a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/source/PendingSplitsCheckpointSerializerTest.java b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/source/PendingSplitsCheckpointSerializerTest.java
index d806de448..a426256c5 100644
--- a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/source/PendingSplitsCheckpointSerializerTest.java
+++ b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/connector/source/PendingSplitsCheckpointSerializerTest.java
@@ -28,7 +28,7 @@ import java.util.Collections;
 
 import static org.apache.paimon.connector.source.FileStoreSourceSplitSerializerTest.newFile;
 import static org.apache.paimon.connector.source.FileStoreSourceSplitSerializerTest.newSourceSplit;
-import static org.apache.paimon.file.mergetree.compact.MergeTreeCompactManagerTest.row;
+import static org.apache.paimon.mergetree.compact.MergeTreeCompactManagerTest.row;
 import static org.assertj.core.api.Assertions.assertThat;
 
 /** Unit tests for the {@link PendingSplitsCheckpointSerializer}. */
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 c26f8e686..26bf667ea 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
@@ -25,16 +25,16 @@ 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.io.DataFileMeta;
-import org.apache.paimon.file.memory.HeapMemorySegmentPool;
-import org.apache.paimon.file.memory.MemoryOwner;
-import org.apache.paimon.file.mergetree.compact.DeduplicateMergeFunction;
-import org.apache.paimon.file.operation.KeyValueFileStoreRead;
-import org.apache.paimon.file.operation.KeyValueFileStoreWrite;
-import org.apache.paimon.file.predicate.Predicate;
-import org.apache.paimon.file.schema.KeyValueFieldsExtractor;
-import org.apache.paimon.file.schema.SchemaManager;
-import org.apache.paimon.file.schema.TableSchema;
+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.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.FileStorePathFactory;
 import org.apache.paimon.file.utils.RecordWriter;
 import org.apache.paimon.file.utils.SnapshotManager;
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 d958ecf30..883e05f17 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,7 @@ 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.file.predicate.Predicate;
+import org.apache.paimon.predicate.Predicate;
 import org.apache.paimon.format.FileFormat;
 import org.apache.paimon.format.FormatReaderFactory;
 import org.apache.paimon.format.FormatWriter;
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 68932a514..0952111ce 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,7 @@ 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.file.predicate.Predicate;
+import org.apache.paimon.predicate.Predicate;
 import org.apache.paimon.format.FileFormat;
 import org.apache.paimon.format.FileStatsExtractor;
 import org.apache.paimon.format.FormatReaderFactory;
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 51954fd18..760401286 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
@@ -21,8 +21,8 @@ package org.apache.paimon.format.orc.filter;
 import org.apache.hadoop.hive.ql.io.sarg.PredicateLeaf;
 import org.apache.paimon.data.Decimal;
 import org.apache.paimon.data.Timestamp;
-import org.apache.paimon.file.predicate.FieldRef;
-import org.apache.paimon.file.predicate.FunctionVisitor;
+import org.apache.paimon.predicate.FieldRef;
+import org.apache.paimon.predicate.FunctionVisitor;
 import org.apache.paimon.types.DataType;
 
 import javax.annotation.Nullable;
@@ -34,7 +34,7 @@ import java.util.List;
 import java.util.Optional;
 
 /**
- * Convert {@link org.apache.paimon.file.predicate.Predicate} to {@link OrcFilters.Predicate} for
+ * Convert {@link org.apache.paimon.predicate.Predicate} to {@link OrcFilters.Predicate} for
  * orc.
  */
 public class OrcPredicateFunctionVisitor
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 8e13be5c6..94cbaca64 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,7 +19,7 @@
 package org.apache.paimon.format.parquet;
 
 import org.apache.paimon.annotation.VisibleForTesting;
-import org.apache.paimon.file.predicate.Predicate;
+import org.apache.paimon.predicate.Predicate;
 import org.apache.paimon.format.FileFormat;
 import org.apache.paimon.format.FileStatsExtractor;
 import org.apache.paimon.format.FormatReaderFactory;
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 e22d5abd6..35b867539 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,8 +19,8 @@
 package org.apache.paimon.format.orc;
 
 import org.apache.hadoop.hive.ql.io.sarg.PredicateLeaf;
-import org.apache.paimon.file.predicate.Predicate;
-import org.apache.paimon.file.predicate.PredicateBuilder;
+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.types.BigIntType;
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 43340e0ee..d2689ddfc 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
@@ -33,14 +33,14 @@ import org.apache.hadoop.hive.metastore.api.StorageDescriptor;
 import org.apache.hadoop.hive.metastore.api.Table;
 import org.apache.hadoop.hive.metastore.api.UnknownDBException;
 import org.apache.hadoop.hive.metastore.api.hive_metastoreConstants;
-import org.apache.paimon.file.catalog.AbstractCatalog;
-import org.apache.paimon.file.catalog.CatalogLock;
-import org.apache.paimon.file.catalog.Identifier;
-import org.apache.paimon.file.operation.Lock;
-import org.apache.paimon.file.schema.Schema;
-import org.apache.paimon.file.schema.SchemaChange;
-import org.apache.paimon.file.schema.SchemaManager;
-import org.apache.paimon.file.schema.TableSchema;
+import org.apache.paimon.catalog.AbstractCatalog;
+import org.apache.paimon.catalog.CatalogLock;
+import org.apache.paimon.catalog.Identifier;
+import org.apache.paimon.operation.Lock;
+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;
diff --git a/paimon-hive/paimon-hive-catalog/src/main/java/org/apache/paimon/hive/HiveCatalogFactory.java b/paimon-hive/paimon-hive-catalog/src/main/java/org/apache/paimon/hive/HiveCatalogFactory.java
index de9ccb78b..1c97929f3 100644
--- a/paimon-hive/paimon-hive-catalog/src/main/java/org/apache/paimon/hive/HiveCatalogFactory.java
+++ b/paimon-hive/paimon-hive-catalog/src/main/java/org/apache/paimon/hive/HiveCatalogFactory.java
@@ -24,8 +24,8 @@ import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.hive.conf.HiveConf;
 import org.apache.hadoop.hive.metastore.HiveMetaStoreClient;
 import org.apache.hadoop.hive.metastore.IMetaStoreClient;
-import org.apache.paimon.file.catalog.Catalog;
-import org.apache.paimon.file.catalog.CatalogFactory;
+import org.apache.paimon.catalog.Catalog;
+import org.apache.paimon.catalog.CatalogFactory;
 import org.apache.paimon.fs.FileIO;
 import org.apache.paimon.fs.Path;
 import org.apache.paimon.options.CatalogOptions;
diff --git a/paimon-hive/paimon-hive-catalog/src/main/java/org/apache/paimon/hive/HiveCatalogLock.java b/paimon-hive/paimon-hive-catalog/src/main/java/org/apache/paimon/hive/HiveCatalogLock.java
index 5f33f3f7a..b9f811d87 100644
--- a/paimon-hive/paimon-hive-catalog/src/main/java/org/apache/paimon/hive/HiveCatalogLock.java
+++ b/paimon-hive/paimon-hive-catalog/src/main/java/org/apache/paimon/hive/HiveCatalogLock.java
@@ -26,7 +26,7 @@ import org.apache.hadoop.hive.metastore.api.LockRequest;
 import org.apache.hadoop.hive.metastore.api.LockResponse;
 import org.apache.hadoop.hive.metastore.api.LockState;
 import org.apache.hadoop.hive.metastore.api.LockType;
-import org.apache.paimon.file.catalog.CatalogLock;
+import org.apache.paimon.catalog.CatalogLock;
 import org.apache.paimon.utils.TimeUtils;
 import org.apache.thrift.TException;
 
diff --git a/paimon-hive/paimon-hive-catalog/src/main/resources/META-INF/services/org.apache.paimon.file.catalog.CatalogFactory b/paimon-hive/paimon-hive-catalog/src/main/resources/META-INF/services/org.apache.paimon.file.org.apache.paimon.catalog.CatalogFactory
similarity index 100%
rename from paimon-hive/paimon-hive-catalog/src/main/resources/META-INF/services/org.apache.paimon.file.catalog.CatalogFactory
rename to paimon-hive/paimon-hive-catalog/src/main/resources/META-INF/services/org.apache.paimon.file.org.apache.paimon.catalog.CatalogFactory
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 a138dc613..fbb593bcb 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
@@ -34,11 +34,11 @@ 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.file.catalog.AbstractCatalog;
-import org.apache.paimon.file.catalog.Catalog;
-import org.apache.paimon.file.catalog.CatalogLock;
-import org.apache.paimon.file.catalog.Identifier;
-import org.apache.paimon.file.schema.SchemaManager;
+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.fs.local.LocalFileIO;
 import org.assertj.core.api.Assertions;
 import org.junit.After;
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 10189721a..b9a34b393 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,7 +27,7 @@ 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.file.schema.TableSchema;
+import org.apache.paimon.schema.TableSchema;
 import org.apache.paimon.fs.Path;
 import org.apache.paimon.options.Options;
 import org.apache.paimon.table.FileStoreTableFactory;
diff --git a/paimon-hive/paimon-hive-connector-common/src/main/java/org/apache/paimon/hive/SearchArgumentToPredicateConverter.java b/paimon-hive/paimon-hive-connector-common/src/main/java/org/apache/paimon/hive/SearchArgumentToPredicateConverter.java
index 9a988fe31..c0174ca54 100644
--- a/paimon-hive/paimon-hive-connector-common/src/main/java/org/apache/paimon/hive/SearchArgumentToPredicateConverter.java
+++ b/paimon-hive/paimon-hive-connector-common/src/main/java/org/apache/paimon/hive/SearchArgumentToPredicateConverter.java
@@ -22,8 +22,8 @@ import org.apache.hadoop.hive.ql.io.sarg.ExpressionTree;
 import org.apache.hadoop.hive.ql.io.sarg.PredicateLeaf;
 import org.apache.hadoop.hive.ql.io.sarg.SearchArgument;
 import org.apache.hadoop.hive.serde2.io.HiveDecimalWritable;
-import org.apache.paimon.file.predicate.Predicate;
-import org.apache.paimon.file.predicate.PredicateBuilder;
+import org.apache.paimon.predicate.Predicate;
+import org.apache.paimon.predicate.PredicateBuilder;
 import org.apache.paimon.types.DataType;
 import org.apache.paimon.types.RowType;
 import org.apache.paimon.utils.Preconditions;
@@ -35,7 +35,7 @@ import java.util.List;
 import java.util.Optional;
 import java.util.stream.Collectors;
 
-import static org.apache.paimon.file.predicate.PredicateBuilder.convertJavaObject;
+import static org.apache.paimon.predicate.PredicateBuilder.convertJavaObject;
 
 /** Converts {@link SearchArgument} to {@link Predicate} with best effort. */
 public class SearchArgumentToPredicateConverter {
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 aa3dec353..65607fa94 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,8 +29,8 @@ 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.file.predicate.Predicate;
-import org.apache.paimon.file.schema.TableSchema;
+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;
diff --git a/paimon-hive/paimon-hive-connector-common/src/main/java/org/apache/paimon/hive/mapred/TableStoreInputSplit.java b/paimon-hive/paimon-hive-connector-common/src/main/java/org/apache/paimon/hive/mapred/TableStoreInputSplit.java
index 0d174be88..1a43d1b0d 100644
--- a/paimon-hive/paimon-hive-connector-common/src/main/java/org/apache/paimon/hive/mapred/TableStoreInputSplit.java
+++ b/paimon-hive/paimon-hive-connector-common/src/main/java/org/apache/paimon/hive/mapred/TableStoreInputSplit.java
@@ -20,7 +20,7 @@ package org.apache.paimon.hive.mapred;
 
 import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.mapred.FileSplit;
-import org.apache.paimon.file.io.DataFileMeta;
+import org.apache.paimon.io.DataFileMeta;
 import org.apache.paimon.io.DataInputDeserializer;
 import org.apache.paimon.io.DataOutputSerializer;
 import org.apache.paimon.table.source.DataSplit;
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 a03af542b..e9508696a 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,8 +19,8 @@
 package org.apache.paimon.hive;
 
 import org.apache.paimon.CoreOptions;
-import org.apache.paimon.file.schema.Schema;
-import org.apache.paimon.file.schema.SchemaManager;
+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;
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 f281e1f94..d0d84c78b 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,8 +19,8 @@
 package org.apache.paimon.hive;
 
 import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoFactory;
-import org.apache.paimon.file.schema.Schema;
-import org.apache.paimon.file.schema.SchemaManager;
+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.types.DataField;
diff --git a/paimon-hive/paimon-hive-connector-common/src/test/java/org/apache/paimon/hive/SearchArgumentToPredicateConverterTest.java b/paimon-hive/paimon-hive-connector-common/src/test/java/org/apache/paimon/hive/SearchArgumentToPredicateConverterTest.java
index ddc68d941..f9ce13c77 100644
--- a/paimon-hive/paimon-hive-connector-common/src/test/java/org/apache/paimon/hive/SearchArgumentToPredicateConverterTest.java
+++ b/paimon-hive/paimon-hive-connector-common/src/test/java/org/apache/paimon/hive/SearchArgumentToPredicateConverterTest.java
@@ -26,8 +26,8 @@ import org.apache.hadoop.hive.serde2.io.HiveDecimalWritable;
 import org.apache.paimon.data.BinaryString;
 import org.apache.paimon.data.Decimal;
 import org.apache.paimon.data.Timestamp;
-import org.apache.paimon.file.predicate.Predicate;
-import org.apache.paimon.file.predicate.PredicateBuilder;
+import org.apache.paimon.predicate.Predicate;
+import org.apache.paimon.predicate.PredicateBuilder;
 import org.apache.paimon.types.DataType;
 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/TableStoreSerDeTest.java b/paimon-hive/paimon-hive-connector-common/src/test/java/org/apache/paimon/hive/TableStoreSerDeTest.java
index 8afbbf96c..96609757e 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,8 +21,8 @@ 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.file.schema.Schema;
-import org.apache.paimon.file.schema.SchemaManager;
+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;
diff --git a/paimon-hive/paimon-hive-connector-common/src/test/java/org/apache/paimon/hive/mapred/TableStoreInputSplitTest.java b/paimon-hive/paimon-hive-connector-common/src/test/java/org/apache/paimon/hive/mapred/TableStoreInputSplitTest.java
index e146b6711..e9a79b274 100644
--- a/paimon-hive/paimon-hive-connector-common/src/test/java/org/apache/paimon/hive/mapred/TableStoreInputSplitTest.java
+++ b/paimon-hive/paimon-hive-connector-common/src/test/java/org/apache/paimon/hive/mapred/TableStoreInputSplitTest.java
@@ -19,7 +19,7 @@
 package org.apache.paimon.hive.mapred;
 
 import org.apache.paimon.data.BinaryRow;
-import org.apache.paimon.file.io.DataFileTestDataGenerator;
+import org.apache.paimon.io.DataFileTestDataGenerator;
 import org.apache.paimon.table.source.DataSplit;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.io.TempDir;
diff --git a/paimon-spark/paimon-spark-2/src/main/java/org/apache/paimon/spark/SparkDataSourceReader.java b/paimon-spark/paimon-spark-2/src/main/java/org/apache/paimon/spark/SparkDataSourceReader.java
index 88ff4929d..2203b4d85 100644
--- a/paimon-spark/paimon-spark-2/src/main/java/org/apache/paimon/spark/SparkDataSourceReader.java
+++ b/paimon-spark/paimon-spark-2/src/main/java/org/apache/paimon/spark/SparkDataSourceReader.java
@@ -18,7 +18,7 @@
 
 package org.apache.paimon.spark;
 
-import org.apache.paimon.file.predicate.Predicate;
+import org.apache.paimon.predicate.Predicate;
 import org.apache.paimon.table.Table;
 import org.apache.paimon.table.source.ReadBuilder;
 import org.apache.paimon.table.source.Split;
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 cd33f67e2..727224a09 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,8 +20,8 @@ package org.apache.paimon.spark;
 
 import org.apache.paimon.CoreOptions;
 import org.apache.paimon.data.InternalRow;
-import org.apache.paimon.file.schema.Schema;
-import org.apache.paimon.file.schema.SchemaManager;
+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;
diff --git a/paimon-spark/paimon-spark-2/src/test/java/org/apache/paimon/spark/SparkFilterConverterTest.java b/paimon-spark/paimon-spark-2/src/test/java/org/apache/paimon/spark/SparkFilterConverterTest.java
index 827664684..68c5448ff 100644
--- a/paimon-spark/paimon-spark-2/src/test/java/org/apache/paimon/spark/SparkFilterConverterTest.java
+++ b/paimon-spark/paimon-spark-2/src/test/java/org/apache/paimon/spark/SparkFilterConverterTest.java
@@ -19,8 +19,8 @@
 package org.apache.paimon.spark;
 
 import org.apache.paimon.data.Timestamp;
-import org.apache.paimon.file.predicate.Predicate;
-import org.apache.paimon.file.predicate.PredicateBuilder;
+import org.apache.paimon.predicate.Predicate;
+import org.apache.paimon.predicate.PredicateBuilder;
 import org.apache.paimon.types.DataField;
 import org.apache.paimon.types.DateType;
 import org.apache.paimon.types.IntType;
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 0199ecaa6..20798eb11 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
@@ -20,11 +20,11 @@ package org.apache.paimon.spark;
 
 import org.apache.flink.table.store.catalog.CatalogContext;
 
-import org.apache.paimon.file.catalog.Catalog;
+import org.apache.paimon.catalog.Catalog;
 import org.apache.paimon.file.catalog.CatalogFactory;
-import org.apache.paimon.file.operation.Lock;
-import org.apache.paimon.file.schema.Schema;
-import org.apache.paimon.file.schema.SchemaChange;
+import org.apache.paimon.operation.Lock;
+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;
diff --git a/paimon-spark/paimon-spark-common/src/main/java/org/apache/paimon/spark/SparkFilterConverter.java b/paimon-spark/paimon-spark-common/src/main/java/org/apache/paimon/spark/SparkFilterConverter.java
index b0acb6c26..808ba0c16 100644
--- a/paimon-spark/paimon-spark-common/src/main/java/org/apache/paimon/spark/SparkFilterConverter.java
+++ b/paimon-spark/paimon-spark-common/src/main/java/org/apache/paimon/spark/SparkFilterConverter.java
@@ -18,8 +18,8 @@
 
 package org.apache.paimon.spark;
 
-import org.apache.paimon.file.predicate.Predicate;
-import org.apache.paimon.file.predicate.PredicateBuilder;
+import org.apache.paimon.predicate.Predicate;
+import org.apache.paimon.predicate.PredicateBuilder;
 import org.apache.paimon.types.DataType;
 import org.apache.paimon.types.RowType;
 import org.apache.spark.sql.sources.And;
@@ -40,7 +40,7 @@ import java.util.Arrays;
 import java.util.List;
 import java.util.stream.Collectors;
 
-import static org.apache.paimon.file.predicate.PredicateBuilder.convertJavaObject;
+import static org.apache.paimon.predicate.PredicateBuilder.convertJavaObject;
 
 /** Conversion from {@link Filter} to {@link Predicate}. */
 public class SparkFilterConverter {
diff --git a/paimon-spark/paimon-spark-common/src/main/java/org/apache/paimon/spark/SparkScanBuilder.java b/paimon-spark/paimon-spark-common/src/main/java/org/apache/paimon/spark/SparkScanBuilder.java
index 9ff1ed0b8..65ed57124 100644
--- a/paimon-spark/paimon-spark-common/src/main/java/org/apache/paimon/spark/SparkScanBuilder.java
+++ b/paimon-spark/paimon-spark-common/src/main/java/org/apache/paimon/spark/SparkScanBuilder.java
@@ -18,7 +18,7 @@
 
 package org.apache.paimon.spark;
 
-import org.apache.paimon.file.predicate.Predicate;
+import org.apache.paimon.predicate.Predicate;
 import org.apache.paimon.table.Table;
 import org.apache.spark.sql.connector.read.Scan;
 import org.apache.spark.sql.connector.read.ScanBuilder;
diff --git a/paimon-spark/paimon-spark-common/src/main/java/org/apache/paimon/spark/SparkSource.java b/paimon-spark/paimon-spark-common/src/main/java/org/apache/paimon/spark/SparkSource.java
index 151874bc8..1d7d9cebe 100644
--- a/paimon-spark/paimon-spark-common/src/main/java/org/apache/paimon/spark/SparkSource.java
+++ b/paimon-spark/paimon-spark-common/src/main/java/org/apache/paimon/spark/SparkSource.java
@@ -20,7 +20,7 @@ package org.apache.paimon.spark;
 
 import org.apache.flink.table.store.catalog.CatalogContext;
 
-import org.apache.paimon.file.operation.Lock;
+import org.apache.paimon.operation.Lock;
 import org.apache.paimon.options.Options;
 import org.apache.paimon.table.FileStoreTableFactory;
 import org.apache.spark.sql.SparkSession;
diff --git a/paimon-spark/paimon-spark-common/src/main/java/org/apache/paimon/spark/SparkTable.java b/paimon-spark/paimon-spark-common/src/main/java/org/apache/paimon/spark/SparkTable.java
index 0a4e5fc0e..b0aef728f 100644
--- a/paimon-spark/paimon-spark-common/src/main/java/org/apache/paimon/spark/SparkTable.java
+++ b/paimon-spark/paimon-spark-common/src/main/java/org/apache/paimon/spark/SparkTable.java
@@ -18,8 +18,8 @@
 
 package org.apache.paimon.spark;
 
-import org.apache.paimon.file.operation.Lock;
-import org.apache.paimon.file.predicate.Predicate;
+import org.apache.paimon.operation.Lock;
+import org.apache.paimon.predicate.Predicate;
 import org.apache.paimon.table.DataTable;
 import org.apache.paimon.table.SupportsPartition;
 import org.apache.paimon.table.Table;
diff --git a/paimon-spark/paimon-spark-common/src/main/java/org/apache/paimon/spark/SparkWrite.java b/paimon-spark/paimon-spark-common/src/main/java/org/apache/paimon/spark/SparkWrite.java
index e48b42cfc..ec17dba9c 100644
--- a/paimon-spark/paimon-spark-common/src/main/java/org/apache/paimon/spark/SparkWrite.java
+++ b/paimon-spark/paimon-spark-common/src/main/java/org/apache/paimon/spark/SparkWrite.java
@@ -18,7 +18,7 @@
 
 package org.apache.paimon.spark;
 
-import org.apache.paimon.file.operation.Lock;
+import org.apache.paimon.operation.Lock;
 import org.apache.paimon.table.Table;
 import org.apache.paimon.table.sink.BatchTableCommit;
 import org.apache.paimon.table.sink.BatchTableWrite;
diff --git a/paimon-spark/paimon-spark-common/src/main/java/org/apache/paimon/spark/SparkWriteBuilder.java b/paimon-spark/paimon-spark-common/src/main/java/org/apache/paimon/spark/SparkWriteBuilder.java
index b5c6d8efb..93ec7f791 100644
--- a/paimon-spark/paimon-spark-common/src/main/java/org/apache/paimon/spark/SparkWriteBuilder.java
+++ b/paimon-spark/paimon-spark-common/src/main/java/org/apache/paimon/spark/SparkWriteBuilder.java
@@ -18,7 +18,7 @@
 
 package org.apache.paimon.spark;
 
-import org.apache.paimon.file.operation.Lock;
+import org.apache.paimon.operation.Lock;
 import org.apache.paimon.table.Table;
 import org.apache.spark.sql.connector.write.Write;
 import org.apache.spark.sql.connector.write.WriteBuilder;
diff --git a/paimon-spark/paimon-spark-common/src/test/java/org/apache/paimon/spark/SparkFilterConverterTest.java b/paimon-spark/paimon-spark-common/src/test/java/org/apache/paimon/spark/SparkFilterConverterTest.java
index 827664684..68c5448ff 100644
--- a/paimon-spark/paimon-spark-common/src/test/java/org/apache/paimon/spark/SparkFilterConverterTest.java
+++ b/paimon-spark/paimon-spark-common/src/test/java/org/apache/paimon/spark/SparkFilterConverterTest.java
@@ -19,8 +19,8 @@
 package org.apache.paimon.spark;
 
 import org.apache.paimon.data.Timestamp;
-import org.apache.paimon.file.predicate.Predicate;
-import org.apache.paimon.file.predicate.PredicateBuilder;
+import org.apache.paimon.predicate.Predicate;
+import org.apache.paimon.predicate.PredicateBuilder;
 import org.apache.paimon.types.DataField;
 import org.apache.paimon.types.DateType;
 import org.apache.paimon.types.IntType;
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 a4ef7a7cf..16d04916b 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,7 +18,7 @@
 
 package org.apache.paimon.spark;
 
-import org.apache.paimon.file.schema.TableSchema;
+import org.apache.paimon.schema.TableSchema;
 import org.apache.paimon.fs.Path;
 import org.apache.paimon.fs.local.LocalFileIO;
 import org.apache.paimon.table.FileStoreTableFactory;
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 778749b64..a3fe245f4 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,7 +21,7 @@ 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.file.schema.TableSchema;
+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;