You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iceberg.apache.org by bl...@apache.org on 2021/10/19 15:15:42 UTC
[iceberg] branch master updated: Spark: Remove common module,
iceberg-spark (#3313)
This is an automated email from the ASF dual-hosted git repository.
blue pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iceberg.git
The following commit(s) were added to refs/heads/master by this push:
new f3e6770 Spark: Remove common module, iceberg-spark (#3313)
f3e6770 is described below
commit f3e6770c0506a13c067f506dad266d043819d446
Author: Anton Okolnychyi <ao...@apple.com>
AuthorDate: Tue Oct 19 08:15:34 2021 -0700
Spark: Remove common module, iceberg-spark (#3313)
This also fixes some instances of source incompatibility in Spark 3
---
jmh.gradle | 8 ---
spark/build.gradle | 66 ----------------------
spark/v2.4/build.gradle | 17 +++++-
.../apache/iceberg/spark/SparkBenchmarkUtil.java | 0
.../SparkParquetReadersFlatDataBenchmark.java | 0
.../SparkParquetReadersNestedDataBenchmark.java | 0
.../SparkParquetWritersFlatDataBenchmark.java | 0
.../SparkParquetWritersNestedDataBenchmark.java | 0
.../org/apache/iceberg/spark/source/Action.java | 0
.../spark/source/IcebergSourceBenchmark.java | 0
.../source/IcebergSourceFlatDataBenchmark.java | 0
.../source/IcebergSourceNestedDataBenchmark.java | 0
.../IcebergSourceNestedListDataBenchmark.java | 0
.../iceberg/spark/source/WritersBenchmark.java | 0
.../spark/source/avro/AvroWritersBenchmark.java | 0
.../IcebergSourceFlatAvroDataReadBenchmark.java | 0
.../IcebergSourceNestedAvroDataReadBenchmark.java | 0
.../orc/IcebergSourceFlatORCDataBenchmark.java | 0
.../orc/IcebergSourceFlatORCDataReadBenchmark.java | 0
...ebergSourceNestedListORCDataWriteBenchmark.java | 0
.../IcebergSourceNestedORCDataReadBenchmark.java | 0
...cebergSourceFlatParquetDataFilterBenchmark.java | 0
.../IcebergSourceFlatParquetDataReadBenchmark.java | 0
...IcebergSourceFlatParquetDataWriteBenchmark.java | 0
...gSourceNestedListParquetDataWriteBenchmark.java | 0
...bergSourceNestedParquetDataFilterBenchmark.java | 0
...cebergSourceNestedParquetDataReadBenchmark.java | 0
...ebergSourceNestedParquetDataWriteBenchmark.java | 0
.../source/parquet/ParquetWritersBenchmark.java | 0
...dDictionaryEncodedFlatParquetDataBenchmark.java | 0
.../VectorizedReadFlatParquetDataBenchmark.java | 0
.../java/org/apache/iceberg/actions/Actions.java | 0
.../org/apache/iceberg/actions/CreateAction.java | 0
.../iceberg/actions/ExpireSnapshotsAction.java | 0
.../actions/ExpireSnapshotsActionResult.java | 0
.../apache/iceberg/actions/ManifestFileBean.java | 0
.../iceberg/actions/RemoveOrphanFilesAction.java | 0
.../iceberg/actions/RewriteDataFilesAction.java | 0
.../iceberg/actions/RewriteManifestsAction.java | 0
.../actions/RewriteManifestsActionResult.java | 0
.../org/apache/iceberg/actions/SnapshotAction.java | 0
.../org/apache/iceberg/spark/IcebergSpark.java | 0
.../org/apache/iceberg/spark/JobGroupInfo.java | 0
.../org/apache/iceberg/spark/JobGroupUtils.java | 0
.../iceberg/spark/PruneColumnsWithReordering.java | 0
.../spark/PruneColumnsWithoutReordering.java | 0
.../org/apache/iceberg/spark/SparkConfParser.java | 0
.../org/apache/iceberg/spark/SparkDataFile.java | 0
.../apache/iceberg/spark/SparkExceptionUtil.java | 0
.../iceberg/spark/SparkFixupTimestampType.java | 0
.../org/apache/iceberg/spark/SparkFixupTypes.java | 0
.../org/apache/iceberg/spark/SparkReadConf.java | 0
.../org/apache/iceberg/spark/SparkReadOptions.java | 0
.../apache/iceberg/spark/SparkSQLProperties.java | 0
.../org/apache/iceberg/spark/SparkSchemaUtil.java | 0
.../org/apache/iceberg/spark/SparkStructLike.java | 0
.../org/apache/iceberg/spark/SparkTableUtil.java | 0
.../org/apache/iceberg/spark/SparkTypeToType.java | 0
.../org/apache/iceberg/spark/SparkTypeVisitor.java | 0
.../java/org/apache/iceberg/spark/SparkUtil.java | 0
.../apache/iceberg/spark/SparkValueConverter.java | 0
.../org/apache/iceberg/spark/SparkWriteConf.java | 0
.../apache/iceberg/spark/SparkWriteOptions.java | 0
.../org/apache/iceberg/spark/TypeToSparkType.java | 0
.../actions/BaseDeleteOrphanFilesSparkAction.java | 0
.../BaseDeleteReachableFilesSparkAction.java | 0
.../actions/BaseExpireSnapshotsSparkAction.java | 0
.../actions/BaseRewriteDataFilesSparkAction.java | 0
.../actions/BaseRewriteManifestsSparkAction.java | 0
.../actions/BaseSnapshotUpdateSparkAction.java | 0
.../iceberg/spark/actions/BaseSparkAction.java | 0
.../iceberg/spark/actions/BaseSparkActions.java | 0
.../spark/data/AvroWithSparkSchemaVisitor.java | 0
.../spark/data/ParquetWithSparkSchemaVisitor.java | 0
.../apache/iceberg/spark/data/SparkAvroReader.java | 0
.../apache/iceberg/spark/data/SparkAvroWriter.java | 0
.../apache/iceberg/spark/data/SparkOrcReader.java | 0
.../iceberg/spark/data/SparkOrcValueReaders.java | 0
.../iceberg/spark/data/SparkOrcValueWriters.java | 0
.../apache/iceberg/spark/data/SparkOrcWriter.java | 0
.../iceberg/spark/data/SparkParquetReaders.java | 0
.../iceberg/spark/data/SparkParquetWriters.java | 0
.../iceberg/spark/data/SparkValueReaders.java | 0
.../iceberg/spark/data/SparkValueWriters.java | 0
.../vectorized/ArrowVectorAccessorFactory.java | 0
.../data/vectorized/ArrowVectorAccessors.java | 0
.../spark/data/vectorized/ColumnarBatchReader.java | 0
.../data/vectorized/ConstantColumnVector.java | 0
.../data/vectorized/IcebergArrowColumnVector.java | 0
.../data/vectorized/RowPositionColumnVector.java | 0
.../data/vectorized/VectorizedSparkOrcReaders.java | 0
.../vectorized/VectorizedSparkParquetReaders.java | 0
.../iceberg/spark/source/BaseDataReader.java | 0
.../iceberg/spark/source/BatchDataReader.java | 0
.../spark/source/EqualityDeleteRowReader.java | 0
.../iceberg/spark/source/InternalRowWrapper.java | 0
.../apache/iceberg/spark/source/RowDataReader.java | 0
.../iceberg/spark/source/RowDataRewriter.java | 0
.../iceberg/spark/source/SparkAppenderFactory.java | 0
.../spark/source/SparkFileWriterFactory.java | 0
.../spark/source/SparkPartitionedFanoutWriter.java | 0
.../spark/source/SparkPartitionedWriter.java | 0
.../iceberg/spark/source/StructInternalRow.java | 0
.../test/java/org/apache/iceberg/KryoHelpers.java | 0
.../java/org/apache/iceberg/TaskCheckHelper.java | 0
.../apache/iceberg/TestDataFileSerialization.java | 0
.../apache/iceberg/TestFileIOSerialization.java | 0
.../iceberg/TestManifestFileSerialization.java | 0
.../apache/iceberg/TestScanTaskSerialization.java | 0
.../org/apache/iceberg/TestTableSerialization.java | 0
.../actions/TestDeleteReachableFilesAction.java | 0
.../iceberg/actions/TestExpireSnapshotsAction.java | 0
.../actions/TestRemoveOrphanFilesAction.java | 0
.../actions/TestRewriteDataFilesAction.java | 0
.../actions/TestRewriteManifestsAction.java | 0
.../org/apache/iceberg/spark/SparkTestBase.java | 0
.../apache/iceberg/spark/TestSparkSchemaUtil.java | 0
.../actions/TestNewRewriteDataFilesAction.java | 0
.../apache/iceberg/spark/data/AvroDataTest.java | 0
.../apache/iceberg/spark/data/GenericsHelpers.java | 0
.../org/apache/iceberg/spark/data/RandomData.java | 0
.../org/apache/iceberg/spark/data/TestHelpers.java | 0
.../apache/iceberg/spark/data/TestOrcWrite.java | 0
.../iceberg/spark/data/TestParquetAvroReader.java | 0
.../iceberg/spark/data/TestParquetAvroWriter.java | 0
.../iceberg/spark/data/TestSparkAvroEnums.java | 0
.../iceberg/spark/data/TestSparkAvroReader.java | 0
.../iceberg/spark/data/TestSparkDateTimes.java | 0
.../data/TestSparkOrcReadMetadataColumns.java | 0
.../iceberg/spark/data/TestSparkOrcReader.java | 0
.../data/TestSparkParquetReadMetadataColumns.java | 0
.../iceberg/spark/data/TestSparkParquetReader.java | 0
.../iceberg/spark/data/TestSparkParquetWriter.java | 0
.../spark/data/TestSparkRecordOrcReaderWriter.java | 0
...estParquetDictionaryEncodedVectorizedReads.java | 0
...naryFallbackToPlainEncodingVectorizedReads.java | 0
.../vectorized/TestParquetVectorizedReads.java | 0
.../apache/iceberg/spark/source/LogMessage.java | 0
.../apache/iceberg/spark/source/SimpleRecord.java | 0
.../apache/iceberg/spark/source/TestAvroScan.java | 0
.../iceberg/spark/source/TestDataFrameWrites.java | 0
.../spark/source/TestDataSourceOptions.java | 0
.../spark/source/TestForwardCompatibility.java | 0
.../source/TestIcebergSourceHadoopTables.java | 0
.../spark/source/TestIcebergSourceHiveTables.java | 0
.../spark/source/TestIcebergSourceTablesBase.java | 0
.../iceberg/spark/source/TestIcebergSpark.java | 0
.../spark/source/TestIdentityPartitionData.java | 0
.../spark/source/TestInternalRowWrapper.java | 0
.../iceberg/spark/source/TestParquetScan.java | 0
.../iceberg/spark/source/TestPartitionPruning.java | 0
.../iceberg/spark/source/TestPartitionValues.java | 0
.../iceberg/spark/source/TestReadProjection.java | 0
.../spark/source/TestSnapshotSelection.java | 0
.../spark/source/TestSparkAppenderFactory.java | 0
.../spark/source/TestSparkBaseDataReader.java | 0
.../iceberg/spark/source/TestSparkDataFile.java | 0
.../iceberg/spark/source/TestSparkDataWrite.java | 0
.../spark/source/TestSparkFileWriterFactory.java | 0
.../spark/source/TestSparkMergingMetrics.java | 0
.../spark/source/TestSparkPartitioningWriters.java | 0
.../source/TestSparkPositionDeltaWriters.java | 0
.../spark/source/TestSparkReadProjection.java | 0
.../spark/source/TestSparkReaderDeletes.java | 0
.../spark/source/TestSparkRollingFileWriters.java | 0
.../iceberg/spark/source/TestSparkSchema.java | 0
.../spark/source/TestSparkWriterMetrics.java | 0
.../spark/source/TestStructuredStreaming.java | 0
.../apache/iceberg/spark/source/TestTables.java | 0
.../spark/source/TestTimestampWithoutZone.java | 0
.../spark/source/TestWriteMetricsConfig.java | 0
.../iceberg/spark/source/ThreeColumnRecord.java | 0
spark/v3.0/build.gradle | 13 ++++-
.../apache/iceberg/spark/SparkBenchmarkUtil.java | 0
.../SparkParquetReadersFlatDataBenchmark.java | 0
.../SparkParquetReadersNestedDataBenchmark.java | 0
.../SparkParquetWritersFlatDataBenchmark.java | 0
.../SparkParquetWritersNestedDataBenchmark.java | 0
.../org/apache/iceberg/spark/source/Action.java | 0
.../spark/source/IcebergSourceBenchmark.java | 0
.../source/IcebergSourceFlatDataBenchmark.java | 0
.../source/IcebergSourceNestedDataBenchmark.java | 0
.../IcebergSourceNestedListDataBenchmark.java | 0
.../iceberg/spark/source/WritersBenchmark.java | 0
.../spark/source/avro/AvroWritersBenchmark.java | 0
.../IcebergSourceFlatAvroDataReadBenchmark.java | 0
.../IcebergSourceNestedAvroDataReadBenchmark.java | 0
.../orc/IcebergSourceFlatORCDataBenchmark.java | 0
.../orc/IcebergSourceFlatORCDataReadBenchmark.java | 0
...ebergSourceNestedListORCDataWriteBenchmark.java | 0
.../IcebergSourceNestedORCDataReadBenchmark.java | 0
...cebergSourceFlatParquetDataFilterBenchmark.java | 0
.../IcebergSourceFlatParquetDataReadBenchmark.java | 0
...IcebergSourceFlatParquetDataWriteBenchmark.java | 0
...gSourceNestedListParquetDataWriteBenchmark.java | 0
...bergSourceNestedParquetDataFilterBenchmark.java | 0
...cebergSourceNestedParquetDataReadBenchmark.java | 0
...ebergSourceNestedParquetDataWriteBenchmark.java | 0
.../source/parquet/ParquetWritersBenchmark.java | 0
...dDictionaryEncodedFlatParquetDataBenchmark.java | 0
.../VectorizedReadFlatParquetDataBenchmark.java | 0
.../java/org/apache/iceberg/actions/Actions.java | 0
.../org/apache/iceberg/actions/CreateAction.java | 0
.../iceberg/actions/ExpireSnapshotsAction.java | 0
.../actions/ExpireSnapshotsActionResult.java | 0
.../apache/iceberg/actions/ManifestFileBean.java | 0
.../iceberg/actions/RemoveOrphanFilesAction.java | 0
.../iceberg/actions/RewriteDataFilesAction.java | 0
.../iceberg/actions/RewriteManifestsAction.java | 0
.../actions/RewriteManifestsActionResult.java | 0
.../org/apache/iceberg/actions/SnapshotAction.java | 0
.../org/apache/iceberg/spark/IcebergSpark.java | 0
.../org/apache/iceberg/spark/JobGroupInfo.java | 0
.../org/apache/iceberg/spark/JobGroupUtils.java | 0
.../iceberg/spark/PruneColumnsWithReordering.java | 0
.../spark/PruneColumnsWithoutReordering.java | 0
.../org/apache/iceberg/spark/SparkConfParser.java | 0
.../org/apache/iceberg/spark/SparkDataFile.java | 0
.../apache/iceberg/spark/SparkExceptionUtil.java | 0
.../iceberg/spark/SparkFixupTimestampType.java | 0
.../org/apache/iceberg/spark/SparkFixupTypes.java | 0
.../org/apache/iceberg/spark/SparkReadConf.java | 0
.../org/apache/iceberg/spark/SparkReadOptions.java | 0
.../apache/iceberg/spark/SparkSQLProperties.java | 0
.../org/apache/iceberg/spark/SparkSchemaUtil.java | 0
.../org/apache/iceberg/spark/SparkStructLike.java | 0
.../org/apache/iceberg/spark/SparkTableUtil.java | 4 +-
.../org/apache/iceberg/spark/SparkTypeToType.java | 0
.../org/apache/iceberg/spark/SparkTypeVisitor.java | 0
.../java/org/apache/iceberg/spark/SparkUtil.java | 0
.../apache/iceberg/spark/SparkValueConverter.java | 0
.../org/apache/iceberg/spark/SparkWriteConf.java | 0
.../apache/iceberg/spark/SparkWriteOptions.java | 0
.../org/apache/iceberg/spark/TypeToSparkType.java | 0
.../actions/BaseDeleteOrphanFilesSparkAction.java | 0
.../BaseDeleteReachableFilesSparkAction.java | 0
.../actions/BaseExpireSnapshotsSparkAction.java | 0
.../actions/BaseRewriteDataFilesSparkAction.java | 0
.../actions/BaseRewriteManifestsSparkAction.java | 0
.../actions/BaseSnapshotUpdateSparkAction.java | 0
.../iceberg/spark/actions/BaseSparkAction.java | 0
.../iceberg/spark/actions/BaseSparkActions.java | 0
.../spark/data/AvroWithSparkSchemaVisitor.java | 0
.../spark/data/ParquetWithSparkSchemaVisitor.java | 0
.../apache/iceberg/spark/data/SparkAvroReader.java | 0
.../apache/iceberg/spark/data/SparkAvroWriter.java | 0
.../apache/iceberg/spark/data/SparkOrcReader.java | 0
.../iceberg/spark/data/SparkOrcValueReaders.java | 0
.../iceberg/spark/data/SparkOrcValueWriters.java | 0
.../apache/iceberg/spark/data/SparkOrcWriter.java | 0
.../iceberg/spark/data/SparkParquetReaders.java | 0
.../iceberg/spark/data/SparkParquetWriters.java | 0
.../iceberg/spark/data/SparkValueReaders.java | 0
.../iceberg/spark/data/SparkValueWriters.java | 0
.../vectorized/ArrowVectorAccessorFactory.java | 0
.../data/vectorized/ArrowVectorAccessors.java | 0
.../spark/data/vectorized/ColumnarBatchReader.java | 0
.../data/vectorized/ConstantColumnVector.java | 2 +-
.../data/vectorized/IcebergArrowColumnVector.java | 0
.../data/vectorized/RowPositionColumnVector.java | 2 +-
.../data/vectorized/VectorizedSparkOrcReaders.java | 0
.../vectorized/VectorizedSparkParquetReaders.java | 0
.../iceberg/spark/source/BaseDataReader.java | 0
.../iceberg/spark/source/BatchDataReader.java | 0
.../spark/source/EqualityDeleteRowReader.java | 0
.../iceberg/spark/source/InternalRowWrapper.java | 0
.../apache/iceberg/spark/source/RowDataReader.java | 0
.../iceberg/spark/source/RowDataRewriter.java | 0
.../iceberg/spark/source/SparkAppenderFactory.java | 0
.../spark/source/SparkFileWriterFactory.java | 0
.../spark/source/SparkPartitionedFanoutWriter.java | 0
.../spark/source/SparkPartitionedWriter.java | 0
.../iceberg/spark/source/StructInternalRow.java | 0
.../test/java/org/apache/iceberg/KryoHelpers.java | 0
.../java/org/apache/iceberg/TaskCheckHelper.java | 0
.../apache/iceberg/TestDataFileSerialization.java | 0
.../apache/iceberg/TestFileIOSerialization.java | 0
.../iceberg/TestManifestFileSerialization.java | 0
.../apache/iceberg/TestScanTaskSerialization.java | 0
.../org/apache/iceberg/TestTableSerialization.java | 0
.../actions/TestDeleteReachableFilesAction.java | 0
.../iceberg/actions/TestExpireSnapshotsAction.java | 0
.../actions/TestRemoveOrphanFilesAction.java | 0
.../actions/TestRewriteDataFilesAction.java | 0
.../actions/TestRewriteManifestsAction.java | 0
.../org/apache/iceberg/spark/SparkTestBase.java | 0
.../apache/iceberg/spark/TestSparkSchemaUtil.java | 0
.../actions/TestNewRewriteDataFilesAction.java | 0
.../apache/iceberg/spark/data/AvroDataTest.java | 0
.../apache/iceberg/spark/data/GenericsHelpers.java | 0
.../org/apache/iceberg/spark/data/RandomData.java | 0
.../org/apache/iceberg/spark/data/TestHelpers.java | 0
.../apache/iceberg/spark/data/TestOrcWrite.java | 0
.../iceberg/spark/data/TestParquetAvroReader.java | 0
.../iceberg/spark/data/TestParquetAvroWriter.java | 0
.../iceberg/spark/data/TestSparkAvroEnums.java | 0
.../iceberg/spark/data/TestSparkAvroReader.java | 0
.../iceberg/spark/data/TestSparkDateTimes.java | 6 +-
.../data/TestSparkOrcReadMetadataColumns.java | 0
.../iceberg/spark/data/TestSparkOrcReader.java | 0
.../data/TestSparkParquetReadMetadataColumns.java | 0
.../iceberg/spark/data/TestSparkParquetReader.java | 0
.../iceberg/spark/data/TestSparkParquetWriter.java | 0
.../spark/data/TestSparkRecordOrcReaderWriter.java | 0
...estParquetDictionaryEncodedVectorizedReads.java | 0
...naryFallbackToPlainEncodingVectorizedReads.java | 0
.../vectorized/TestParquetVectorizedReads.java | 0
.../apache/iceberg/spark/source/LogMessage.java | 0
.../apache/iceberg/spark/source/SimpleRecord.java | 0
.../apache/iceberg/spark/source/TestAvroScan.java | 0
.../iceberg/spark/source/TestDataFrameWrites.java | 0
.../spark/source/TestDataSourceOptions.java | 0
.../spark/source/TestForwardCompatibility.java | 3 +-
.../source/TestIcebergSourceHadoopTables.java | 0
.../spark/source/TestIcebergSourceHiveTables.java | 0
.../spark/source/TestIcebergSourceTablesBase.java | 0
.../iceberg/spark/source/TestIcebergSpark.java | 0
.../spark/source/TestIdentityPartitionData.java | 0
.../spark/source/TestInternalRowWrapper.java | 0
.../iceberg/spark/source/TestParquetScan.java | 0
.../iceberg/spark/source/TestPartitionPruning.java | 0
.../iceberg/spark/source/TestPartitionValues.java | 0
.../iceberg/spark/source/TestReadProjection.java | 0
.../spark/source/TestSnapshotSelection.java | 0
.../spark/source/TestSparkAppenderFactory.java | 0
.../spark/source/TestSparkBaseDataReader.java | 0
.../iceberg/spark/source/TestSparkDataFile.java | 0
.../iceberg/spark/source/TestSparkDataWrite.java | 0
.../spark/source/TestSparkFileWriterFactory.java | 0
.../spark/source/TestSparkMergingMetrics.java | 0
.../spark/source/TestSparkPartitioningWriters.java | 0
.../source/TestSparkPositionDeltaWriters.java | 0
.../spark/source/TestSparkReadProjection.java | 0
.../spark/source/TestSparkReaderDeletes.java | 0
.../spark/source/TestSparkRollingFileWriters.java | 0
.../iceberg/spark/source/TestSparkSchema.java | 0
.../spark/source/TestSparkWriterMetrics.java | 0
.../spark/source/TestStructuredStreaming.java | 0
.../apache/iceberg/spark/source/TestTables.java | 0
.../spark/source/TestTimestampWithoutZone.java | 0
.../spark/source/TestWriteMetricsConfig.java | 0
.../iceberg/spark/source/ThreeColumnRecord.java | 0
342 files changed, 37 insertions(+), 84 deletions(-)
diff --git a/jmh.gradle b/jmh.gradle
index 5e4cc1b..24a7878 100644
--- a/jmh.gradle
+++ b/jmh.gradle
@@ -45,14 +45,6 @@ configure(jmhProjects) {
zip64 true
}
- // Path is relative to either spark2 or spark3 folder, depending on project being tested
- sourceSets {
- jmh {
- java.srcDirs = ['src/jmh/java', '../../../spark/src/jmh/java']
- compileClasspath += sourceSets.main.runtimeClasspath
- }
- }
-
jmhCompileGeneratedClasses {
pluginManager.withPlugin('com.palantir.baseline-error-prone') {
options.errorprone.enabled = false
diff --git a/spark/build.gradle b/spark/build.gradle
index b343268..30ea7fe 100644
--- a/spark/build.gradle
+++ b/spark/build.gradle
@@ -17,71 +17,6 @@
* under the License.
*/
-project(':iceberg-spark') {
- configurations.all {
- resolutionStrategy {
- // Spark 2.4.4 can only use the below datanucleus version, the versions introduced
- // by Hive 2.3.6 will meet lots of unexpected issues, so here force to use the versions
- // introduced by Hive 1.2.1.
- force 'org.datanucleus:datanucleus-api-jdo:3.2.6'
- force 'org.datanucleus:datanucleus-core:3.2.10'
- force 'org.datanucleus:datanucleus-rdbms:3.2.9'
- }
- }
-
- dependencies {
- implementation project(path: ':iceberg-bundled-guava', configuration: 'shadow')
- api project(':iceberg-api')
- implementation project(':iceberg-common')
- implementation project(':iceberg-core')
- api project(':iceberg-data')
- implementation project(':iceberg-orc')
- implementation project(':iceberg-parquet')
- implementation project(':iceberg-arrow')
- implementation project(':iceberg-hive-metastore')
-
- compileOnly "com.google.errorprone:error_prone_annotations"
- compileOnly "org.apache.avro:avro"
- compileOnly("org.apache.spark:spark-hive_2.11") {
- exclude group: 'org.apache.avro', module: 'avro'
- }
-
- implementation("org.apache.orc:orc-core::nohive") {
- exclude group: 'org.apache.hadoop'
- exclude group: 'commons-lang'
- // These artifacts are shaded and included in the orc-core fat jar
- exclude group: 'com.google.protobuf', module: 'protobuf-java'
- exclude group: 'org.apache.hive', module: 'hive-storage-api'
- }
-
- implementation("org.apache.arrow:arrow-vector") {
- exclude group: 'io.netty', module: 'netty-buffer'
- exclude group: 'io.netty', module: 'netty-common'
- exclude group: 'com.google.code.findbugs', module: 'jsr305'
- }
-
- testImplementation("org.apache.hadoop:hadoop-minicluster") {
- exclude group: 'org.apache.avro', module: 'avro'
- }
- testImplementation project(path: ':iceberg-hive-metastore', configuration: 'testArtifacts')
- testImplementation project(path: ':iceberg-api', configuration: 'testArtifacts')
- testImplementation project(path: ':iceberg-core', configuration: 'testArtifacts')
- testImplementation project(path: ':iceberg-data', configuration: 'testArtifacts')
- }
-
- test {
- // For vectorized reads
- // Allow unsafe memory access to avoid the costly check arrow does to check if index is within bounds
- systemProperty("arrow.enable_unsafe_memory_access", "true")
- // Disable expensive null check for every get(index) call.
- // Iceberg manages nullability checks itself instead of relying on arrow.
- systemProperty("arrow.enable_null_check_for_get", "false")
-
- // Vectorized reads need more memory
- maxHeapSize '2500m'
- }
-}
-
// add enabled Spark version modules to the build
def sparkVersions = (System.getProperty("sparkVersions") != null ? System.getProperty("sparkVersions") : System.getProperty("defaultSparkVersions")).split(",")
@@ -92,4 +27,3 @@ if (jdkVersion == '8' && sparkVersions.contains("2.4")) {
if (sparkVersions.contains("3.0")) {
apply from: file("$projectDir/v3.0/build.gradle")
}
-
diff --git a/spark/v2.4/build.gradle b/spark/v2.4/build.gradle
index b9d3c1a..4fbbf73 100644
--- a/spark/v2.4/build.gradle
+++ b/spark/v2.4/build.gradle
@@ -43,21 +43,34 @@ project(':iceberg-spark:iceberg-spark2') {
implementation project(':iceberg-parquet')
implementation project(':iceberg-arrow')
implementation project(':iceberg-hive-metastore')
- implementation project(':iceberg-spark')
implementation "com.github.ben-manes.caffeine:caffeine"
+ compileOnly "com.google.errorprone:error_prone_annotations"
compileOnly "org.apache.avro:avro"
compileOnly("org.apache.spark:spark-hive_2.11") {
exclude group: 'org.apache.avro', module: 'avro'
}
- testImplementation project(path: ':iceberg-spark', configuration: 'testArtifacts')
+ implementation("org.apache.orc:orc-core::nohive") {
+ exclude group: 'org.apache.hadoop'
+ exclude group: 'commons-lang'
+ // These artifacts are shaded and included in the orc-core fat jar
+ exclude group: 'com.google.protobuf', module: 'protobuf-java'
+ exclude group: 'org.apache.hive', module: 'hive-storage-api'
+ }
+
+ implementation("org.apache.arrow:arrow-vector") {
+ exclude group: 'io.netty', module: 'netty-buffer'
+ exclude group: 'io.netty', module: 'netty-common'
+ exclude group: 'com.google.code.findbugs', module: 'jsr305'
+ }
testImplementation("org.apache.hadoop:hadoop-minicluster") {
exclude group: 'org.apache.avro', module: 'avro'
}
testImplementation project(path: ':iceberg-hive-metastore', configuration: 'testArtifacts')
testImplementation project(path: ':iceberg-api', configuration: 'testArtifacts')
+ testImplementation project(path: ':iceberg-core', configuration: 'testArtifacts')
testImplementation project(path: ':iceberg-data', configuration: 'testArtifacts')
}
diff --git a/spark/src/jmh/java/org/apache/iceberg/spark/SparkBenchmarkUtil.java b/spark/v2.4/spark2/src/jmh/java/org/apache/iceberg/spark/SparkBenchmarkUtil.java
similarity index 100%
copy from spark/src/jmh/java/org/apache/iceberg/spark/SparkBenchmarkUtil.java
copy to spark/v2.4/spark2/src/jmh/java/org/apache/iceberg/spark/SparkBenchmarkUtil.java
diff --git a/spark/src/jmh/java/org/apache/iceberg/spark/data/parquet/SparkParquetReadersFlatDataBenchmark.java b/spark/v2.4/spark2/src/jmh/java/org/apache/iceberg/spark/data/parquet/SparkParquetReadersFlatDataBenchmark.java
similarity index 100%
copy from spark/src/jmh/java/org/apache/iceberg/spark/data/parquet/SparkParquetReadersFlatDataBenchmark.java
copy to spark/v2.4/spark2/src/jmh/java/org/apache/iceberg/spark/data/parquet/SparkParquetReadersFlatDataBenchmark.java
diff --git a/spark/src/jmh/java/org/apache/iceberg/spark/data/parquet/SparkParquetReadersNestedDataBenchmark.java b/spark/v2.4/spark2/src/jmh/java/org/apache/iceberg/spark/data/parquet/SparkParquetReadersNestedDataBenchmark.java
similarity index 100%
copy from spark/src/jmh/java/org/apache/iceberg/spark/data/parquet/SparkParquetReadersNestedDataBenchmark.java
copy to spark/v2.4/spark2/src/jmh/java/org/apache/iceberg/spark/data/parquet/SparkParquetReadersNestedDataBenchmark.java
diff --git a/spark/src/jmh/java/org/apache/iceberg/spark/data/parquet/SparkParquetWritersFlatDataBenchmark.java b/spark/v2.4/spark2/src/jmh/java/org/apache/iceberg/spark/data/parquet/SparkParquetWritersFlatDataBenchmark.java
similarity index 100%
copy from spark/src/jmh/java/org/apache/iceberg/spark/data/parquet/SparkParquetWritersFlatDataBenchmark.java
copy to spark/v2.4/spark2/src/jmh/java/org/apache/iceberg/spark/data/parquet/SparkParquetWritersFlatDataBenchmark.java
diff --git a/spark/src/jmh/java/org/apache/iceberg/spark/data/parquet/SparkParquetWritersNestedDataBenchmark.java b/spark/v2.4/spark2/src/jmh/java/org/apache/iceberg/spark/data/parquet/SparkParquetWritersNestedDataBenchmark.java
similarity index 100%
copy from spark/src/jmh/java/org/apache/iceberg/spark/data/parquet/SparkParquetWritersNestedDataBenchmark.java
copy to spark/v2.4/spark2/src/jmh/java/org/apache/iceberg/spark/data/parquet/SparkParquetWritersNestedDataBenchmark.java
diff --git a/spark/src/jmh/java/org/apache/iceberg/spark/source/Action.java b/spark/v2.4/spark2/src/jmh/java/org/apache/iceberg/spark/source/Action.java
similarity index 100%
copy from spark/src/jmh/java/org/apache/iceberg/spark/source/Action.java
copy to spark/v2.4/spark2/src/jmh/java/org/apache/iceberg/spark/source/Action.java
diff --git a/spark/src/jmh/java/org/apache/iceberg/spark/source/IcebergSourceBenchmark.java b/spark/v2.4/spark2/src/jmh/java/org/apache/iceberg/spark/source/IcebergSourceBenchmark.java
similarity index 100%
copy from spark/src/jmh/java/org/apache/iceberg/spark/source/IcebergSourceBenchmark.java
copy to spark/v2.4/spark2/src/jmh/java/org/apache/iceberg/spark/source/IcebergSourceBenchmark.java
diff --git a/spark/src/jmh/java/org/apache/iceberg/spark/source/IcebergSourceFlatDataBenchmark.java b/spark/v2.4/spark2/src/jmh/java/org/apache/iceberg/spark/source/IcebergSourceFlatDataBenchmark.java
similarity index 100%
copy from spark/src/jmh/java/org/apache/iceberg/spark/source/IcebergSourceFlatDataBenchmark.java
copy to spark/v2.4/spark2/src/jmh/java/org/apache/iceberg/spark/source/IcebergSourceFlatDataBenchmark.java
diff --git a/spark/src/jmh/java/org/apache/iceberg/spark/source/IcebergSourceNestedDataBenchmark.java b/spark/v2.4/spark2/src/jmh/java/org/apache/iceberg/spark/source/IcebergSourceNestedDataBenchmark.java
similarity index 100%
copy from spark/src/jmh/java/org/apache/iceberg/spark/source/IcebergSourceNestedDataBenchmark.java
copy to spark/v2.4/spark2/src/jmh/java/org/apache/iceberg/spark/source/IcebergSourceNestedDataBenchmark.java
diff --git a/spark/src/jmh/java/org/apache/iceberg/spark/source/IcebergSourceNestedListDataBenchmark.java b/spark/v2.4/spark2/src/jmh/java/org/apache/iceberg/spark/source/IcebergSourceNestedListDataBenchmark.java
similarity index 100%
copy from spark/src/jmh/java/org/apache/iceberg/spark/source/IcebergSourceNestedListDataBenchmark.java
copy to spark/v2.4/spark2/src/jmh/java/org/apache/iceberg/spark/source/IcebergSourceNestedListDataBenchmark.java
diff --git a/spark/src/jmh/java/org/apache/iceberg/spark/source/WritersBenchmark.java b/spark/v2.4/spark2/src/jmh/java/org/apache/iceberg/spark/source/WritersBenchmark.java
similarity index 100%
copy from spark/src/jmh/java/org/apache/iceberg/spark/source/WritersBenchmark.java
copy to spark/v2.4/spark2/src/jmh/java/org/apache/iceberg/spark/source/WritersBenchmark.java
diff --git a/spark/src/jmh/java/org/apache/iceberg/spark/source/avro/AvroWritersBenchmark.java b/spark/v2.4/spark2/src/jmh/java/org/apache/iceberg/spark/source/avro/AvroWritersBenchmark.java
similarity index 100%
copy from spark/src/jmh/java/org/apache/iceberg/spark/source/avro/AvroWritersBenchmark.java
copy to spark/v2.4/spark2/src/jmh/java/org/apache/iceberg/spark/source/avro/AvroWritersBenchmark.java
diff --git a/spark/src/jmh/java/org/apache/iceberg/spark/source/avro/IcebergSourceFlatAvroDataReadBenchmark.java b/spark/v2.4/spark2/src/jmh/java/org/apache/iceberg/spark/source/avro/IcebergSourceFlatAvroDataReadBenchmark.java
similarity index 100%
copy from spark/src/jmh/java/org/apache/iceberg/spark/source/avro/IcebergSourceFlatAvroDataReadBenchmark.java
copy to spark/v2.4/spark2/src/jmh/java/org/apache/iceberg/spark/source/avro/IcebergSourceFlatAvroDataReadBenchmark.java
diff --git a/spark/src/jmh/java/org/apache/iceberg/spark/source/avro/IcebergSourceNestedAvroDataReadBenchmark.java b/spark/v2.4/spark2/src/jmh/java/org/apache/iceberg/spark/source/avro/IcebergSourceNestedAvroDataReadBenchmark.java
similarity index 100%
copy from spark/src/jmh/java/org/apache/iceberg/spark/source/avro/IcebergSourceNestedAvroDataReadBenchmark.java
copy to spark/v2.4/spark2/src/jmh/java/org/apache/iceberg/spark/source/avro/IcebergSourceNestedAvroDataReadBenchmark.java
diff --git a/spark/src/jmh/java/org/apache/iceberg/spark/source/orc/IcebergSourceFlatORCDataBenchmark.java b/spark/v2.4/spark2/src/jmh/java/org/apache/iceberg/spark/source/orc/IcebergSourceFlatORCDataBenchmark.java
similarity index 100%
copy from spark/src/jmh/java/org/apache/iceberg/spark/source/orc/IcebergSourceFlatORCDataBenchmark.java
copy to spark/v2.4/spark2/src/jmh/java/org/apache/iceberg/spark/source/orc/IcebergSourceFlatORCDataBenchmark.java
diff --git a/spark/src/jmh/java/org/apache/iceberg/spark/source/orc/IcebergSourceFlatORCDataReadBenchmark.java b/spark/v2.4/spark2/src/jmh/java/org/apache/iceberg/spark/source/orc/IcebergSourceFlatORCDataReadBenchmark.java
similarity index 100%
copy from spark/src/jmh/java/org/apache/iceberg/spark/source/orc/IcebergSourceFlatORCDataReadBenchmark.java
copy to spark/v2.4/spark2/src/jmh/java/org/apache/iceberg/spark/source/orc/IcebergSourceFlatORCDataReadBenchmark.java
diff --git a/spark/src/jmh/java/org/apache/iceberg/spark/source/orc/IcebergSourceNestedListORCDataWriteBenchmark.java b/spark/v2.4/spark2/src/jmh/java/org/apache/iceberg/spark/source/orc/IcebergSourceNestedListORCDataWriteBenchmark.java
similarity index 100%
copy from spark/src/jmh/java/org/apache/iceberg/spark/source/orc/IcebergSourceNestedListORCDataWriteBenchmark.java
copy to spark/v2.4/spark2/src/jmh/java/org/apache/iceberg/spark/source/orc/IcebergSourceNestedListORCDataWriteBenchmark.java
diff --git a/spark/src/jmh/java/org/apache/iceberg/spark/source/orc/IcebergSourceNestedORCDataReadBenchmark.java b/spark/v2.4/spark2/src/jmh/java/org/apache/iceberg/spark/source/orc/IcebergSourceNestedORCDataReadBenchmark.java
similarity index 100%
copy from spark/src/jmh/java/org/apache/iceberg/spark/source/orc/IcebergSourceNestedORCDataReadBenchmark.java
copy to spark/v2.4/spark2/src/jmh/java/org/apache/iceberg/spark/source/orc/IcebergSourceNestedORCDataReadBenchmark.java
diff --git a/spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceFlatParquetDataFilterBenchmark.java b/spark/v2.4/spark2/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceFlatParquetDataFilterBenchmark.java
similarity index 100%
copy from spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceFlatParquetDataFilterBenchmark.java
copy to spark/v2.4/spark2/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceFlatParquetDataFilterBenchmark.java
diff --git a/spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceFlatParquetDataReadBenchmark.java b/spark/v2.4/spark2/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceFlatParquetDataReadBenchmark.java
similarity index 100%
copy from spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceFlatParquetDataReadBenchmark.java
copy to spark/v2.4/spark2/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceFlatParquetDataReadBenchmark.java
diff --git a/spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceFlatParquetDataWriteBenchmark.java b/spark/v2.4/spark2/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceFlatParquetDataWriteBenchmark.java
similarity index 100%
copy from spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceFlatParquetDataWriteBenchmark.java
copy to spark/v2.4/spark2/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceFlatParquetDataWriteBenchmark.java
diff --git a/spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceNestedListParquetDataWriteBenchmark.java b/spark/v2.4/spark2/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceNestedListParquetDataWriteBenchmark.java
similarity index 100%
copy from spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceNestedListParquetDataWriteBenchmark.java
copy to spark/v2.4/spark2/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceNestedListParquetDataWriteBenchmark.java
diff --git a/spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceNestedParquetDataFilterBenchmark.java b/spark/v2.4/spark2/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceNestedParquetDataFilterBenchmark.java
similarity index 100%
copy from spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceNestedParquetDataFilterBenchmark.java
copy to spark/v2.4/spark2/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceNestedParquetDataFilterBenchmark.java
diff --git a/spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceNestedParquetDataReadBenchmark.java b/spark/v2.4/spark2/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceNestedParquetDataReadBenchmark.java
similarity index 100%
copy from spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceNestedParquetDataReadBenchmark.java
copy to spark/v2.4/spark2/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceNestedParquetDataReadBenchmark.java
diff --git a/spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceNestedParquetDataWriteBenchmark.java b/spark/v2.4/spark2/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceNestedParquetDataWriteBenchmark.java
similarity index 100%
copy from spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceNestedParquetDataWriteBenchmark.java
copy to spark/v2.4/spark2/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceNestedParquetDataWriteBenchmark.java
diff --git a/spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/ParquetWritersBenchmark.java b/spark/v2.4/spark2/src/jmh/java/org/apache/iceberg/spark/source/parquet/ParquetWritersBenchmark.java
similarity index 100%
copy from spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/ParquetWritersBenchmark.java
copy to spark/v2.4/spark2/src/jmh/java/org/apache/iceberg/spark/source/parquet/ParquetWritersBenchmark.java
diff --git a/spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/vectorized/VectorizedReadDictionaryEncodedFlatParquetDataBenchmark.java b/spark/v2.4/spark2/src/jmh/java/org/apache/iceberg/spark/source/parquet/vectorized/VectorizedReadDictionaryEncodedFlatParquetDataBenchmark.java
similarity index 100%
copy from spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/vectorized/VectorizedReadDictionaryEncodedFlatParquetDataBenchmark.java
copy to spark/v2.4/spark2/src/jmh/java/org/apache/iceberg/spark/source/parquet/vectorized/VectorizedReadDictionaryEncodedFlatParquetDataBenchmark.java
diff --git a/spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/vectorized/VectorizedReadFlatParquetDataBenchmark.java b/spark/v2.4/spark2/src/jmh/java/org/apache/iceberg/spark/source/parquet/vectorized/VectorizedReadFlatParquetDataBenchmark.java
similarity index 100%
copy from spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/vectorized/VectorizedReadFlatParquetDataBenchmark.java
copy to spark/v2.4/spark2/src/jmh/java/org/apache/iceberg/spark/source/parquet/vectorized/VectorizedReadFlatParquetDataBenchmark.java
diff --git a/spark/src/main/java/org/apache/iceberg/actions/Actions.java b/spark/v2.4/spark2/src/main/java/org/apache/iceberg/actions/Actions.java
similarity index 100%
copy from spark/src/main/java/org/apache/iceberg/actions/Actions.java
copy to spark/v2.4/spark2/src/main/java/org/apache/iceberg/actions/Actions.java
diff --git a/spark/src/main/java/org/apache/iceberg/actions/CreateAction.java b/spark/v2.4/spark2/src/main/java/org/apache/iceberg/actions/CreateAction.java
similarity index 100%
copy from spark/src/main/java/org/apache/iceberg/actions/CreateAction.java
copy to spark/v2.4/spark2/src/main/java/org/apache/iceberg/actions/CreateAction.java
diff --git a/spark/src/main/java/org/apache/iceberg/actions/ExpireSnapshotsAction.java b/spark/v2.4/spark2/src/main/java/org/apache/iceberg/actions/ExpireSnapshotsAction.java
similarity index 100%
copy from spark/src/main/java/org/apache/iceberg/actions/ExpireSnapshotsAction.java
copy to spark/v2.4/spark2/src/main/java/org/apache/iceberg/actions/ExpireSnapshotsAction.java
diff --git a/spark/src/main/java/org/apache/iceberg/actions/ExpireSnapshotsActionResult.java b/spark/v2.4/spark2/src/main/java/org/apache/iceberg/actions/ExpireSnapshotsActionResult.java
similarity index 100%
copy from spark/src/main/java/org/apache/iceberg/actions/ExpireSnapshotsActionResult.java
copy to spark/v2.4/spark2/src/main/java/org/apache/iceberg/actions/ExpireSnapshotsActionResult.java
diff --git a/spark/src/main/java/org/apache/iceberg/actions/ManifestFileBean.java b/spark/v2.4/spark2/src/main/java/org/apache/iceberg/actions/ManifestFileBean.java
similarity index 100%
copy from spark/src/main/java/org/apache/iceberg/actions/ManifestFileBean.java
copy to spark/v2.4/spark2/src/main/java/org/apache/iceberg/actions/ManifestFileBean.java
diff --git a/spark/src/main/java/org/apache/iceberg/actions/RemoveOrphanFilesAction.java b/spark/v2.4/spark2/src/main/java/org/apache/iceberg/actions/RemoveOrphanFilesAction.java
similarity index 100%
copy from spark/src/main/java/org/apache/iceberg/actions/RemoveOrphanFilesAction.java
copy to spark/v2.4/spark2/src/main/java/org/apache/iceberg/actions/RemoveOrphanFilesAction.java
diff --git a/spark/src/main/java/org/apache/iceberg/actions/RewriteDataFilesAction.java b/spark/v2.4/spark2/src/main/java/org/apache/iceberg/actions/RewriteDataFilesAction.java
similarity index 100%
copy from spark/src/main/java/org/apache/iceberg/actions/RewriteDataFilesAction.java
copy to spark/v2.4/spark2/src/main/java/org/apache/iceberg/actions/RewriteDataFilesAction.java
diff --git a/spark/src/main/java/org/apache/iceberg/actions/RewriteManifestsAction.java b/spark/v2.4/spark2/src/main/java/org/apache/iceberg/actions/RewriteManifestsAction.java
similarity index 100%
copy from spark/src/main/java/org/apache/iceberg/actions/RewriteManifestsAction.java
copy to spark/v2.4/spark2/src/main/java/org/apache/iceberg/actions/RewriteManifestsAction.java
diff --git a/spark/src/main/java/org/apache/iceberg/actions/RewriteManifestsActionResult.java b/spark/v2.4/spark2/src/main/java/org/apache/iceberg/actions/RewriteManifestsActionResult.java
similarity index 100%
copy from spark/src/main/java/org/apache/iceberg/actions/RewriteManifestsActionResult.java
copy to spark/v2.4/spark2/src/main/java/org/apache/iceberg/actions/RewriteManifestsActionResult.java
diff --git a/spark/src/main/java/org/apache/iceberg/actions/SnapshotAction.java b/spark/v2.4/spark2/src/main/java/org/apache/iceberg/actions/SnapshotAction.java
similarity index 100%
copy from spark/src/main/java/org/apache/iceberg/actions/SnapshotAction.java
copy to spark/v2.4/spark2/src/main/java/org/apache/iceberg/actions/SnapshotAction.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/IcebergSpark.java b/spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/IcebergSpark.java
similarity index 100%
copy from spark/src/main/java/org/apache/iceberg/spark/IcebergSpark.java
copy to spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/IcebergSpark.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/JobGroupInfo.java b/spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/JobGroupInfo.java
similarity index 100%
copy from spark/src/main/java/org/apache/iceberg/spark/JobGroupInfo.java
copy to spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/JobGroupInfo.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/JobGroupUtils.java b/spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/JobGroupUtils.java
similarity index 100%
copy from spark/src/main/java/org/apache/iceberg/spark/JobGroupUtils.java
copy to spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/JobGroupUtils.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/PruneColumnsWithReordering.java b/spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/PruneColumnsWithReordering.java
similarity index 100%
copy from spark/src/main/java/org/apache/iceberg/spark/PruneColumnsWithReordering.java
copy to spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/PruneColumnsWithReordering.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/PruneColumnsWithoutReordering.java b/spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/PruneColumnsWithoutReordering.java
similarity index 100%
copy from spark/src/main/java/org/apache/iceberg/spark/PruneColumnsWithoutReordering.java
copy to spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/PruneColumnsWithoutReordering.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/SparkConfParser.java b/spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/SparkConfParser.java
similarity index 100%
copy from spark/src/main/java/org/apache/iceberg/spark/SparkConfParser.java
copy to spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/SparkConfParser.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/SparkDataFile.java b/spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/SparkDataFile.java
similarity index 100%
copy from spark/src/main/java/org/apache/iceberg/spark/SparkDataFile.java
copy to spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/SparkDataFile.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/SparkExceptionUtil.java b/spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/SparkExceptionUtil.java
similarity index 100%
copy from spark/src/main/java/org/apache/iceberg/spark/SparkExceptionUtil.java
copy to spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/SparkExceptionUtil.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/SparkFixupTimestampType.java b/spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/SparkFixupTimestampType.java
similarity index 100%
copy from spark/src/main/java/org/apache/iceberg/spark/SparkFixupTimestampType.java
copy to spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/SparkFixupTimestampType.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/SparkFixupTypes.java b/spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/SparkFixupTypes.java
similarity index 100%
copy from spark/src/main/java/org/apache/iceberg/spark/SparkFixupTypes.java
copy to spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/SparkFixupTypes.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/SparkReadConf.java b/spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/SparkReadConf.java
similarity index 100%
copy from spark/src/main/java/org/apache/iceberg/spark/SparkReadConf.java
copy to spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/SparkReadConf.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/SparkReadOptions.java b/spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/SparkReadOptions.java
similarity index 100%
copy from spark/src/main/java/org/apache/iceberg/spark/SparkReadOptions.java
copy to spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/SparkReadOptions.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/SparkSQLProperties.java b/spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/SparkSQLProperties.java
similarity index 100%
copy from spark/src/main/java/org/apache/iceberg/spark/SparkSQLProperties.java
copy to spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/SparkSQLProperties.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/SparkSchemaUtil.java b/spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/SparkSchemaUtil.java
similarity index 100%
copy from spark/src/main/java/org/apache/iceberg/spark/SparkSchemaUtil.java
copy to spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/SparkSchemaUtil.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/SparkStructLike.java b/spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/SparkStructLike.java
similarity index 100%
copy from spark/src/main/java/org/apache/iceberg/spark/SparkStructLike.java
copy to spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/SparkStructLike.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/SparkTableUtil.java b/spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/SparkTableUtil.java
similarity index 100%
copy from spark/src/main/java/org/apache/iceberg/spark/SparkTableUtil.java
copy to spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/SparkTableUtil.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/SparkTypeToType.java b/spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/SparkTypeToType.java
similarity index 100%
copy from spark/src/main/java/org/apache/iceberg/spark/SparkTypeToType.java
copy to spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/SparkTypeToType.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/SparkTypeVisitor.java b/spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/SparkTypeVisitor.java
similarity index 100%
copy from spark/src/main/java/org/apache/iceberg/spark/SparkTypeVisitor.java
copy to spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/SparkTypeVisitor.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/SparkUtil.java b/spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/SparkUtil.java
similarity index 100%
copy from spark/src/main/java/org/apache/iceberg/spark/SparkUtil.java
copy to spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/SparkUtil.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/SparkValueConverter.java b/spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/SparkValueConverter.java
similarity index 100%
copy from spark/src/main/java/org/apache/iceberg/spark/SparkValueConverter.java
copy to spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/SparkValueConverter.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/SparkWriteConf.java b/spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/SparkWriteConf.java
similarity index 100%
copy from spark/src/main/java/org/apache/iceberg/spark/SparkWriteConf.java
copy to spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/SparkWriteConf.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/SparkWriteOptions.java b/spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/SparkWriteOptions.java
similarity index 100%
copy from spark/src/main/java/org/apache/iceberg/spark/SparkWriteOptions.java
copy to spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/SparkWriteOptions.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/TypeToSparkType.java b/spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/TypeToSparkType.java
similarity index 100%
copy from spark/src/main/java/org/apache/iceberg/spark/TypeToSparkType.java
copy to spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/TypeToSparkType.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/actions/BaseDeleteOrphanFilesSparkAction.java b/spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/actions/BaseDeleteOrphanFilesSparkAction.java
similarity index 100%
copy from spark/src/main/java/org/apache/iceberg/spark/actions/BaseDeleteOrphanFilesSparkAction.java
copy to spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/actions/BaseDeleteOrphanFilesSparkAction.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/actions/BaseDeleteReachableFilesSparkAction.java b/spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/actions/BaseDeleteReachableFilesSparkAction.java
similarity index 100%
copy from spark/src/main/java/org/apache/iceberg/spark/actions/BaseDeleteReachableFilesSparkAction.java
copy to spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/actions/BaseDeleteReachableFilesSparkAction.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/actions/BaseExpireSnapshotsSparkAction.java b/spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/actions/BaseExpireSnapshotsSparkAction.java
similarity index 100%
copy from spark/src/main/java/org/apache/iceberg/spark/actions/BaseExpireSnapshotsSparkAction.java
copy to spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/actions/BaseExpireSnapshotsSparkAction.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/actions/BaseRewriteDataFilesSparkAction.java b/spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/actions/BaseRewriteDataFilesSparkAction.java
similarity index 100%
copy from spark/src/main/java/org/apache/iceberg/spark/actions/BaseRewriteDataFilesSparkAction.java
copy to spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/actions/BaseRewriteDataFilesSparkAction.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/actions/BaseRewriteManifestsSparkAction.java b/spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/actions/BaseRewriteManifestsSparkAction.java
similarity index 100%
copy from spark/src/main/java/org/apache/iceberg/spark/actions/BaseRewriteManifestsSparkAction.java
copy to spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/actions/BaseRewriteManifestsSparkAction.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/actions/BaseSnapshotUpdateSparkAction.java b/spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/actions/BaseSnapshotUpdateSparkAction.java
similarity index 100%
copy from spark/src/main/java/org/apache/iceberg/spark/actions/BaseSnapshotUpdateSparkAction.java
copy to spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/actions/BaseSnapshotUpdateSparkAction.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/actions/BaseSparkAction.java b/spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/actions/BaseSparkAction.java
similarity index 100%
copy from spark/src/main/java/org/apache/iceberg/spark/actions/BaseSparkAction.java
copy to spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/actions/BaseSparkAction.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/actions/BaseSparkActions.java b/spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/actions/BaseSparkActions.java
similarity index 100%
copy from spark/src/main/java/org/apache/iceberg/spark/actions/BaseSparkActions.java
copy to spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/actions/BaseSparkActions.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/data/AvroWithSparkSchemaVisitor.java b/spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/data/AvroWithSparkSchemaVisitor.java
similarity index 100%
copy from spark/src/main/java/org/apache/iceberg/spark/data/AvroWithSparkSchemaVisitor.java
copy to spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/data/AvroWithSparkSchemaVisitor.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/data/ParquetWithSparkSchemaVisitor.java b/spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/data/ParquetWithSparkSchemaVisitor.java
similarity index 100%
copy from spark/src/main/java/org/apache/iceberg/spark/data/ParquetWithSparkSchemaVisitor.java
copy to spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/data/ParquetWithSparkSchemaVisitor.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/data/SparkAvroReader.java b/spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/data/SparkAvroReader.java
similarity index 100%
copy from spark/src/main/java/org/apache/iceberg/spark/data/SparkAvroReader.java
copy to spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/data/SparkAvroReader.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/data/SparkAvroWriter.java b/spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/data/SparkAvroWriter.java
similarity index 100%
copy from spark/src/main/java/org/apache/iceberg/spark/data/SparkAvroWriter.java
copy to spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/data/SparkAvroWriter.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/data/SparkOrcReader.java b/spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/data/SparkOrcReader.java
similarity index 100%
copy from spark/src/main/java/org/apache/iceberg/spark/data/SparkOrcReader.java
copy to spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/data/SparkOrcReader.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/data/SparkOrcValueReaders.java b/spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/data/SparkOrcValueReaders.java
similarity index 100%
copy from spark/src/main/java/org/apache/iceberg/spark/data/SparkOrcValueReaders.java
copy to spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/data/SparkOrcValueReaders.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/data/SparkOrcValueWriters.java b/spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/data/SparkOrcValueWriters.java
similarity index 100%
copy from spark/src/main/java/org/apache/iceberg/spark/data/SparkOrcValueWriters.java
copy to spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/data/SparkOrcValueWriters.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/data/SparkOrcWriter.java b/spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/data/SparkOrcWriter.java
similarity index 100%
copy from spark/src/main/java/org/apache/iceberg/spark/data/SparkOrcWriter.java
copy to spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/data/SparkOrcWriter.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/data/SparkParquetReaders.java b/spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/data/SparkParquetReaders.java
similarity index 100%
copy from spark/src/main/java/org/apache/iceberg/spark/data/SparkParquetReaders.java
copy to spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/data/SparkParquetReaders.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/data/SparkParquetWriters.java b/spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/data/SparkParquetWriters.java
similarity index 100%
copy from spark/src/main/java/org/apache/iceberg/spark/data/SparkParquetWriters.java
copy to spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/data/SparkParquetWriters.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/data/SparkValueReaders.java b/spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/data/SparkValueReaders.java
similarity index 100%
copy from spark/src/main/java/org/apache/iceberg/spark/data/SparkValueReaders.java
copy to spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/data/SparkValueReaders.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/data/SparkValueWriters.java b/spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/data/SparkValueWriters.java
similarity index 100%
copy from spark/src/main/java/org/apache/iceberg/spark/data/SparkValueWriters.java
copy to spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/data/SparkValueWriters.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/data/vectorized/ArrowVectorAccessorFactory.java b/spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/data/vectorized/ArrowVectorAccessorFactory.java
similarity index 100%
copy from spark/src/main/java/org/apache/iceberg/spark/data/vectorized/ArrowVectorAccessorFactory.java
copy to spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/data/vectorized/ArrowVectorAccessorFactory.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/data/vectorized/ArrowVectorAccessors.java b/spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/data/vectorized/ArrowVectorAccessors.java
similarity index 100%
copy from spark/src/main/java/org/apache/iceberg/spark/data/vectorized/ArrowVectorAccessors.java
copy to spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/data/vectorized/ArrowVectorAccessors.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/data/vectorized/ColumnarBatchReader.java b/spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/data/vectorized/ColumnarBatchReader.java
similarity index 100%
copy from spark/src/main/java/org/apache/iceberg/spark/data/vectorized/ColumnarBatchReader.java
copy to spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/data/vectorized/ColumnarBatchReader.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/data/vectorized/ConstantColumnVector.java b/spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/data/vectorized/ConstantColumnVector.java
similarity index 100%
copy from spark/src/main/java/org/apache/iceberg/spark/data/vectorized/ConstantColumnVector.java
copy to spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/data/vectorized/ConstantColumnVector.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/data/vectorized/IcebergArrowColumnVector.java b/spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/data/vectorized/IcebergArrowColumnVector.java
similarity index 100%
copy from spark/src/main/java/org/apache/iceberg/spark/data/vectorized/IcebergArrowColumnVector.java
copy to spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/data/vectorized/IcebergArrowColumnVector.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/data/vectorized/RowPositionColumnVector.java b/spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/data/vectorized/RowPositionColumnVector.java
similarity index 100%
copy from spark/src/main/java/org/apache/iceberg/spark/data/vectorized/RowPositionColumnVector.java
copy to spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/data/vectorized/RowPositionColumnVector.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/data/vectorized/VectorizedSparkOrcReaders.java b/spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/data/vectorized/VectorizedSparkOrcReaders.java
similarity index 100%
copy from spark/src/main/java/org/apache/iceberg/spark/data/vectorized/VectorizedSparkOrcReaders.java
copy to spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/data/vectorized/VectorizedSparkOrcReaders.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/data/vectorized/VectorizedSparkParquetReaders.java b/spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/data/vectorized/VectorizedSparkParquetReaders.java
similarity index 100%
copy from spark/src/main/java/org/apache/iceberg/spark/data/vectorized/VectorizedSparkParquetReaders.java
copy to spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/data/vectorized/VectorizedSparkParquetReaders.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/source/BaseDataReader.java b/spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/source/BaseDataReader.java
similarity index 100%
copy from spark/src/main/java/org/apache/iceberg/spark/source/BaseDataReader.java
copy to spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/source/BaseDataReader.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/source/BatchDataReader.java b/spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/source/BatchDataReader.java
similarity index 100%
copy from spark/src/main/java/org/apache/iceberg/spark/source/BatchDataReader.java
copy to spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/source/BatchDataReader.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/source/EqualityDeleteRowReader.java b/spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/source/EqualityDeleteRowReader.java
similarity index 100%
copy from spark/src/main/java/org/apache/iceberg/spark/source/EqualityDeleteRowReader.java
copy to spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/source/EqualityDeleteRowReader.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/source/InternalRowWrapper.java b/spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/source/InternalRowWrapper.java
similarity index 100%
copy from spark/src/main/java/org/apache/iceberg/spark/source/InternalRowWrapper.java
copy to spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/source/InternalRowWrapper.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/source/RowDataReader.java b/spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/source/RowDataReader.java
similarity index 100%
copy from spark/src/main/java/org/apache/iceberg/spark/source/RowDataReader.java
copy to spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/source/RowDataReader.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/source/RowDataRewriter.java b/spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/source/RowDataRewriter.java
similarity index 100%
copy from spark/src/main/java/org/apache/iceberg/spark/source/RowDataRewriter.java
copy to spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/source/RowDataRewriter.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/source/SparkAppenderFactory.java b/spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/source/SparkAppenderFactory.java
similarity index 100%
copy from spark/src/main/java/org/apache/iceberg/spark/source/SparkAppenderFactory.java
copy to spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/source/SparkAppenderFactory.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/source/SparkFileWriterFactory.java b/spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/source/SparkFileWriterFactory.java
similarity index 100%
copy from spark/src/main/java/org/apache/iceberg/spark/source/SparkFileWriterFactory.java
copy to spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/source/SparkFileWriterFactory.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/source/SparkPartitionedFanoutWriter.java b/spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/source/SparkPartitionedFanoutWriter.java
similarity index 100%
copy from spark/src/main/java/org/apache/iceberg/spark/source/SparkPartitionedFanoutWriter.java
copy to spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/source/SparkPartitionedFanoutWriter.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/source/SparkPartitionedWriter.java b/spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/source/SparkPartitionedWriter.java
similarity index 100%
copy from spark/src/main/java/org/apache/iceberg/spark/source/SparkPartitionedWriter.java
copy to spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/source/SparkPartitionedWriter.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/source/StructInternalRow.java b/spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/source/StructInternalRow.java
similarity index 100%
copy from spark/src/main/java/org/apache/iceberg/spark/source/StructInternalRow.java
copy to spark/v2.4/spark2/src/main/java/org/apache/iceberg/spark/source/StructInternalRow.java
diff --git a/spark/src/test/java/org/apache/iceberg/KryoHelpers.java b/spark/v2.4/spark2/src/test/java/org/apache/iceberg/KryoHelpers.java
similarity index 100%
copy from spark/src/test/java/org/apache/iceberg/KryoHelpers.java
copy to spark/v2.4/spark2/src/test/java/org/apache/iceberg/KryoHelpers.java
diff --git a/spark/src/test/java/org/apache/iceberg/TaskCheckHelper.java b/spark/v2.4/spark2/src/test/java/org/apache/iceberg/TaskCheckHelper.java
similarity index 100%
copy from spark/src/test/java/org/apache/iceberg/TaskCheckHelper.java
copy to spark/v2.4/spark2/src/test/java/org/apache/iceberg/TaskCheckHelper.java
diff --git a/spark/src/test/java/org/apache/iceberg/TestDataFileSerialization.java b/spark/v2.4/spark2/src/test/java/org/apache/iceberg/TestDataFileSerialization.java
similarity index 100%
copy from spark/src/test/java/org/apache/iceberg/TestDataFileSerialization.java
copy to spark/v2.4/spark2/src/test/java/org/apache/iceberg/TestDataFileSerialization.java
diff --git a/spark/src/test/java/org/apache/iceberg/TestFileIOSerialization.java b/spark/v2.4/spark2/src/test/java/org/apache/iceberg/TestFileIOSerialization.java
similarity index 100%
copy from spark/src/test/java/org/apache/iceberg/TestFileIOSerialization.java
copy to spark/v2.4/spark2/src/test/java/org/apache/iceberg/TestFileIOSerialization.java
diff --git a/spark/src/test/java/org/apache/iceberg/TestManifestFileSerialization.java b/spark/v2.4/spark2/src/test/java/org/apache/iceberg/TestManifestFileSerialization.java
similarity index 100%
copy from spark/src/test/java/org/apache/iceberg/TestManifestFileSerialization.java
copy to spark/v2.4/spark2/src/test/java/org/apache/iceberg/TestManifestFileSerialization.java
diff --git a/spark/src/test/java/org/apache/iceberg/TestScanTaskSerialization.java b/spark/v2.4/spark2/src/test/java/org/apache/iceberg/TestScanTaskSerialization.java
similarity index 100%
copy from spark/src/test/java/org/apache/iceberg/TestScanTaskSerialization.java
copy to spark/v2.4/spark2/src/test/java/org/apache/iceberg/TestScanTaskSerialization.java
diff --git a/spark/src/test/java/org/apache/iceberg/TestTableSerialization.java b/spark/v2.4/spark2/src/test/java/org/apache/iceberg/TestTableSerialization.java
similarity index 100%
copy from spark/src/test/java/org/apache/iceberg/TestTableSerialization.java
copy to spark/v2.4/spark2/src/test/java/org/apache/iceberg/TestTableSerialization.java
diff --git a/spark/src/test/java/org/apache/iceberg/actions/TestDeleteReachableFilesAction.java b/spark/v2.4/spark2/src/test/java/org/apache/iceberg/actions/TestDeleteReachableFilesAction.java
similarity index 100%
copy from spark/src/test/java/org/apache/iceberg/actions/TestDeleteReachableFilesAction.java
copy to spark/v2.4/spark2/src/test/java/org/apache/iceberg/actions/TestDeleteReachableFilesAction.java
diff --git a/spark/src/test/java/org/apache/iceberg/actions/TestExpireSnapshotsAction.java b/spark/v2.4/spark2/src/test/java/org/apache/iceberg/actions/TestExpireSnapshotsAction.java
similarity index 100%
copy from spark/src/test/java/org/apache/iceberg/actions/TestExpireSnapshotsAction.java
copy to spark/v2.4/spark2/src/test/java/org/apache/iceberg/actions/TestExpireSnapshotsAction.java
diff --git a/spark/src/test/java/org/apache/iceberg/actions/TestRemoveOrphanFilesAction.java b/spark/v2.4/spark2/src/test/java/org/apache/iceberg/actions/TestRemoveOrphanFilesAction.java
similarity index 100%
copy from spark/src/test/java/org/apache/iceberg/actions/TestRemoveOrphanFilesAction.java
copy to spark/v2.4/spark2/src/test/java/org/apache/iceberg/actions/TestRemoveOrphanFilesAction.java
diff --git a/spark/src/test/java/org/apache/iceberg/actions/TestRewriteDataFilesAction.java b/spark/v2.4/spark2/src/test/java/org/apache/iceberg/actions/TestRewriteDataFilesAction.java
similarity index 100%
copy from spark/src/test/java/org/apache/iceberg/actions/TestRewriteDataFilesAction.java
copy to spark/v2.4/spark2/src/test/java/org/apache/iceberg/actions/TestRewriteDataFilesAction.java
diff --git a/spark/src/test/java/org/apache/iceberg/actions/TestRewriteManifestsAction.java b/spark/v2.4/spark2/src/test/java/org/apache/iceberg/actions/TestRewriteManifestsAction.java
similarity index 100%
copy from spark/src/test/java/org/apache/iceberg/actions/TestRewriteManifestsAction.java
copy to spark/v2.4/spark2/src/test/java/org/apache/iceberg/actions/TestRewriteManifestsAction.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/SparkTestBase.java b/spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/SparkTestBase.java
similarity index 100%
copy from spark/src/test/java/org/apache/iceberg/spark/SparkTestBase.java
copy to spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/SparkTestBase.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/TestSparkSchemaUtil.java b/spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/TestSparkSchemaUtil.java
similarity index 100%
copy from spark/src/test/java/org/apache/iceberg/spark/TestSparkSchemaUtil.java
copy to spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/TestSparkSchemaUtil.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/actions/TestNewRewriteDataFilesAction.java b/spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/actions/TestNewRewriteDataFilesAction.java
similarity index 100%
copy from spark/src/test/java/org/apache/iceberg/spark/actions/TestNewRewriteDataFilesAction.java
copy to spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/actions/TestNewRewriteDataFilesAction.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/data/AvroDataTest.java b/spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/data/AvroDataTest.java
similarity index 100%
copy from spark/src/test/java/org/apache/iceberg/spark/data/AvroDataTest.java
copy to spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/data/AvroDataTest.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/data/GenericsHelpers.java b/spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/data/GenericsHelpers.java
similarity index 100%
copy from spark/src/test/java/org/apache/iceberg/spark/data/GenericsHelpers.java
copy to spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/data/GenericsHelpers.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/data/RandomData.java b/spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/data/RandomData.java
similarity index 100%
copy from spark/src/test/java/org/apache/iceberg/spark/data/RandomData.java
copy to spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/data/RandomData.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/data/TestHelpers.java b/spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/data/TestHelpers.java
similarity index 100%
copy from spark/src/test/java/org/apache/iceberg/spark/data/TestHelpers.java
copy to spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/data/TestHelpers.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/data/TestOrcWrite.java b/spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/data/TestOrcWrite.java
similarity index 100%
copy from spark/src/test/java/org/apache/iceberg/spark/data/TestOrcWrite.java
copy to spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/data/TestOrcWrite.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/data/TestParquetAvroReader.java b/spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/data/TestParquetAvroReader.java
similarity index 100%
copy from spark/src/test/java/org/apache/iceberg/spark/data/TestParquetAvroReader.java
copy to spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/data/TestParquetAvroReader.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/data/TestParquetAvroWriter.java b/spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/data/TestParquetAvroWriter.java
similarity index 100%
copy from spark/src/test/java/org/apache/iceberg/spark/data/TestParquetAvroWriter.java
copy to spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/data/TestParquetAvroWriter.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/data/TestSparkAvroEnums.java b/spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/data/TestSparkAvroEnums.java
similarity index 100%
copy from spark/src/test/java/org/apache/iceberg/spark/data/TestSparkAvroEnums.java
copy to spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/data/TestSparkAvroEnums.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/data/TestSparkAvroReader.java b/spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/data/TestSparkAvroReader.java
similarity index 100%
copy from spark/src/test/java/org/apache/iceberg/spark/data/TestSparkAvroReader.java
copy to spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/data/TestSparkAvroReader.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/data/TestSparkDateTimes.java b/spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/data/TestSparkDateTimes.java
similarity index 100%
copy from spark/src/test/java/org/apache/iceberg/spark/data/TestSparkDateTimes.java
copy to spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/data/TestSparkDateTimes.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/data/TestSparkOrcReadMetadataColumns.java b/spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/data/TestSparkOrcReadMetadataColumns.java
similarity index 100%
copy from spark/src/test/java/org/apache/iceberg/spark/data/TestSparkOrcReadMetadataColumns.java
copy to spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/data/TestSparkOrcReadMetadataColumns.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/data/TestSparkOrcReader.java b/spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/data/TestSparkOrcReader.java
similarity index 100%
copy from spark/src/test/java/org/apache/iceberg/spark/data/TestSparkOrcReader.java
copy to spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/data/TestSparkOrcReader.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/data/TestSparkParquetReadMetadataColumns.java b/spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/data/TestSparkParquetReadMetadataColumns.java
similarity index 100%
copy from spark/src/test/java/org/apache/iceberg/spark/data/TestSparkParquetReadMetadataColumns.java
copy to spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/data/TestSparkParquetReadMetadataColumns.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/data/TestSparkParquetReader.java b/spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/data/TestSparkParquetReader.java
similarity index 100%
copy from spark/src/test/java/org/apache/iceberg/spark/data/TestSparkParquetReader.java
copy to spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/data/TestSparkParquetReader.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/data/TestSparkParquetWriter.java b/spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/data/TestSparkParquetWriter.java
similarity index 100%
copy from spark/src/test/java/org/apache/iceberg/spark/data/TestSparkParquetWriter.java
copy to spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/data/TestSparkParquetWriter.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/data/TestSparkRecordOrcReaderWriter.java b/spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/data/TestSparkRecordOrcReaderWriter.java
similarity index 100%
copy from spark/src/test/java/org/apache/iceberg/spark/data/TestSparkRecordOrcReaderWriter.java
copy to spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/data/TestSparkRecordOrcReaderWriter.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/data/parquet/vectorized/TestParquetDictionaryEncodedVectorizedReads.java b/spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/data/parquet/vectorized/TestParquetDictionaryEncodedVectorizedReads.java
similarity index 100%
copy from spark/src/test/java/org/apache/iceberg/spark/data/parquet/vectorized/TestParquetDictionaryEncodedVectorizedReads.java
copy to spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/data/parquet/vectorized/TestParquetDictionaryEncodedVectorizedReads.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/data/parquet/vectorized/TestParquetDictionaryFallbackToPlainEncodingVectorizedReads.java b/spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/data/parquet/vectorized/TestParquetDictionaryFallbackToPlainEncodingVectorizedReads.java
similarity index 100%
copy from spark/src/test/java/org/apache/iceberg/spark/data/parquet/vectorized/TestParquetDictionaryFallbackToPlainEncodingVectorizedReads.java
copy to spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/data/parquet/vectorized/TestParquetDictionaryFallbackToPlainEncodingVectorizedReads.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/data/parquet/vectorized/TestParquetVectorizedReads.java b/spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/data/parquet/vectorized/TestParquetVectorizedReads.java
similarity index 100%
copy from spark/src/test/java/org/apache/iceberg/spark/data/parquet/vectorized/TestParquetVectorizedReads.java
copy to spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/data/parquet/vectorized/TestParquetVectorizedReads.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/source/LogMessage.java b/spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/source/LogMessage.java
similarity index 100%
copy from spark/src/test/java/org/apache/iceberg/spark/source/LogMessage.java
copy to spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/source/LogMessage.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/source/SimpleRecord.java b/spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/source/SimpleRecord.java
similarity index 100%
copy from spark/src/test/java/org/apache/iceberg/spark/source/SimpleRecord.java
copy to spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/source/SimpleRecord.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/source/TestAvroScan.java b/spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/source/TestAvroScan.java
similarity index 100%
copy from spark/src/test/java/org/apache/iceberg/spark/source/TestAvroScan.java
copy to spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/source/TestAvroScan.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/source/TestDataFrameWrites.java b/spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/source/TestDataFrameWrites.java
similarity index 100%
copy from spark/src/test/java/org/apache/iceberg/spark/source/TestDataFrameWrites.java
copy to spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/source/TestDataFrameWrites.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/source/TestDataSourceOptions.java b/spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/source/TestDataSourceOptions.java
similarity index 100%
copy from spark/src/test/java/org/apache/iceberg/spark/source/TestDataSourceOptions.java
copy to spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/source/TestDataSourceOptions.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/source/TestForwardCompatibility.java b/spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/source/TestForwardCompatibility.java
similarity index 100%
copy from spark/src/test/java/org/apache/iceberg/spark/source/TestForwardCompatibility.java
copy to spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/source/TestForwardCompatibility.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/source/TestIcebergSourceHadoopTables.java b/spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/source/TestIcebergSourceHadoopTables.java
similarity index 100%
copy from spark/src/test/java/org/apache/iceberg/spark/source/TestIcebergSourceHadoopTables.java
copy to spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/source/TestIcebergSourceHadoopTables.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/source/TestIcebergSourceHiveTables.java b/spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/source/TestIcebergSourceHiveTables.java
similarity index 100%
copy from spark/src/test/java/org/apache/iceberg/spark/source/TestIcebergSourceHiveTables.java
copy to spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/source/TestIcebergSourceHiveTables.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/source/TestIcebergSourceTablesBase.java b/spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/source/TestIcebergSourceTablesBase.java
similarity index 100%
copy from spark/src/test/java/org/apache/iceberg/spark/source/TestIcebergSourceTablesBase.java
copy to spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/source/TestIcebergSourceTablesBase.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/source/TestIcebergSpark.java b/spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/source/TestIcebergSpark.java
similarity index 100%
copy from spark/src/test/java/org/apache/iceberg/spark/source/TestIcebergSpark.java
copy to spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/source/TestIcebergSpark.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/source/TestIdentityPartitionData.java b/spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/source/TestIdentityPartitionData.java
similarity index 100%
copy from spark/src/test/java/org/apache/iceberg/spark/source/TestIdentityPartitionData.java
copy to spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/source/TestIdentityPartitionData.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/source/TestInternalRowWrapper.java b/spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/source/TestInternalRowWrapper.java
similarity index 100%
copy from spark/src/test/java/org/apache/iceberg/spark/source/TestInternalRowWrapper.java
copy to spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/source/TestInternalRowWrapper.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/source/TestParquetScan.java b/spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/source/TestParquetScan.java
similarity index 100%
copy from spark/src/test/java/org/apache/iceberg/spark/source/TestParquetScan.java
copy to spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/source/TestParquetScan.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/source/TestPartitionPruning.java b/spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/source/TestPartitionPruning.java
similarity index 100%
copy from spark/src/test/java/org/apache/iceberg/spark/source/TestPartitionPruning.java
copy to spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/source/TestPartitionPruning.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/source/TestPartitionValues.java b/spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/source/TestPartitionValues.java
similarity index 100%
copy from spark/src/test/java/org/apache/iceberg/spark/source/TestPartitionValues.java
copy to spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/source/TestPartitionValues.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/source/TestReadProjection.java b/spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/source/TestReadProjection.java
similarity index 100%
copy from spark/src/test/java/org/apache/iceberg/spark/source/TestReadProjection.java
copy to spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/source/TestReadProjection.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/source/TestSnapshotSelection.java b/spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/source/TestSnapshotSelection.java
similarity index 100%
copy from spark/src/test/java/org/apache/iceberg/spark/source/TestSnapshotSelection.java
copy to spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/source/TestSnapshotSelection.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/source/TestSparkAppenderFactory.java b/spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/source/TestSparkAppenderFactory.java
similarity index 100%
copy from spark/src/test/java/org/apache/iceberg/spark/source/TestSparkAppenderFactory.java
copy to spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/source/TestSparkAppenderFactory.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/source/TestSparkBaseDataReader.java b/spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/source/TestSparkBaseDataReader.java
similarity index 100%
copy from spark/src/test/java/org/apache/iceberg/spark/source/TestSparkBaseDataReader.java
copy to spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/source/TestSparkBaseDataReader.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/source/TestSparkDataFile.java b/spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/source/TestSparkDataFile.java
similarity index 100%
copy from spark/src/test/java/org/apache/iceberg/spark/source/TestSparkDataFile.java
copy to spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/source/TestSparkDataFile.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/source/TestSparkDataWrite.java b/spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/source/TestSparkDataWrite.java
similarity index 100%
copy from spark/src/test/java/org/apache/iceberg/spark/source/TestSparkDataWrite.java
copy to spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/source/TestSparkDataWrite.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/source/TestSparkFileWriterFactory.java b/spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/source/TestSparkFileWriterFactory.java
similarity index 100%
copy from spark/src/test/java/org/apache/iceberg/spark/source/TestSparkFileWriterFactory.java
copy to spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/source/TestSparkFileWriterFactory.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/source/TestSparkMergingMetrics.java b/spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/source/TestSparkMergingMetrics.java
similarity index 100%
copy from spark/src/test/java/org/apache/iceberg/spark/source/TestSparkMergingMetrics.java
copy to spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/source/TestSparkMergingMetrics.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/source/TestSparkPartitioningWriters.java b/spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/source/TestSparkPartitioningWriters.java
similarity index 100%
copy from spark/src/test/java/org/apache/iceberg/spark/source/TestSparkPartitioningWriters.java
copy to spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/source/TestSparkPartitioningWriters.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/source/TestSparkPositionDeltaWriters.java b/spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/source/TestSparkPositionDeltaWriters.java
similarity index 100%
copy from spark/src/test/java/org/apache/iceberg/spark/source/TestSparkPositionDeltaWriters.java
copy to spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/source/TestSparkPositionDeltaWriters.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/source/TestSparkReadProjection.java b/spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/source/TestSparkReadProjection.java
similarity index 100%
copy from spark/src/test/java/org/apache/iceberg/spark/source/TestSparkReadProjection.java
copy to spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/source/TestSparkReadProjection.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/source/TestSparkReaderDeletes.java b/spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/source/TestSparkReaderDeletes.java
similarity index 100%
copy from spark/src/test/java/org/apache/iceberg/spark/source/TestSparkReaderDeletes.java
copy to spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/source/TestSparkReaderDeletes.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/source/TestSparkRollingFileWriters.java b/spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/source/TestSparkRollingFileWriters.java
similarity index 100%
copy from spark/src/test/java/org/apache/iceberg/spark/source/TestSparkRollingFileWriters.java
copy to spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/source/TestSparkRollingFileWriters.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/source/TestSparkSchema.java b/spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/source/TestSparkSchema.java
similarity index 100%
copy from spark/src/test/java/org/apache/iceberg/spark/source/TestSparkSchema.java
copy to spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/source/TestSparkSchema.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/source/TestSparkWriterMetrics.java b/spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/source/TestSparkWriterMetrics.java
similarity index 100%
copy from spark/src/test/java/org/apache/iceberg/spark/source/TestSparkWriterMetrics.java
copy to spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/source/TestSparkWriterMetrics.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/source/TestStructuredStreaming.java b/spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/source/TestStructuredStreaming.java
similarity index 100%
copy from spark/src/test/java/org/apache/iceberg/spark/source/TestStructuredStreaming.java
copy to spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/source/TestStructuredStreaming.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/source/TestTables.java b/spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/source/TestTables.java
similarity index 100%
copy from spark/src/test/java/org/apache/iceberg/spark/source/TestTables.java
copy to spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/source/TestTables.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/source/TestTimestampWithoutZone.java b/spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/source/TestTimestampWithoutZone.java
similarity index 100%
copy from spark/src/test/java/org/apache/iceberg/spark/source/TestTimestampWithoutZone.java
copy to spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/source/TestTimestampWithoutZone.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/source/TestWriteMetricsConfig.java b/spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/source/TestWriteMetricsConfig.java
similarity index 100%
copy from spark/src/test/java/org/apache/iceberg/spark/source/TestWriteMetricsConfig.java
copy to spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/source/TestWriteMetricsConfig.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/source/ThreeColumnRecord.java b/spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/source/ThreeColumnRecord.java
similarity index 100%
copy from spark/src/test/java/org/apache/iceberg/spark/source/ThreeColumnRecord.java
copy to spark/v2.4/spark2/src/test/java/org/apache/iceberg/spark/source/ThreeColumnRecord.java
diff --git a/spark/v3.0/build.gradle b/spark/v3.0/build.gradle
index 43dc13d..ef9a99b 100644
--- a/spark/v3.0/build.gradle
+++ b/spark/v3.0/build.gradle
@@ -37,27 +37,34 @@ project(':iceberg-spark:iceberg-spark3') {
implementation project(':iceberg-parquet')
implementation project(':iceberg-arrow')
implementation project(':iceberg-hive-metastore')
- implementation project(':iceberg-spark')
+ compileOnly "com.google.errorprone:error_prone_annotations"
compileOnly "org.apache.avro:avro"
compileOnly("org.apache.spark:spark-hive_2.12:${project.ext.Spark30Version}") {
exclude group: 'org.apache.avro', module: 'avro'
exclude group: 'org.apache.arrow'
}
+ implementation("org.apache.orc:orc-core::nohive") {
+ exclude group: 'org.apache.hadoop'
+ exclude group: 'commons-lang'
+ // These artifacts are shaded and included in the orc-core fat jar
+ exclude group: 'com.google.protobuf', module: 'protobuf-java'
+ exclude group: 'org.apache.hive', module: 'hive-storage-api'
+ }
+
implementation("org.apache.arrow:arrow-vector") {
exclude group: 'io.netty', module: 'netty-buffer'
exclude group: 'io.netty', module: 'netty-common'
exclude group: 'com.google.code.findbugs', module: 'jsr305'
}
- testImplementation project(path: ':iceberg-spark', configuration: 'testArtifacts')
-
testImplementation("org.apache.hadoop:hadoop-minicluster") {
exclude group: 'org.apache.avro', module: 'avro'
}
testImplementation project(path: ':iceberg-hive-metastore', configuration: 'testArtifacts')
testImplementation project(path: ':iceberg-api', configuration: 'testArtifacts')
+ testImplementation project(path: ':iceberg-core', configuration: 'testArtifacts')
testImplementation project(path: ':iceberg-data', configuration: 'testArtifacts')
testImplementation "org.xerial:sqlite-jdbc"
}
diff --git a/spark/src/jmh/java/org/apache/iceberg/spark/SparkBenchmarkUtil.java b/spark/v3.0/spark3/src/jmh/java/org/apache/iceberg/spark/SparkBenchmarkUtil.java
similarity index 100%
rename from spark/src/jmh/java/org/apache/iceberg/spark/SparkBenchmarkUtil.java
rename to spark/v3.0/spark3/src/jmh/java/org/apache/iceberg/spark/SparkBenchmarkUtil.java
diff --git a/spark/src/jmh/java/org/apache/iceberg/spark/data/parquet/SparkParquetReadersFlatDataBenchmark.java b/spark/v3.0/spark3/src/jmh/java/org/apache/iceberg/spark/data/parquet/SparkParquetReadersFlatDataBenchmark.java
similarity index 100%
rename from spark/src/jmh/java/org/apache/iceberg/spark/data/parquet/SparkParquetReadersFlatDataBenchmark.java
rename to spark/v3.0/spark3/src/jmh/java/org/apache/iceberg/spark/data/parquet/SparkParquetReadersFlatDataBenchmark.java
diff --git a/spark/src/jmh/java/org/apache/iceberg/spark/data/parquet/SparkParquetReadersNestedDataBenchmark.java b/spark/v3.0/spark3/src/jmh/java/org/apache/iceberg/spark/data/parquet/SparkParquetReadersNestedDataBenchmark.java
similarity index 100%
rename from spark/src/jmh/java/org/apache/iceberg/spark/data/parquet/SparkParquetReadersNestedDataBenchmark.java
rename to spark/v3.0/spark3/src/jmh/java/org/apache/iceberg/spark/data/parquet/SparkParquetReadersNestedDataBenchmark.java
diff --git a/spark/src/jmh/java/org/apache/iceberg/spark/data/parquet/SparkParquetWritersFlatDataBenchmark.java b/spark/v3.0/spark3/src/jmh/java/org/apache/iceberg/spark/data/parquet/SparkParquetWritersFlatDataBenchmark.java
similarity index 100%
rename from spark/src/jmh/java/org/apache/iceberg/spark/data/parquet/SparkParquetWritersFlatDataBenchmark.java
rename to spark/v3.0/spark3/src/jmh/java/org/apache/iceberg/spark/data/parquet/SparkParquetWritersFlatDataBenchmark.java
diff --git a/spark/src/jmh/java/org/apache/iceberg/spark/data/parquet/SparkParquetWritersNestedDataBenchmark.java b/spark/v3.0/spark3/src/jmh/java/org/apache/iceberg/spark/data/parquet/SparkParquetWritersNestedDataBenchmark.java
similarity index 100%
rename from spark/src/jmh/java/org/apache/iceberg/spark/data/parquet/SparkParquetWritersNestedDataBenchmark.java
rename to spark/v3.0/spark3/src/jmh/java/org/apache/iceberg/spark/data/parquet/SparkParquetWritersNestedDataBenchmark.java
diff --git a/spark/src/jmh/java/org/apache/iceberg/spark/source/Action.java b/spark/v3.0/spark3/src/jmh/java/org/apache/iceberg/spark/source/Action.java
similarity index 100%
rename from spark/src/jmh/java/org/apache/iceberg/spark/source/Action.java
rename to spark/v3.0/spark3/src/jmh/java/org/apache/iceberg/spark/source/Action.java
diff --git a/spark/src/jmh/java/org/apache/iceberg/spark/source/IcebergSourceBenchmark.java b/spark/v3.0/spark3/src/jmh/java/org/apache/iceberg/spark/source/IcebergSourceBenchmark.java
similarity index 100%
rename from spark/src/jmh/java/org/apache/iceberg/spark/source/IcebergSourceBenchmark.java
rename to spark/v3.0/spark3/src/jmh/java/org/apache/iceberg/spark/source/IcebergSourceBenchmark.java
diff --git a/spark/src/jmh/java/org/apache/iceberg/spark/source/IcebergSourceFlatDataBenchmark.java b/spark/v3.0/spark3/src/jmh/java/org/apache/iceberg/spark/source/IcebergSourceFlatDataBenchmark.java
similarity index 100%
rename from spark/src/jmh/java/org/apache/iceberg/spark/source/IcebergSourceFlatDataBenchmark.java
rename to spark/v3.0/spark3/src/jmh/java/org/apache/iceberg/spark/source/IcebergSourceFlatDataBenchmark.java
diff --git a/spark/src/jmh/java/org/apache/iceberg/spark/source/IcebergSourceNestedDataBenchmark.java b/spark/v3.0/spark3/src/jmh/java/org/apache/iceberg/spark/source/IcebergSourceNestedDataBenchmark.java
similarity index 100%
rename from spark/src/jmh/java/org/apache/iceberg/spark/source/IcebergSourceNestedDataBenchmark.java
rename to spark/v3.0/spark3/src/jmh/java/org/apache/iceberg/spark/source/IcebergSourceNestedDataBenchmark.java
diff --git a/spark/src/jmh/java/org/apache/iceberg/spark/source/IcebergSourceNestedListDataBenchmark.java b/spark/v3.0/spark3/src/jmh/java/org/apache/iceberg/spark/source/IcebergSourceNestedListDataBenchmark.java
similarity index 100%
rename from spark/src/jmh/java/org/apache/iceberg/spark/source/IcebergSourceNestedListDataBenchmark.java
rename to spark/v3.0/spark3/src/jmh/java/org/apache/iceberg/spark/source/IcebergSourceNestedListDataBenchmark.java
diff --git a/spark/src/jmh/java/org/apache/iceberg/spark/source/WritersBenchmark.java b/spark/v3.0/spark3/src/jmh/java/org/apache/iceberg/spark/source/WritersBenchmark.java
similarity index 100%
rename from spark/src/jmh/java/org/apache/iceberg/spark/source/WritersBenchmark.java
rename to spark/v3.0/spark3/src/jmh/java/org/apache/iceberg/spark/source/WritersBenchmark.java
diff --git a/spark/src/jmh/java/org/apache/iceberg/spark/source/avro/AvroWritersBenchmark.java b/spark/v3.0/spark3/src/jmh/java/org/apache/iceberg/spark/source/avro/AvroWritersBenchmark.java
similarity index 100%
rename from spark/src/jmh/java/org/apache/iceberg/spark/source/avro/AvroWritersBenchmark.java
rename to spark/v3.0/spark3/src/jmh/java/org/apache/iceberg/spark/source/avro/AvroWritersBenchmark.java
diff --git a/spark/src/jmh/java/org/apache/iceberg/spark/source/avro/IcebergSourceFlatAvroDataReadBenchmark.java b/spark/v3.0/spark3/src/jmh/java/org/apache/iceberg/spark/source/avro/IcebergSourceFlatAvroDataReadBenchmark.java
similarity index 100%
rename from spark/src/jmh/java/org/apache/iceberg/spark/source/avro/IcebergSourceFlatAvroDataReadBenchmark.java
rename to spark/v3.0/spark3/src/jmh/java/org/apache/iceberg/spark/source/avro/IcebergSourceFlatAvroDataReadBenchmark.java
diff --git a/spark/src/jmh/java/org/apache/iceberg/spark/source/avro/IcebergSourceNestedAvroDataReadBenchmark.java b/spark/v3.0/spark3/src/jmh/java/org/apache/iceberg/spark/source/avro/IcebergSourceNestedAvroDataReadBenchmark.java
similarity index 100%
rename from spark/src/jmh/java/org/apache/iceberg/spark/source/avro/IcebergSourceNestedAvroDataReadBenchmark.java
rename to spark/v3.0/spark3/src/jmh/java/org/apache/iceberg/spark/source/avro/IcebergSourceNestedAvroDataReadBenchmark.java
diff --git a/spark/src/jmh/java/org/apache/iceberg/spark/source/orc/IcebergSourceFlatORCDataBenchmark.java b/spark/v3.0/spark3/src/jmh/java/org/apache/iceberg/spark/source/orc/IcebergSourceFlatORCDataBenchmark.java
similarity index 100%
rename from spark/src/jmh/java/org/apache/iceberg/spark/source/orc/IcebergSourceFlatORCDataBenchmark.java
rename to spark/v3.0/spark3/src/jmh/java/org/apache/iceberg/spark/source/orc/IcebergSourceFlatORCDataBenchmark.java
diff --git a/spark/src/jmh/java/org/apache/iceberg/spark/source/orc/IcebergSourceFlatORCDataReadBenchmark.java b/spark/v3.0/spark3/src/jmh/java/org/apache/iceberg/spark/source/orc/IcebergSourceFlatORCDataReadBenchmark.java
similarity index 100%
rename from spark/src/jmh/java/org/apache/iceberg/spark/source/orc/IcebergSourceFlatORCDataReadBenchmark.java
rename to spark/v3.0/spark3/src/jmh/java/org/apache/iceberg/spark/source/orc/IcebergSourceFlatORCDataReadBenchmark.java
diff --git a/spark/src/jmh/java/org/apache/iceberg/spark/source/orc/IcebergSourceNestedListORCDataWriteBenchmark.java b/spark/v3.0/spark3/src/jmh/java/org/apache/iceberg/spark/source/orc/IcebergSourceNestedListORCDataWriteBenchmark.java
similarity index 100%
rename from spark/src/jmh/java/org/apache/iceberg/spark/source/orc/IcebergSourceNestedListORCDataWriteBenchmark.java
rename to spark/v3.0/spark3/src/jmh/java/org/apache/iceberg/spark/source/orc/IcebergSourceNestedListORCDataWriteBenchmark.java
diff --git a/spark/src/jmh/java/org/apache/iceberg/spark/source/orc/IcebergSourceNestedORCDataReadBenchmark.java b/spark/v3.0/spark3/src/jmh/java/org/apache/iceberg/spark/source/orc/IcebergSourceNestedORCDataReadBenchmark.java
similarity index 100%
rename from spark/src/jmh/java/org/apache/iceberg/spark/source/orc/IcebergSourceNestedORCDataReadBenchmark.java
rename to spark/v3.0/spark3/src/jmh/java/org/apache/iceberg/spark/source/orc/IcebergSourceNestedORCDataReadBenchmark.java
diff --git a/spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceFlatParquetDataFilterBenchmark.java b/spark/v3.0/spark3/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceFlatParquetDataFilterBenchmark.java
similarity index 100%
rename from spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceFlatParquetDataFilterBenchmark.java
rename to spark/v3.0/spark3/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceFlatParquetDataFilterBenchmark.java
diff --git a/spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceFlatParquetDataReadBenchmark.java b/spark/v3.0/spark3/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceFlatParquetDataReadBenchmark.java
similarity index 100%
rename from spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceFlatParquetDataReadBenchmark.java
rename to spark/v3.0/spark3/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceFlatParquetDataReadBenchmark.java
diff --git a/spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceFlatParquetDataWriteBenchmark.java b/spark/v3.0/spark3/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceFlatParquetDataWriteBenchmark.java
similarity index 100%
rename from spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceFlatParquetDataWriteBenchmark.java
rename to spark/v3.0/spark3/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceFlatParquetDataWriteBenchmark.java
diff --git a/spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceNestedListParquetDataWriteBenchmark.java b/spark/v3.0/spark3/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceNestedListParquetDataWriteBenchmark.java
similarity index 100%
rename from spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceNestedListParquetDataWriteBenchmark.java
rename to spark/v3.0/spark3/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceNestedListParquetDataWriteBenchmark.java
diff --git a/spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceNestedParquetDataFilterBenchmark.java b/spark/v3.0/spark3/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceNestedParquetDataFilterBenchmark.java
similarity index 100%
rename from spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceNestedParquetDataFilterBenchmark.java
rename to spark/v3.0/spark3/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceNestedParquetDataFilterBenchmark.java
diff --git a/spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceNestedParquetDataReadBenchmark.java b/spark/v3.0/spark3/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceNestedParquetDataReadBenchmark.java
similarity index 100%
rename from spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceNestedParquetDataReadBenchmark.java
rename to spark/v3.0/spark3/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceNestedParquetDataReadBenchmark.java
diff --git a/spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceNestedParquetDataWriteBenchmark.java b/spark/v3.0/spark3/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceNestedParquetDataWriteBenchmark.java
similarity index 100%
rename from spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceNestedParquetDataWriteBenchmark.java
rename to spark/v3.0/spark3/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceNestedParquetDataWriteBenchmark.java
diff --git a/spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/ParquetWritersBenchmark.java b/spark/v3.0/spark3/src/jmh/java/org/apache/iceberg/spark/source/parquet/ParquetWritersBenchmark.java
similarity index 100%
rename from spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/ParquetWritersBenchmark.java
rename to spark/v3.0/spark3/src/jmh/java/org/apache/iceberg/spark/source/parquet/ParquetWritersBenchmark.java
diff --git a/spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/vectorized/VectorizedReadDictionaryEncodedFlatParquetDataBenchmark.java b/spark/v3.0/spark3/src/jmh/java/org/apache/iceberg/spark/source/parquet/vectorized/VectorizedReadDictionaryEncodedFlatParquetDataBenchmark.java
similarity index 100%
rename from spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/vectorized/VectorizedReadDictionaryEncodedFlatParquetDataBenchmark.java
rename to spark/v3.0/spark3/src/jmh/java/org/apache/iceberg/spark/source/parquet/vectorized/VectorizedReadDictionaryEncodedFlatParquetDataBenchmark.java
diff --git a/spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/vectorized/VectorizedReadFlatParquetDataBenchmark.java b/spark/v3.0/spark3/src/jmh/java/org/apache/iceberg/spark/source/parquet/vectorized/VectorizedReadFlatParquetDataBenchmark.java
similarity index 100%
rename from spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/vectorized/VectorizedReadFlatParquetDataBenchmark.java
rename to spark/v3.0/spark3/src/jmh/java/org/apache/iceberg/spark/source/parquet/vectorized/VectorizedReadFlatParquetDataBenchmark.java
diff --git a/spark/src/main/java/org/apache/iceberg/actions/Actions.java b/spark/v3.0/spark3/src/main/java/org/apache/iceberg/actions/Actions.java
similarity index 100%
rename from spark/src/main/java/org/apache/iceberg/actions/Actions.java
rename to spark/v3.0/spark3/src/main/java/org/apache/iceberg/actions/Actions.java
diff --git a/spark/src/main/java/org/apache/iceberg/actions/CreateAction.java b/spark/v3.0/spark3/src/main/java/org/apache/iceberg/actions/CreateAction.java
similarity index 100%
rename from spark/src/main/java/org/apache/iceberg/actions/CreateAction.java
rename to spark/v3.0/spark3/src/main/java/org/apache/iceberg/actions/CreateAction.java
diff --git a/spark/src/main/java/org/apache/iceberg/actions/ExpireSnapshotsAction.java b/spark/v3.0/spark3/src/main/java/org/apache/iceberg/actions/ExpireSnapshotsAction.java
similarity index 100%
rename from spark/src/main/java/org/apache/iceberg/actions/ExpireSnapshotsAction.java
rename to spark/v3.0/spark3/src/main/java/org/apache/iceberg/actions/ExpireSnapshotsAction.java
diff --git a/spark/src/main/java/org/apache/iceberg/actions/ExpireSnapshotsActionResult.java b/spark/v3.0/spark3/src/main/java/org/apache/iceberg/actions/ExpireSnapshotsActionResult.java
similarity index 100%
rename from spark/src/main/java/org/apache/iceberg/actions/ExpireSnapshotsActionResult.java
rename to spark/v3.0/spark3/src/main/java/org/apache/iceberg/actions/ExpireSnapshotsActionResult.java
diff --git a/spark/src/main/java/org/apache/iceberg/actions/ManifestFileBean.java b/spark/v3.0/spark3/src/main/java/org/apache/iceberg/actions/ManifestFileBean.java
similarity index 100%
rename from spark/src/main/java/org/apache/iceberg/actions/ManifestFileBean.java
rename to spark/v3.0/spark3/src/main/java/org/apache/iceberg/actions/ManifestFileBean.java
diff --git a/spark/src/main/java/org/apache/iceberg/actions/RemoveOrphanFilesAction.java b/spark/v3.0/spark3/src/main/java/org/apache/iceberg/actions/RemoveOrphanFilesAction.java
similarity index 100%
rename from spark/src/main/java/org/apache/iceberg/actions/RemoveOrphanFilesAction.java
rename to spark/v3.0/spark3/src/main/java/org/apache/iceberg/actions/RemoveOrphanFilesAction.java
diff --git a/spark/src/main/java/org/apache/iceberg/actions/RewriteDataFilesAction.java b/spark/v3.0/spark3/src/main/java/org/apache/iceberg/actions/RewriteDataFilesAction.java
similarity index 100%
rename from spark/src/main/java/org/apache/iceberg/actions/RewriteDataFilesAction.java
rename to spark/v3.0/spark3/src/main/java/org/apache/iceberg/actions/RewriteDataFilesAction.java
diff --git a/spark/src/main/java/org/apache/iceberg/actions/RewriteManifestsAction.java b/spark/v3.0/spark3/src/main/java/org/apache/iceberg/actions/RewriteManifestsAction.java
similarity index 100%
rename from spark/src/main/java/org/apache/iceberg/actions/RewriteManifestsAction.java
rename to spark/v3.0/spark3/src/main/java/org/apache/iceberg/actions/RewriteManifestsAction.java
diff --git a/spark/src/main/java/org/apache/iceberg/actions/RewriteManifestsActionResult.java b/spark/v3.0/spark3/src/main/java/org/apache/iceberg/actions/RewriteManifestsActionResult.java
similarity index 100%
rename from spark/src/main/java/org/apache/iceberg/actions/RewriteManifestsActionResult.java
rename to spark/v3.0/spark3/src/main/java/org/apache/iceberg/actions/RewriteManifestsActionResult.java
diff --git a/spark/src/main/java/org/apache/iceberg/actions/SnapshotAction.java b/spark/v3.0/spark3/src/main/java/org/apache/iceberg/actions/SnapshotAction.java
similarity index 100%
rename from spark/src/main/java/org/apache/iceberg/actions/SnapshotAction.java
rename to spark/v3.0/spark3/src/main/java/org/apache/iceberg/actions/SnapshotAction.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/IcebergSpark.java b/spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/IcebergSpark.java
similarity index 100%
rename from spark/src/main/java/org/apache/iceberg/spark/IcebergSpark.java
rename to spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/IcebergSpark.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/JobGroupInfo.java b/spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/JobGroupInfo.java
similarity index 100%
rename from spark/src/main/java/org/apache/iceberg/spark/JobGroupInfo.java
rename to spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/JobGroupInfo.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/JobGroupUtils.java b/spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/JobGroupUtils.java
similarity index 100%
rename from spark/src/main/java/org/apache/iceberg/spark/JobGroupUtils.java
rename to spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/JobGroupUtils.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/PruneColumnsWithReordering.java b/spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/PruneColumnsWithReordering.java
similarity index 100%
rename from spark/src/main/java/org/apache/iceberg/spark/PruneColumnsWithReordering.java
rename to spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/PruneColumnsWithReordering.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/PruneColumnsWithoutReordering.java b/spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/PruneColumnsWithoutReordering.java
similarity index 100%
rename from spark/src/main/java/org/apache/iceberg/spark/PruneColumnsWithoutReordering.java
rename to spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/PruneColumnsWithoutReordering.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/SparkConfParser.java b/spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/SparkConfParser.java
similarity index 100%
rename from spark/src/main/java/org/apache/iceberg/spark/SparkConfParser.java
rename to spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/SparkConfParser.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/SparkDataFile.java b/spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/SparkDataFile.java
similarity index 100%
rename from spark/src/main/java/org/apache/iceberg/spark/SparkDataFile.java
rename to spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/SparkDataFile.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/SparkExceptionUtil.java b/spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/SparkExceptionUtil.java
similarity index 100%
rename from spark/src/main/java/org/apache/iceberg/spark/SparkExceptionUtil.java
rename to spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/SparkExceptionUtil.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/SparkFixupTimestampType.java b/spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/SparkFixupTimestampType.java
similarity index 100%
rename from spark/src/main/java/org/apache/iceberg/spark/SparkFixupTimestampType.java
rename to spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/SparkFixupTimestampType.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/SparkFixupTypes.java b/spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/SparkFixupTypes.java
similarity index 100%
rename from spark/src/main/java/org/apache/iceberg/spark/SparkFixupTypes.java
rename to spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/SparkFixupTypes.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/SparkReadConf.java b/spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/SparkReadConf.java
similarity index 100%
rename from spark/src/main/java/org/apache/iceberg/spark/SparkReadConf.java
rename to spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/SparkReadConf.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/SparkReadOptions.java b/spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/SparkReadOptions.java
similarity index 100%
rename from spark/src/main/java/org/apache/iceberg/spark/SparkReadOptions.java
rename to spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/SparkReadOptions.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/SparkSQLProperties.java b/spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/SparkSQLProperties.java
similarity index 100%
rename from spark/src/main/java/org/apache/iceberg/spark/SparkSQLProperties.java
rename to spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/SparkSQLProperties.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/SparkSchemaUtil.java b/spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/SparkSchemaUtil.java
similarity index 100%
rename from spark/src/main/java/org/apache/iceberg/spark/SparkSchemaUtil.java
rename to spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/SparkSchemaUtil.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/SparkStructLike.java b/spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/SparkStructLike.java
similarity index 100%
rename from spark/src/main/java/org/apache/iceberg/spark/SparkStructLike.java
rename to spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/SparkStructLike.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/SparkTableUtil.java b/spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/SparkTableUtil.java
similarity index 99%
rename from spark/src/main/java/org/apache/iceberg/spark/SparkTableUtil.java
rename to spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/SparkTableUtil.java
index 58c8311..7623cb9 100644
--- a/spark/src/main/java/org/apache/iceberg/spark/SparkTableUtil.java
+++ b/spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/SparkTableUtil.java
@@ -521,7 +521,9 @@ public class SparkTableUtil {
Encoders.javaSerialization(DataFile.class));
if (checkDuplicateFiles) {
- Dataset<Row> importedFiles = filesToImport.map(f -> f.path().toString(), Encoders.STRING()).toDF("file_path");
+ Dataset<Row> importedFiles = filesToImport
+ .map((MapFunction<DataFile, String>) f -> f.path().toString(), Encoders.STRING())
+ .toDF("file_path");
Dataset<Row> existingFiles = loadMetadataTable(spark, targetTable, MetadataTableType.ENTRIES);
Column joinCond = existingFiles.col("data_file.file_path").equalTo(importedFiles.col("file_path"));
Dataset<String> duplicates = importedFiles.join(existingFiles, joinCond)
diff --git a/spark/src/main/java/org/apache/iceberg/spark/SparkTypeToType.java b/spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/SparkTypeToType.java
similarity index 100%
rename from spark/src/main/java/org/apache/iceberg/spark/SparkTypeToType.java
rename to spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/SparkTypeToType.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/SparkTypeVisitor.java b/spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/SparkTypeVisitor.java
similarity index 100%
rename from spark/src/main/java/org/apache/iceberg/spark/SparkTypeVisitor.java
rename to spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/SparkTypeVisitor.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/SparkUtil.java b/spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/SparkUtil.java
similarity index 100%
rename from spark/src/main/java/org/apache/iceberg/spark/SparkUtil.java
rename to spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/SparkUtil.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/SparkValueConverter.java b/spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/SparkValueConverter.java
similarity index 100%
rename from spark/src/main/java/org/apache/iceberg/spark/SparkValueConverter.java
rename to spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/SparkValueConverter.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/SparkWriteConf.java b/spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/SparkWriteConf.java
similarity index 100%
rename from spark/src/main/java/org/apache/iceberg/spark/SparkWriteConf.java
rename to spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/SparkWriteConf.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/SparkWriteOptions.java b/spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/SparkWriteOptions.java
similarity index 100%
rename from spark/src/main/java/org/apache/iceberg/spark/SparkWriteOptions.java
rename to spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/SparkWriteOptions.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/TypeToSparkType.java b/spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/TypeToSparkType.java
similarity index 100%
rename from spark/src/main/java/org/apache/iceberg/spark/TypeToSparkType.java
rename to spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/TypeToSparkType.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/actions/BaseDeleteOrphanFilesSparkAction.java b/spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/actions/BaseDeleteOrphanFilesSparkAction.java
similarity index 100%
rename from spark/src/main/java/org/apache/iceberg/spark/actions/BaseDeleteOrphanFilesSparkAction.java
rename to spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/actions/BaseDeleteOrphanFilesSparkAction.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/actions/BaseDeleteReachableFilesSparkAction.java b/spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/actions/BaseDeleteReachableFilesSparkAction.java
similarity index 100%
rename from spark/src/main/java/org/apache/iceberg/spark/actions/BaseDeleteReachableFilesSparkAction.java
rename to spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/actions/BaseDeleteReachableFilesSparkAction.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/actions/BaseExpireSnapshotsSparkAction.java b/spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/actions/BaseExpireSnapshotsSparkAction.java
similarity index 100%
rename from spark/src/main/java/org/apache/iceberg/spark/actions/BaseExpireSnapshotsSparkAction.java
rename to spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/actions/BaseExpireSnapshotsSparkAction.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/actions/BaseRewriteDataFilesSparkAction.java b/spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/actions/BaseRewriteDataFilesSparkAction.java
similarity index 100%
rename from spark/src/main/java/org/apache/iceberg/spark/actions/BaseRewriteDataFilesSparkAction.java
rename to spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/actions/BaseRewriteDataFilesSparkAction.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/actions/BaseRewriteManifestsSparkAction.java b/spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/actions/BaseRewriteManifestsSparkAction.java
similarity index 100%
rename from spark/src/main/java/org/apache/iceberg/spark/actions/BaseRewriteManifestsSparkAction.java
rename to spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/actions/BaseRewriteManifestsSparkAction.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/actions/BaseSnapshotUpdateSparkAction.java b/spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/actions/BaseSnapshotUpdateSparkAction.java
similarity index 100%
rename from spark/src/main/java/org/apache/iceberg/spark/actions/BaseSnapshotUpdateSparkAction.java
rename to spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/actions/BaseSnapshotUpdateSparkAction.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/actions/BaseSparkAction.java b/spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/actions/BaseSparkAction.java
similarity index 100%
rename from spark/src/main/java/org/apache/iceberg/spark/actions/BaseSparkAction.java
rename to spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/actions/BaseSparkAction.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/actions/BaseSparkActions.java b/spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/actions/BaseSparkActions.java
similarity index 100%
rename from spark/src/main/java/org/apache/iceberg/spark/actions/BaseSparkActions.java
rename to spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/actions/BaseSparkActions.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/data/AvroWithSparkSchemaVisitor.java b/spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/data/AvroWithSparkSchemaVisitor.java
similarity index 100%
rename from spark/src/main/java/org/apache/iceberg/spark/data/AvroWithSparkSchemaVisitor.java
rename to spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/data/AvroWithSparkSchemaVisitor.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/data/ParquetWithSparkSchemaVisitor.java b/spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/data/ParquetWithSparkSchemaVisitor.java
similarity index 100%
rename from spark/src/main/java/org/apache/iceberg/spark/data/ParquetWithSparkSchemaVisitor.java
rename to spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/data/ParquetWithSparkSchemaVisitor.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/data/SparkAvroReader.java b/spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/data/SparkAvroReader.java
similarity index 100%
rename from spark/src/main/java/org/apache/iceberg/spark/data/SparkAvroReader.java
rename to spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/data/SparkAvroReader.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/data/SparkAvroWriter.java b/spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/data/SparkAvroWriter.java
similarity index 100%
rename from spark/src/main/java/org/apache/iceberg/spark/data/SparkAvroWriter.java
rename to spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/data/SparkAvroWriter.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/data/SparkOrcReader.java b/spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/data/SparkOrcReader.java
similarity index 100%
rename from spark/src/main/java/org/apache/iceberg/spark/data/SparkOrcReader.java
rename to spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/data/SparkOrcReader.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/data/SparkOrcValueReaders.java b/spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/data/SparkOrcValueReaders.java
similarity index 100%
rename from spark/src/main/java/org/apache/iceberg/spark/data/SparkOrcValueReaders.java
rename to spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/data/SparkOrcValueReaders.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/data/SparkOrcValueWriters.java b/spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/data/SparkOrcValueWriters.java
similarity index 100%
rename from spark/src/main/java/org/apache/iceberg/spark/data/SparkOrcValueWriters.java
rename to spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/data/SparkOrcValueWriters.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/data/SparkOrcWriter.java b/spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/data/SparkOrcWriter.java
similarity index 100%
rename from spark/src/main/java/org/apache/iceberg/spark/data/SparkOrcWriter.java
rename to spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/data/SparkOrcWriter.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/data/SparkParquetReaders.java b/spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/data/SparkParquetReaders.java
similarity index 100%
rename from spark/src/main/java/org/apache/iceberg/spark/data/SparkParquetReaders.java
rename to spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/data/SparkParquetReaders.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/data/SparkParquetWriters.java b/spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/data/SparkParquetWriters.java
similarity index 100%
rename from spark/src/main/java/org/apache/iceberg/spark/data/SparkParquetWriters.java
rename to spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/data/SparkParquetWriters.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/data/SparkValueReaders.java b/spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/data/SparkValueReaders.java
similarity index 100%
rename from spark/src/main/java/org/apache/iceberg/spark/data/SparkValueReaders.java
rename to spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/data/SparkValueReaders.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/data/SparkValueWriters.java b/spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/data/SparkValueWriters.java
similarity index 100%
rename from spark/src/main/java/org/apache/iceberg/spark/data/SparkValueWriters.java
rename to spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/data/SparkValueWriters.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/data/vectorized/ArrowVectorAccessorFactory.java b/spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/data/vectorized/ArrowVectorAccessorFactory.java
similarity index 100%
rename from spark/src/main/java/org/apache/iceberg/spark/data/vectorized/ArrowVectorAccessorFactory.java
rename to spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/data/vectorized/ArrowVectorAccessorFactory.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/data/vectorized/ArrowVectorAccessors.java b/spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/data/vectorized/ArrowVectorAccessors.java
similarity index 100%
rename from spark/src/main/java/org/apache/iceberg/spark/data/vectorized/ArrowVectorAccessors.java
rename to spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/data/vectorized/ArrowVectorAccessors.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/data/vectorized/ColumnarBatchReader.java b/spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/data/vectorized/ColumnarBatchReader.java
similarity index 100%
rename from spark/src/main/java/org/apache/iceberg/spark/data/vectorized/ColumnarBatchReader.java
rename to spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/data/vectorized/ColumnarBatchReader.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/data/vectorized/ConstantColumnVector.java b/spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/data/vectorized/ConstantColumnVector.java
similarity index 98%
rename from spark/src/main/java/org/apache/iceberg/spark/data/vectorized/ConstantColumnVector.java
rename to spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/data/vectorized/ConstantColumnVector.java
index 7e3d94a..3cdea65 100644
--- a/spark/src/main/java/org/apache/iceberg/spark/data/vectorized/ConstantColumnVector.java
+++ b/spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/data/vectorized/ConstantColumnVector.java
@@ -118,7 +118,7 @@ class ConstantColumnVector extends ColumnVector {
}
@Override
- protected ColumnVector getChild(int ordinal) {
+ public ColumnVector getChild(int ordinal) {
throw new UnsupportedOperationException("ConstantColumnVector only supports primitives");
}
}
diff --git a/spark/src/main/java/org/apache/iceberg/spark/data/vectorized/IcebergArrowColumnVector.java b/spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/data/vectorized/IcebergArrowColumnVector.java
similarity index 100%
rename from spark/src/main/java/org/apache/iceberg/spark/data/vectorized/IcebergArrowColumnVector.java
rename to spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/data/vectorized/IcebergArrowColumnVector.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/data/vectorized/RowPositionColumnVector.java b/spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/data/vectorized/RowPositionColumnVector.java
similarity index 98%
rename from spark/src/main/java/org/apache/iceberg/spark/data/vectorized/RowPositionColumnVector.java
rename to spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/data/vectorized/RowPositionColumnVector.java
index f0d35c6..58db4eb 100644
--- a/spark/src/main/java/org/apache/iceberg/spark/data/vectorized/RowPositionColumnVector.java
+++ b/spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/data/vectorized/RowPositionColumnVector.java
@@ -116,7 +116,7 @@ public class RowPositionColumnVector extends ColumnVector {
}
@Override
- protected ColumnVector getChild(int ordinal) {
+ public ColumnVector getChild(int ordinal) {
throw new UnsupportedOperationException();
}
}
diff --git a/spark/src/main/java/org/apache/iceberg/spark/data/vectorized/VectorizedSparkOrcReaders.java b/spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/data/vectorized/VectorizedSparkOrcReaders.java
similarity index 100%
rename from spark/src/main/java/org/apache/iceberg/spark/data/vectorized/VectorizedSparkOrcReaders.java
rename to spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/data/vectorized/VectorizedSparkOrcReaders.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/data/vectorized/VectorizedSparkParquetReaders.java b/spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/data/vectorized/VectorizedSparkParquetReaders.java
similarity index 100%
rename from spark/src/main/java/org/apache/iceberg/spark/data/vectorized/VectorizedSparkParquetReaders.java
rename to spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/data/vectorized/VectorizedSparkParquetReaders.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/source/BaseDataReader.java b/spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/source/BaseDataReader.java
similarity index 100%
rename from spark/src/main/java/org/apache/iceberg/spark/source/BaseDataReader.java
rename to spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/source/BaseDataReader.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/source/BatchDataReader.java b/spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/source/BatchDataReader.java
similarity index 100%
rename from spark/src/main/java/org/apache/iceberg/spark/source/BatchDataReader.java
rename to spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/source/BatchDataReader.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/source/EqualityDeleteRowReader.java b/spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/source/EqualityDeleteRowReader.java
similarity index 100%
rename from spark/src/main/java/org/apache/iceberg/spark/source/EqualityDeleteRowReader.java
rename to spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/source/EqualityDeleteRowReader.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/source/InternalRowWrapper.java b/spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/source/InternalRowWrapper.java
similarity index 100%
rename from spark/src/main/java/org/apache/iceberg/spark/source/InternalRowWrapper.java
rename to spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/source/InternalRowWrapper.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/source/RowDataReader.java b/spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/source/RowDataReader.java
similarity index 100%
rename from spark/src/main/java/org/apache/iceberg/spark/source/RowDataReader.java
rename to spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/source/RowDataReader.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/source/RowDataRewriter.java b/spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/source/RowDataRewriter.java
similarity index 100%
rename from spark/src/main/java/org/apache/iceberg/spark/source/RowDataRewriter.java
rename to spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/source/RowDataRewriter.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/source/SparkAppenderFactory.java b/spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/source/SparkAppenderFactory.java
similarity index 100%
rename from spark/src/main/java/org/apache/iceberg/spark/source/SparkAppenderFactory.java
rename to spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/source/SparkAppenderFactory.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/source/SparkFileWriterFactory.java b/spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/source/SparkFileWriterFactory.java
similarity index 100%
rename from spark/src/main/java/org/apache/iceberg/spark/source/SparkFileWriterFactory.java
rename to spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/source/SparkFileWriterFactory.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/source/SparkPartitionedFanoutWriter.java b/spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/source/SparkPartitionedFanoutWriter.java
similarity index 100%
rename from spark/src/main/java/org/apache/iceberg/spark/source/SparkPartitionedFanoutWriter.java
rename to spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/source/SparkPartitionedFanoutWriter.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/source/SparkPartitionedWriter.java b/spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/source/SparkPartitionedWriter.java
similarity index 100%
rename from spark/src/main/java/org/apache/iceberg/spark/source/SparkPartitionedWriter.java
rename to spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/source/SparkPartitionedWriter.java
diff --git a/spark/src/main/java/org/apache/iceberg/spark/source/StructInternalRow.java b/spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/source/StructInternalRow.java
similarity index 100%
rename from spark/src/main/java/org/apache/iceberg/spark/source/StructInternalRow.java
rename to spark/v3.0/spark3/src/main/java/org/apache/iceberg/spark/source/StructInternalRow.java
diff --git a/spark/src/test/java/org/apache/iceberg/KryoHelpers.java b/spark/v3.0/spark3/src/test/java/org/apache/iceberg/KryoHelpers.java
similarity index 100%
rename from spark/src/test/java/org/apache/iceberg/KryoHelpers.java
rename to spark/v3.0/spark3/src/test/java/org/apache/iceberg/KryoHelpers.java
diff --git a/spark/src/test/java/org/apache/iceberg/TaskCheckHelper.java b/spark/v3.0/spark3/src/test/java/org/apache/iceberg/TaskCheckHelper.java
similarity index 100%
rename from spark/src/test/java/org/apache/iceberg/TaskCheckHelper.java
rename to spark/v3.0/spark3/src/test/java/org/apache/iceberg/TaskCheckHelper.java
diff --git a/spark/src/test/java/org/apache/iceberg/TestDataFileSerialization.java b/spark/v3.0/spark3/src/test/java/org/apache/iceberg/TestDataFileSerialization.java
similarity index 100%
rename from spark/src/test/java/org/apache/iceberg/TestDataFileSerialization.java
rename to spark/v3.0/spark3/src/test/java/org/apache/iceberg/TestDataFileSerialization.java
diff --git a/spark/src/test/java/org/apache/iceberg/TestFileIOSerialization.java b/spark/v3.0/spark3/src/test/java/org/apache/iceberg/TestFileIOSerialization.java
similarity index 100%
rename from spark/src/test/java/org/apache/iceberg/TestFileIOSerialization.java
rename to spark/v3.0/spark3/src/test/java/org/apache/iceberg/TestFileIOSerialization.java
diff --git a/spark/src/test/java/org/apache/iceberg/TestManifestFileSerialization.java b/spark/v3.0/spark3/src/test/java/org/apache/iceberg/TestManifestFileSerialization.java
similarity index 100%
rename from spark/src/test/java/org/apache/iceberg/TestManifestFileSerialization.java
rename to spark/v3.0/spark3/src/test/java/org/apache/iceberg/TestManifestFileSerialization.java
diff --git a/spark/src/test/java/org/apache/iceberg/TestScanTaskSerialization.java b/spark/v3.0/spark3/src/test/java/org/apache/iceberg/TestScanTaskSerialization.java
similarity index 100%
rename from spark/src/test/java/org/apache/iceberg/TestScanTaskSerialization.java
rename to spark/v3.0/spark3/src/test/java/org/apache/iceberg/TestScanTaskSerialization.java
diff --git a/spark/src/test/java/org/apache/iceberg/TestTableSerialization.java b/spark/v3.0/spark3/src/test/java/org/apache/iceberg/TestTableSerialization.java
similarity index 100%
rename from spark/src/test/java/org/apache/iceberg/TestTableSerialization.java
rename to spark/v3.0/spark3/src/test/java/org/apache/iceberg/TestTableSerialization.java
diff --git a/spark/src/test/java/org/apache/iceberg/actions/TestDeleteReachableFilesAction.java b/spark/v3.0/spark3/src/test/java/org/apache/iceberg/actions/TestDeleteReachableFilesAction.java
similarity index 100%
rename from spark/src/test/java/org/apache/iceberg/actions/TestDeleteReachableFilesAction.java
rename to spark/v3.0/spark3/src/test/java/org/apache/iceberg/actions/TestDeleteReachableFilesAction.java
diff --git a/spark/src/test/java/org/apache/iceberg/actions/TestExpireSnapshotsAction.java b/spark/v3.0/spark3/src/test/java/org/apache/iceberg/actions/TestExpireSnapshotsAction.java
similarity index 100%
rename from spark/src/test/java/org/apache/iceberg/actions/TestExpireSnapshotsAction.java
rename to spark/v3.0/spark3/src/test/java/org/apache/iceberg/actions/TestExpireSnapshotsAction.java
diff --git a/spark/src/test/java/org/apache/iceberg/actions/TestRemoveOrphanFilesAction.java b/spark/v3.0/spark3/src/test/java/org/apache/iceberg/actions/TestRemoveOrphanFilesAction.java
similarity index 100%
rename from spark/src/test/java/org/apache/iceberg/actions/TestRemoveOrphanFilesAction.java
rename to spark/v3.0/spark3/src/test/java/org/apache/iceberg/actions/TestRemoveOrphanFilesAction.java
diff --git a/spark/src/test/java/org/apache/iceberg/actions/TestRewriteDataFilesAction.java b/spark/v3.0/spark3/src/test/java/org/apache/iceberg/actions/TestRewriteDataFilesAction.java
similarity index 100%
rename from spark/src/test/java/org/apache/iceberg/actions/TestRewriteDataFilesAction.java
rename to spark/v3.0/spark3/src/test/java/org/apache/iceberg/actions/TestRewriteDataFilesAction.java
diff --git a/spark/src/test/java/org/apache/iceberg/actions/TestRewriteManifestsAction.java b/spark/v3.0/spark3/src/test/java/org/apache/iceberg/actions/TestRewriteManifestsAction.java
similarity index 100%
rename from spark/src/test/java/org/apache/iceberg/actions/TestRewriteManifestsAction.java
rename to spark/v3.0/spark3/src/test/java/org/apache/iceberg/actions/TestRewriteManifestsAction.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/SparkTestBase.java b/spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/SparkTestBase.java
similarity index 100%
rename from spark/src/test/java/org/apache/iceberg/spark/SparkTestBase.java
rename to spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/SparkTestBase.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/TestSparkSchemaUtil.java b/spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/TestSparkSchemaUtil.java
similarity index 100%
rename from spark/src/test/java/org/apache/iceberg/spark/TestSparkSchemaUtil.java
rename to spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/TestSparkSchemaUtil.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/actions/TestNewRewriteDataFilesAction.java b/spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/actions/TestNewRewriteDataFilesAction.java
similarity index 100%
rename from spark/src/test/java/org/apache/iceberg/spark/actions/TestNewRewriteDataFilesAction.java
rename to spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/actions/TestNewRewriteDataFilesAction.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/data/AvroDataTest.java b/spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/data/AvroDataTest.java
similarity index 100%
rename from spark/src/test/java/org/apache/iceberg/spark/data/AvroDataTest.java
rename to spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/data/AvroDataTest.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/data/GenericsHelpers.java b/spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/data/GenericsHelpers.java
similarity index 100%
rename from spark/src/test/java/org/apache/iceberg/spark/data/GenericsHelpers.java
rename to spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/data/GenericsHelpers.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/data/RandomData.java b/spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/data/RandomData.java
similarity index 100%
rename from spark/src/test/java/org/apache/iceberg/spark/data/RandomData.java
rename to spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/data/RandomData.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/data/TestHelpers.java b/spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/data/TestHelpers.java
similarity index 100%
rename from spark/src/test/java/org/apache/iceberg/spark/data/TestHelpers.java
rename to spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/data/TestHelpers.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/data/TestOrcWrite.java b/spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/data/TestOrcWrite.java
similarity index 100%
rename from spark/src/test/java/org/apache/iceberg/spark/data/TestOrcWrite.java
rename to spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/data/TestOrcWrite.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/data/TestParquetAvroReader.java b/spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/data/TestParquetAvroReader.java
similarity index 100%
rename from spark/src/test/java/org/apache/iceberg/spark/data/TestParquetAvroReader.java
rename to spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/data/TestParquetAvroReader.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/data/TestParquetAvroWriter.java b/spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/data/TestParquetAvroWriter.java
similarity index 100%
rename from spark/src/test/java/org/apache/iceberg/spark/data/TestParquetAvroWriter.java
rename to spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/data/TestParquetAvroWriter.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/data/TestSparkAvroEnums.java b/spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/data/TestSparkAvroEnums.java
similarity index 100%
rename from spark/src/test/java/org/apache/iceberg/spark/data/TestSparkAvroEnums.java
rename to spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/data/TestSparkAvroEnums.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/data/TestSparkAvroReader.java b/spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/data/TestSparkAvroReader.java
similarity index 100%
rename from spark/src/test/java/org/apache/iceberg/spark/data/TestSparkAvroReader.java
rename to spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/data/TestSparkAvroReader.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/data/TestSparkDateTimes.java b/spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/data/TestSparkDateTimes.java
similarity index 90%
rename from spark/src/test/java/org/apache/iceberg/spark/data/TestSparkDateTimes.java
rename to spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/data/TestSparkDateTimes.java
index 10da4da..fb4538a 100644
--- a/spark/src/test/java/org/apache/iceberg/spark/data/TestSparkDateTimes.java
+++ b/spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/data/TestSparkDateTimes.java
@@ -19,10 +19,12 @@
package org.apache.iceberg.spark.data;
+import java.time.ZoneId;
import java.util.TimeZone;
import org.apache.iceberg.expressions.Literal;
import org.apache.iceberg.types.Types;
import org.apache.spark.sql.catalyst.util.DateTimeUtils;
+import org.apache.spark.sql.catalyst.util.TimestampFormatter;
import org.junit.Assert;
import org.junit.Test;
@@ -65,7 +67,9 @@ public class TestSparkDateTimes {
public void checkSparkTimestamp(String timestampString, String sparkRepr) {
Literal<Long> ts = Literal.of(timestampString).to(Types.TimestampType.withZone());
- String sparkTimestamp = DateTimeUtils.timestampToString(ts.value());
+ ZoneId zoneId = DateTimeUtils.getZoneId("UTC");
+ TimestampFormatter formatter = TimestampFormatter.getFractionFormatter(zoneId);
+ String sparkTimestamp = DateTimeUtils.timestampToString(formatter, ts.value());
System.err.println(timestampString + ": " + ts.value());
Assert.assertEquals("Should be the same timestamp (" + ts.value() + ")",
sparkRepr, sparkTimestamp);
diff --git a/spark/src/test/java/org/apache/iceberg/spark/data/TestSparkOrcReadMetadataColumns.java b/spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/data/TestSparkOrcReadMetadataColumns.java
similarity index 100%
rename from spark/src/test/java/org/apache/iceberg/spark/data/TestSparkOrcReadMetadataColumns.java
rename to spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/data/TestSparkOrcReadMetadataColumns.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/data/TestSparkOrcReader.java b/spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/data/TestSparkOrcReader.java
similarity index 100%
rename from spark/src/test/java/org/apache/iceberg/spark/data/TestSparkOrcReader.java
rename to spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/data/TestSparkOrcReader.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/data/TestSparkParquetReadMetadataColumns.java b/spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/data/TestSparkParquetReadMetadataColumns.java
similarity index 100%
rename from spark/src/test/java/org/apache/iceberg/spark/data/TestSparkParquetReadMetadataColumns.java
rename to spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/data/TestSparkParquetReadMetadataColumns.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/data/TestSparkParquetReader.java b/spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/data/TestSparkParquetReader.java
similarity index 100%
rename from spark/src/test/java/org/apache/iceberg/spark/data/TestSparkParquetReader.java
rename to spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/data/TestSparkParquetReader.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/data/TestSparkParquetWriter.java b/spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/data/TestSparkParquetWriter.java
similarity index 100%
rename from spark/src/test/java/org/apache/iceberg/spark/data/TestSparkParquetWriter.java
rename to spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/data/TestSparkParquetWriter.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/data/TestSparkRecordOrcReaderWriter.java b/spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/data/TestSparkRecordOrcReaderWriter.java
similarity index 100%
rename from spark/src/test/java/org/apache/iceberg/spark/data/TestSparkRecordOrcReaderWriter.java
rename to spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/data/TestSparkRecordOrcReaderWriter.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/data/parquet/vectorized/TestParquetDictionaryEncodedVectorizedReads.java b/spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/data/parquet/vectorized/TestParquetDictionaryEncodedVectorizedReads.java
similarity index 100%
rename from spark/src/test/java/org/apache/iceberg/spark/data/parquet/vectorized/TestParquetDictionaryEncodedVectorizedReads.java
rename to spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/data/parquet/vectorized/TestParquetDictionaryEncodedVectorizedReads.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/data/parquet/vectorized/TestParquetDictionaryFallbackToPlainEncodingVectorizedReads.java b/spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/data/parquet/vectorized/TestParquetDictionaryFallbackToPlainEncodingVectorizedReads.java
similarity index 100%
rename from spark/src/test/java/org/apache/iceberg/spark/data/parquet/vectorized/TestParquetDictionaryFallbackToPlainEncodingVectorizedReads.java
rename to spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/data/parquet/vectorized/TestParquetDictionaryFallbackToPlainEncodingVectorizedReads.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/data/parquet/vectorized/TestParquetVectorizedReads.java b/spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/data/parquet/vectorized/TestParquetVectorizedReads.java
similarity index 100%
rename from spark/src/test/java/org/apache/iceberg/spark/data/parquet/vectorized/TestParquetVectorizedReads.java
rename to spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/data/parquet/vectorized/TestParquetVectorizedReads.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/source/LogMessage.java b/spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/source/LogMessage.java
similarity index 100%
rename from spark/src/test/java/org/apache/iceberg/spark/source/LogMessage.java
rename to spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/source/LogMessage.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/source/SimpleRecord.java b/spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/source/SimpleRecord.java
similarity index 100%
rename from spark/src/test/java/org/apache/iceberg/spark/source/SimpleRecord.java
rename to spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/source/SimpleRecord.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/source/TestAvroScan.java b/spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/source/TestAvroScan.java
similarity index 100%
rename from spark/src/test/java/org/apache/iceberg/spark/source/TestAvroScan.java
rename to spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/source/TestAvroScan.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/source/TestDataFrameWrites.java b/spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/source/TestDataFrameWrites.java
similarity index 100%
rename from spark/src/test/java/org/apache/iceberg/spark/source/TestDataFrameWrites.java
rename to spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/source/TestDataFrameWrites.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/source/TestDataSourceOptions.java b/spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/source/TestDataSourceOptions.java
similarity index 100%
rename from spark/src/test/java/org/apache/iceberg/spark/source/TestDataSourceOptions.java
rename to spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/source/TestDataSourceOptions.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/source/TestForwardCompatibility.java b/spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/source/TestForwardCompatibility.java
similarity index 98%
rename from spark/src/test/java/org/apache/iceberg/spark/source/TestForwardCompatibility.java
rename to spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/source/TestForwardCompatibility.java
index 2c7af66..6ee7ee9 100644
--- a/spark/src/test/java/org/apache/iceberg/spark/source/TestForwardCompatibility.java
+++ b/spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/source/TestForwardCompatibility.java
@@ -23,6 +23,7 @@ import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.UUID;
+import java.util.concurrent.TimeoutException;
import org.apache.avro.generic.GenericData;
import org.apache.hadoop.conf.Configuration;
import org.apache.iceberg.AssertHelpers;
@@ -125,7 +126,7 @@ public abstract class TestForwardCompatibility {
}
@Test
- public void testSparkStreamingWriteFailsUnknownTransform() throws IOException {
+ public void testSparkStreamingWriteFailsUnknownTransform() throws IOException, TimeoutException {
File parent = temp.newFolder("avro");
File location = new File(parent, "test");
File dataFolder = new File(location, "data");
diff --git a/spark/src/test/java/org/apache/iceberg/spark/source/TestIcebergSourceHadoopTables.java b/spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/source/TestIcebergSourceHadoopTables.java
similarity index 100%
rename from spark/src/test/java/org/apache/iceberg/spark/source/TestIcebergSourceHadoopTables.java
rename to spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/source/TestIcebergSourceHadoopTables.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/source/TestIcebergSourceHiveTables.java b/spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/source/TestIcebergSourceHiveTables.java
similarity index 100%
rename from spark/src/test/java/org/apache/iceberg/spark/source/TestIcebergSourceHiveTables.java
rename to spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/source/TestIcebergSourceHiveTables.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/source/TestIcebergSourceTablesBase.java b/spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/source/TestIcebergSourceTablesBase.java
similarity index 100%
rename from spark/src/test/java/org/apache/iceberg/spark/source/TestIcebergSourceTablesBase.java
rename to spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/source/TestIcebergSourceTablesBase.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/source/TestIcebergSpark.java b/spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/source/TestIcebergSpark.java
similarity index 100%
rename from spark/src/test/java/org/apache/iceberg/spark/source/TestIcebergSpark.java
rename to spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/source/TestIcebergSpark.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/source/TestIdentityPartitionData.java b/spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/source/TestIdentityPartitionData.java
similarity index 100%
rename from spark/src/test/java/org/apache/iceberg/spark/source/TestIdentityPartitionData.java
rename to spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/source/TestIdentityPartitionData.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/source/TestInternalRowWrapper.java b/spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/source/TestInternalRowWrapper.java
similarity index 100%
rename from spark/src/test/java/org/apache/iceberg/spark/source/TestInternalRowWrapper.java
rename to spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/source/TestInternalRowWrapper.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/source/TestParquetScan.java b/spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/source/TestParquetScan.java
similarity index 100%
rename from spark/src/test/java/org/apache/iceberg/spark/source/TestParquetScan.java
rename to spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/source/TestParquetScan.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/source/TestPartitionPruning.java b/spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/source/TestPartitionPruning.java
similarity index 100%
rename from spark/src/test/java/org/apache/iceberg/spark/source/TestPartitionPruning.java
rename to spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/source/TestPartitionPruning.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/source/TestPartitionValues.java b/spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/source/TestPartitionValues.java
similarity index 100%
rename from spark/src/test/java/org/apache/iceberg/spark/source/TestPartitionValues.java
rename to spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/source/TestPartitionValues.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/source/TestReadProjection.java b/spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/source/TestReadProjection.java
similarity index 100%
rename from spark/src/test/java/org/apache/iceberg/spark/source/TestReadProjection.java
rename to spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/source/TestReadProjection.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/source/TestSnapshotSelection.java b/spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/source/TestSnapshotSelection.java
similarity index 100%
rename from spark/src/test/java/org/apache/iceberg/spark/source/TestSnapshotSelection.java
rename to spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/source/TestSnapshotSelection.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/source/TestSparkAppenderFactory.java b/spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/source/TestSparkAppenderFactory.java
similarity index 100%
rename from spark/src/test/java/org/apache/iceberg/spark/source/TestSparkAppenderFactory.java
rename to spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/source/TestSparkAppenderFactory.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/source/TestSparkBaseDataReader.java b/spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/source/TestSparkBaseDataReader.java
similarity index 100%
rename from spark/src/test/java/org/apache/iceberg/spark/source/TestSparkBaseDataReader.java
rename to spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/source/TestSparkBaseDataReader.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/source/TestSparkDataFile.java b/spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/source/TestSparkDataFile.java
similarity index 100%
rename from spark/src/test/java/org/apache/iceberg/spark/source/TestSparkDataFile.java
rename to spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/source/TestSparkDataFile.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/source/TestSparkDataWrite.java b/spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/source/TestSparkDataWrite.java
similarity index 100%
rename from spark/src/test/java/org/apache/iceberg/spark/source/TestSparkDataWrite.java
rename to spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/source/TestSparkDataWrite.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/source/TestSparkFileWriterFactory.java b/spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/source/TestSparkFileWriterFactory.java
similarity index 100%
rename from spark/src/test/java/org/apache/iceberg/spark/source/TestSparkFileWriterFactory.java
rename to spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/source/TestSparkFileWriterFactory.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/source/TestSparkMergingMetrics.java b/spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/source/TestSparkMergingMetrics.java
similarity index 100%
rename from spark/src/test/java/org/apache/iceberg/spark/source/TestSparkMergingMetrics.java
rename to spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/source/TestSparkMergingMetrics.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/source/TestSparkPartitioningWriters.java b/spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/source/TestSparkPartitioningWriters.java
similarity index 100%
rename from spark/src/test/java/org/apache/iceberg/spark/source/TestSparkPartitioningWriters.java
rename to spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/source/TestSparkPartitioningWriters.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/source/TestSparkPositionDeltaWriters.java b/spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/source/TestSparkPositionDeltaWriters.java
similarity index 100%
rename from spark/src/test/java/org/apache/iceberg/spark/source/TestSparkPositionDeltaWriters.java
rename to spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/source/TestSparkPositionDeltaWriters.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/source/TestSparkReadProjection.java b/spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/source/TestSparkReadProjection.java
similarity index 100%
rename from spark/src/test/java/org/apache/iceberg/spark/source/TestSparkReadProjection.java
rename to spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/source/TestSparkReadProjection.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/source/TestSparkReaderDeletes.java b/spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/source/TestSparkReaderDeletes.java
similarity index 100%
rename from spark/src/test/java/org/apache/iceberg/spark/source/TestSparkReaderDeletes.java
rename to spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/source/TestSparkReaderDeletes.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/source/TestSparkRollingFileWriters.java b/spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/source/TestSparkRollingFileWriters.java
similarity index 100%
rename from spark/src/test/java/org/apache/iceberg/spark/source/TestSparkRollingFileWriters.java
rename to spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/source/TestSparkRollingFileWriters.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/source/TestSparkSchema.java b/spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/source/TestSparkSchema.java
similarity index 100%
rename from spark/src/test/java/org/apache/iceberg/spark/source/TestSparkSchema.java
rename to spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/source/TestSparkSchema.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/source/TestSparkWriterMetrics.java b/spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/source/TestSparkWriterMetrics.java
similarity index 100%
rename from spark/src/test/java/org/apache/iceberg/spark/source/TestSparkWriterMetrics.java
rename to spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/source/TestSparkWriterMetrics.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/source/TestStructuredStreaming.java b/spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/source/TestStructuredStreaming.java
similarity index 100%
rename from spark/src/test/java/org/apache/iceberg/spark/source/TestStructuredStreaming.java
rename to spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/source/TestStructuredStreaming.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/source/TestTables.java b/spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/source/TestTables.java
similarity index 100%
rename from spark/src/test/java/org/apache/iceberg/spark/source/TestTables.java
rename to spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/source/TestTables.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/source/TestTimestampWithoutZone.java b/spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/source/TestTimestampWithoutZone.java
similarity index 100%
rename from spark/src/test/java/org/apache/iceberg/spark/source/TestTimestampWithoutZone.java
rename to spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/source/TestTimestampWithoutZone.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/source/TestWriteMetricsConfig.java b/spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/source/TestWriteMetricsConfig.java
similarity index 100%
rename from spark/src/test/java/org/apache/iceberg/spark/source/TestWriteMetricsConfig.java
rename to spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/source/TestWriteMetricsConfig.java
diff --git a/spark/src/test/java/org/apache/iceberg/spark/source/ThreeColumnRecord.java b/spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/source/ThreeColumnRecord.java
similarity index 100%
rename from spark/src/test/java/org/apache/iceberg/spark/source/ThreeColumnRecord.java
rename to spark/v3.0/spark3/src/test/java/org/apache/iceberg/spark/source/ThreeColumnRecord.java