qinghui-xu opened a new issue, #14232:
URL: https://github.com/apache/iceberg/issues/14232

   ### Apache Iceberg version
   
   1.10.0 (latest release)
   
   ### Query engine
   
   Spark
   
   ### Please describe the bug 🐞
   
   Spark 3.5/3.4 is using avro 1.11.
   Iceberg is using avro 1.12 API such as 
`org.apache.avro.LogicalTypes.timestampNanos` which does not exist in avro 
1.11. In runtime:
   ```
   java.lang.NoSuchMethodError: 'org.apache.avro.LogicalTypes$TimestampNanos 
org.apache.avro.LogicalTypes.timestampNanos()'
     at org.apache.iceberg.avro.TypeToSchema.<clinit>(TypeToSchema.java:50)
     at org.apache.iceberg.avro.AvroSchemaUtil.convert(AvroSchemaUtil.java:64)
     at org.apache.iceberg.avro.AvroSchemaUtil.convert(AvroSchemaUtil.java:59)
     at 
org.apache.iceberg.GenericManifestFile.<clinit>(GenericManifestFile.java:42)
     at 
java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native
 Method)
     at 
java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
     at 
java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
     at 
java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
     at 
org.apache.iceberg.common.DynConstructors$Ctor.newInstanceChecked(DynConstructors.java:51)
     at 
org.apache.iceberg.common.DynConstructors$Ctor.newInstance(DynConstructors.java:64)
     at 
org.apache.iceberg.avro.InternalReaders$PlannedStructLikeReader.reuseOrCreate(InternalReaders.java:67)
     at 
org.apache.iceberg.avro.InternalReaders$PlannedStructLikeReader.reuseOrCreate(InternalReaders.java:42)
     at 
org.apache.iceberg.avro.ValueReaders$PlannedStructReader.read(ValueReaders.java:1025)
     at org.apache.iceberg.avro.InternalReader.read(InternalReader.java:107)
     at 
org.apache.iceberg.avro.NameMappingDatumReader.read(NameMappingDatumReader.java:57)
     at org.apache.avro.file.DataFileStream.next(DataFileStream.java:263)
     at org.apache.avro.file.DataFileStream.next(DataFileStream.java:248)
     at 
org.apache.iceberg.io.CloseableIterator$1.next(CloseableIterator.java:55)
     at 
org.apache.iceberg.relocated.com.google.common.collect.Iterators.addAll(Iterators.java:370)
     at 
org.apache.iceberg.relocated.com.google.common.collect.Iterables.addAll(Iterables.java:332)
     at 
org.apache.iceberg.relocated.com.google.common.collect.Lists.newLinkedList(Lists.java:261)
     at org.apache.iceberg.ManifestLists.read(ManifestLists.java:42)
     at org.apache.iceberg.BaseSnapshot.cacheManifests(BaseSnapshot.java:185)
     at org.apache.iceberg.BaseSnapshot.dataManifests(BaseSnapshot.java:211)
     at org.apache.iceberg.DataTableScan.doPlanFiles(DataTableScan.java:68)
     at org.apache.iceberg.SnapshotScan.planFiles(SnapshotScan.java:139)
     at 
org.apache.iceberg.spark.source.SparkTable.canDeleteUsingMetadata(SparkTable.java:359)
     at 
org.apache.iceberg.spark.source.SparkTable.canDeleteWhere(SparkTable.java:336)
     at 
org.apache.spark.sql.execution.datasources.v2.OptimizeMetadataOnlyDeleteFromTable$$anonfun$apply$1.applyOrElse(OptimizeMetadataOnlyDeleteFromTable.scala:47)
     at 
org.apache.spark.sql.execution.datasources.v2.OptimizeMetadataOnlyDeleteFromTable$$anonfun$apply$1.applyOrElse(OptimizeMetadataOnlyDeleteFromTable.scala:39)
     at 
org.apache.spark.sql.catalyst.trees.TreeNode.$anonfun$transformDownWithPruning$1(TreeNode.scala:461)
     at 
org.apache.spark.sql.catalyst.trees.CurrentOrigin$.withOrigin(origin.scala:76)
     at 
org.apache.spark.sql.catalyst.trees.TreeNode.transformDownWithPruning(TreeNode.scala:461)
     at 
org.apache.spark.sql.catalyst.plans.logical.LogicalPlan.org$apache$spark$sql$catalyst$plans$logical$AnalysisHelper$$super$transformDownWithPruning(LogicalPlan.scala:32)
     at 
org.apache.spark.sql.catalyst.plans.logical.AnalysisHelper.transformDownWithPruning(AnalysisHelper.scala:267)
     at 
org.apache.spark.sql.catalyst.plans.logical.AnalysisHelper.transformDownWithPruning$(AnalysisHelper.scala:263)
     at 
org.apache.spark.sql.catalyst.plans.logical.LogicalPlan.transformDownWithPruning(LogicalPlan.scala:32)
     at 
org.apache.spark.sql.catalyst.plans.logical.LogicalPlan.transformDownWithPruning(LogicalPlan.scala:32)
     at 
org.apache.spark.sql.catalyst.trees.TreeNode.transformDown(TreeNode.scala:437)
     at 
org.apache.spark.sql.catalyst.trees.TreeNode.transform(TreeNode.scala:405)
     at 
org.apache.spark.sql.execution.datasources.v2.OptimizeMetadataOnlyDeleteFromTable$.apply(OptimizeMetadataOnlyDeleteFromTable.scala:39)
     at 
org.apache.spark.sql.execution.datasources.v2.OptimizeMetadataOnlyDeleteFromTable$.apply(OptimizeMetadataOnlyDeleteFromTable.scala:37)
     at 
org.apache.spark.sql.catalyst.rules.RuleExecutor.$anonfun$execute$2(RuleExecutor.scala:222)
     at 
scala.collection.LinearSeqOptimized.foldLeft(LinearSeqOptimized.scala:126)
     at 
scala.collection.LinearSeqOptimized.foldLeft$(LinearSeqOptimized.scala:122)
     at scala.collection.immutable.List.foldLeft(List.scala:91)
     at 
org.apache.spark.sql.catalyst.rules.RuleExecutor.$anonfun$execute$1(RuleExecutor.scala:219)
     at 
org.apache.spark.sql.catalyst.rules.RuleExecutor.$anonfun$execute$1$adapted(RuleExecutor.scala:211)
     at scala.collection.immutable.List.foreach(List.scala:431)
     at 
org.apache.spark.sql.catalyst.rules.RuleExecutor.execute(RuleExecutor.scala:211)
     at 
org.apache.spark.sql.catalyst.rules.RuleExecutor.$anonfun$executeAndTrack$1(RuleExecutor.scala:182)
     at 
org.apache.spark.sql.catalyst.QueryPlanningTracker$.withTracker(QueryPlanningTracker.scala:89)
     at 
org.apache.spark.sql.catalyst.rules.RuleExecutor.executeAndTrack(RuleExecutor.scala:182)
     at 
org.apache.spark.sql.execution.QueryExecution.$anonfun$optimizedPlan$1(QueryExecution.scala:152)
     at 
org.apache.spark.sql.catalyst.QueryPlanningTracker.measurePhase(QueryPlanningTracker.scala:138)
     at 
org.apache.spark.sql.execution.QueryExecution.$anonfun$executePhase$2(QueryExecution.scala:219)
     at 
org.apache.spark.sql.execution.QueryExecution$.withInternalError(QueryExecution.scala:546)
     at 
org.apache.spark.sql.execution.QueryExecution.$anonfun$executePhase$1(QueryExecution.scala:219)
     at org.apache.spark.sql.SparkSession.withActive(SparkSession.scala:900)
     at 
org.apache.spark.sql.execution.QueryExecution.executePhase(QueryExecution.scala:218)
     at 
org.apache.spark.sql.execution.QueryExecution.optimizedPlan$lzycompute(QueryExecution.scala:148)
     at 
org.apache.spark.sql.execution.QueryExecution.optimizedPlan(QueryExecution.scala:144)
     at 
org.apache.spark.sql.execution.QueryExecution.assertOptimized(QueryExecution.scala:162)
     at 
org.apache.spark.sql.execution.QueryExecution.executedPlan$lzycompute(QueryExecution.scala:182)
     at 
org.apache.spark.sql.execution.QueryExecution.executedPlan(QueryExecution.scala:179)
     at 
org.apache.spark.sql.execution.QueryExecution.simpleString(QueryExecution.scala:238)
     at 
org.apache.spark.sql.execution.QueryExecution.org$apache$spark$sql$execution$QueryExecution$$explainString(QueryExecution.scala:284)
     at 
org.apache.spark.sql.execution.QueryExecution.explainString(QueryExecution.scala:252)
     at 
org.apache.spark.sql.execution.SQLExecution$.$anonfun$withNewExecutionId$6(SQLExecution.scala:117)
     at 
org.apache.spark.sql.execution.SQLExecution$.withSQLConfPropagated(SQLExecution.scala:201)
     at 
org.apache.spark.sql.execution.SQLExecution$.$anonfun$withNewExecutionId$1(SQLExecution.scala:108)
     at org.apache.spark.sql.SparkSession.withActive(SparkSession.scala:900)
     at 
org.apache.spark.sql.execution.SQLExecution$.withNewExecutionId(SQLExecution.scala:66)
     at 
org.apache.spark.sql.execution.QueryExecution$$anonfun$eagerlyExecuteCommands$1.applyOrElse(QueryExecution.scala:107)
     at 
org.apache.spark.sql.execution.QueryExecution$$anonfun$eagerlyExecuteCommands$1.applyOrElse(QueryExecution.scala:98)
     at 
org.apache.spark.sql.catalyst.trees.TreeNode.$anonfun$transformDownWithPruning$1(TreeNode.scala:461)
     at 
org.apache.spark.sql.catalyst.trees.CurrentOrigin$.withOrigin(origin.scala:76)
     at 
org.apache.spark.sql.catalyst.trees.TreeNode.transformDownWithPruning(TreeNode.scala:461)
     at 
org.apache.spark.sql.catalyst.plans.logical.LogicalPlan.org$apache$spark$sql$catalyst$plans$logical$AnalysisHelper$$super$transformDownWithPruning(LogicalPlan.scala:32)
     at 
org.apache.spark.sql.catalyst.plans.logical.AnalysisHelper.transformDownWithPruning(AnalysisHelper.scala:267)
     at 
org.apache.spark.sql.catalyst.plans.logical.AnalysisHelper.transformDownWithPruning$(AnalysisHelper.scala:263)
     at 
org.apache.spark.sql.catalyst.plans.logical.LogicalPlan.transformDownWithPruning(LogicalPlan.scala:32)
     at 
org.apache.spark.sql.catalyst.plans.logical.LogicalPlan.transformDownWithPruning(LogicalPlan.scala:32)
     at 
org.apache.spark.sql.catalyst.trees.TreeNode.transformDown(TreeNode.scala:437)
     at 
org.apache.spark.sql.execution.QueryExecution.eagerlyExecuteCommands(QueryExecution.scala:98)
     at 
org.apache.spark.sql.execution.QueryExecution.commandExecuted$lzycompute(QueryExecution.scala:85)
     at 
org.apache.spark.sql.execution.QueryExecution.commandExecuted(QueryExecution.scala:83)
     at org.apache.spark.sql.Dataset.<init>(Dataset.scala:220)
     at org.apache.spark.sql.Dataset$.$anonfun$ofRows$2(Dataset.scala:100)
     at org.apache.spark.sql.SparkSession.withActive(SparkSession.scala:900)
     at org.apache.spark.sql.Dataset$.ofRows(Dataset.scala:97)
     at org.apache.spark.sql.SparkSession.$anonfun$sql$4(SparkSession.scala:691)
     at org.apache.spark.sql.SparkSession.withActive(SparkSession.scala:900)
     at org.apache.spark.sql.SparkSession.sql(SparkSession.scala:682)
     at org.apache.spark.sql.SparkSession.sql(SparkSession.scala:713)
     at org.apache.spark.sql.SparkSession.sql(SparkSession.scala:744)
     ... 47 elided
   ```
   
   ### Willingness to contribute
   
   - [ ] I can contribute a fix for this bug independently
   - [x] I would be willing to contribute a fix for this bug with guidance from 
the Iceberg community
   - [ ] I cannot contribute a fix for this bug at this time


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to