<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: INTERNAL_ERROR occurred while converting Iceberg format table to Delta format using Spark in Data Engineering</title>
    <link>https://community.databricks.com/t5/data-engineering/internal-error-occurred-while-converting-iceberg-format-table-to/m-p/150963#M53548</link>
    <description>&lt;P&gt;Quick question before diving in: are you running this through Spark Connect? The binary name spark-4.1.1-bin-hadoop3-connect suggests yes, and the stack trace confirms it. The NullPointerException on DelegatingCatalogExtension.name() because “this.delegate” is null points to the Iceberg catalog plugin not initializing on the server side.&lt;BR /&gt;Which version of delta-iceberg jar are you including? This matters because iceberg-spark-runtime has to be compiled against a specific Spark version and this exact pattern has happened before. Delta 2.4.0 docs note that “delta-iceberg is currently not available… since iceberg-spark-runtime does not support Spark 3.4 yet”, and the Delta 4.0.1 release notes explicitly state that “hudi and iceberg are currently not compatible with Spark 4.1, as support depends on upcoming releases.” (github.com/delta-io/delta/releases)&lt;BR /&gt;Does downgrading to Spark 3.5 with Delta 3.3.x change anything?&lt;/P&gt;</description>
    <pubDate>Sun, 15 Mar 2026 06:54:31 GMT</pubDate>
    <dc:creator>mderela</dc:creator>
    <dc:date>2026-03-15T06:54:31Z</dc:date>
    <item>
      <title>INTERNAL_ERROR occurred while converting Iceberg format table to Delta format using Spark</title>
      <link>https://community.databricks.com/t5/data-engineering/internal-error-occurred-while-converting-iceberg-format-table-to/m-p/150663#M53491</link>
      <description>&lt;P&gt;I used Apache Spark to write an iceberg table to Amazon S3.&lt;BR /&gt;I then ran the code below to convert the iceberg table to delta, and the following exception occurred:&lt;/P&gt;&lt;P&gt;```python&lt;BR /&gt;spark.sql('convert to delta iceberg.`s3a://BUCKET/path/to/table_name/`')&lt;BR /&gt;```&lt;/P&gt;&lt;P&gt;```text&lt;BR /&gt;pyspark.errors.exceptions.connect.SparkException: [INTERNAL_ERROR] Eagerly executed command failed. You encountered a bug in Spark or the Spark plugins you use. Please report this bug to the corresponding community or vendor and provide the full stack trace. SQLSTATE: XX000&lt;BR /&gt;```&lt;/P&gt;&lt;P&gt;I'm leaving this message because they told me to contact the community or vendor.&lt;/P&gt;&lt;P&gt;```text&lt;/P&gt;&lt;DIV&gt;&amp;gt;&amp;gt;&amp;gt; result = spark.sql('convert to delta iceberg.`s3a://BUCKET/path/to/iceberg_table/`')&lt;/DIV&gt;&lt;DIV&gt;Traceback (most recent call last):&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; File "&amp;lt;stdin&amp;gt;", line 1, in &amp;lt;module&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; File "/usr/local/spark/spark-4.1.1-bin-hadoop3-connect/python/pyspark/sql/connect/session.py", line 828, in sql&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; data, properties, ei = self.client.execute_command(cmd.command(self._client))&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; File "/usr/local/spark/spark-4.1.1-bin-hadoop3-connect/python/pyspark/sql/connect/client/core.py", line 1195, in execute_command&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; data, _, metrics, observed_metrics, properties = self._execute_and_fetch(&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;^^^^^^^^^^^^^^^^^^^^^^^^&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; File "/usr/local/spark/spark-4.1.1-bin-hadoop3-connect/python/pyspark/sql/connect/client/core.py", line 1697, in _execute_and_fetch&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; for response in self._execute_and_fetch_as_iterator(&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; File "/usr/local/spark/spark-4.1.1-bin-hadoop3-connect/python/pyspark/sql/connect/client/core.py", line 1674, in _execute_and_fetch_as_iterator&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; self._handle_error(error)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; File "/usr/local/spark/spark-4.1.1-bin-hadoop3-connect/python/pyspark/sql/connect/client/core.py", line 1982, in _handle_error&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; self._handle_rpc_error(error)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; File "/usr/local/spark/spark-4.1.1-bin-hadoop3-connect/python/pyspark/sql/connect/client/core.py", line 2066, in _handle_rpc_error&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; raise convert_exception(&lt;/DIV&gt;&lt;DIV&gt;pyspark.errors.exceptions.connect.SparkException: [INTERNAL_ERROR] Eagerly executed command failed. You hit a bug in Spark or the Spark plugins you use. Please, report this bug to the corresponding communities or vendors, and provide the full stack trace. SQLSTATE: XX000&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;JVM stacktrace:&lt;/DIV&gt;&lt;DIV&gt;org.apache.spark.SparkException&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.SparkException$.internalError(SparkException.scala:107)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.execution.QueryExecution$.toInternalError(QueryExecution.scala:706)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.execution.QueryExecution$.withInternalError(QueryExecution.scala:719)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.execution.QueryExecution.org$apache$spark$sql$execution$QueryExecution$$eagerlyExecute$1(QueryExecution.scala:184)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.execution.QueryExecution$$anonfun$eagerlyExecuteCommands$3.applyOrElse(QueryExecution.scala:201)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.execution.QueryExecution$$anonfun$eagerlyExecuteCommands$3.applyOrElse(QueryExecution.scala:194)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.catalyst.trees.TreeNode.$anonfun$transformDownWithPruning$1(TreeNode.scala:491)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.catalyst.trees.CurrentOrigin$.withOrigin(origin.scala:107)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.catalyst.trees.TreeNode.transformDownWithPruning(TreeNode.scala:491)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.catalyst.plans.logical.LogicalPlan.org$apache$spark$sql$catalyst$plans$logical$AnalysisHelper$$super$transformDownWithPruning(LogicalPlan.scala:37)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.catalyst.plans.logical.AnalysisHelper.transformDownWithPruning(AnalysisHelper.scala:360)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.catalyst.plans.logical.AnalysisHelper.transformDownWithPruning$(AnalysisHelper.scala:356)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.catalyst.plans.logical.LogicalPlan.transformDownWithPruning(LogicalPlan.scala:37)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.catalyst.plans.logical.LogicalPlan.transformDownWithPruning(LogicalPlan.scala:37)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.catalyst.trees.TreeNode.transformDown(TreeNode.scala:467)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.execution.QueryExecution.eagerlyExecuteCommands(QueryExecution.scala:194)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.execution.QueryExecution.$anonfun$lazyCommandExecuted$1(QueryExecution.scala:155)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at scala.util.Try$.apply(Try.scala:217)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.util.Utils$.doTryWithCallerStacktrace(Utils.scala:1392)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.util.Utils$.getTryWithCallerStacktrace(Utils.scala:1453)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.util.LazyTry.get(LazyTry.scala:58)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.execution.QueryExecution.commandExecuted(QueryExecution.scala:160)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.classic.Dataset.&amp;lt;init&amp;gt;(Dataset.scala:276)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.classic.Dataset$.$anonfun$ofRows$5(Dataset.scala:139)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.SparkSession.withActive(SparkSession.scala:804)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.classic.Dataset$.ofRows(Dataset.scala:135)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.classic.SparkSession.$anonfun$sql$4(SparkSession.scala:584)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.SparkSession.withActive(SparkSession.scala:804)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.classic.SparkSession.sql(SparkSession.scala:561)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.connect.planner.SparkConnectPlanner.executeSQL(SparkConnectPlanner.scala:3148)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.connect.planner.SparkConnectPlanner.handleSqlCommand(SparkConnectPlanner.scala:2996)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.connect.planner.SparkConnectPlanner.process(SparkConnectPlanner.scala:2830)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.connect.execution.SparkConnectPlanExecution.handlePlan(SparkConnectPlanExecution.scala:96)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.connect.execution.ExecuteThreadRunner.$anonfun$executeInternal$1(ExecuteThreadRunner.scala:225)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.connect.execution.ExecuteThreadRunner.$anonfun$executeInternal$1$adapted(ExecuteThreadRunner.scala:197)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.connect.service.SessionHolder.$anonfun$withSession$2(SessionHolder.scala:396)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.SparkSession.withActive(SparkSession.scala:804)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.connect.service.SessionHolder.$anonfun$withSession$1(SessionHolder.scala:396)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.JobArtifactSet$.withActiveJobArtifactState(JobArtifactSet.scala:94)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.artifact.ArtifactManager.$anonfun$withResources$1(ArtifactManager.scala:112)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.util.Utils$.withContextClassLoader(Utils.scala:185)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.artifact.ArtifactManager.withClassLoaderIfNeeded(ArtifactManager.scala:102)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.artifact.ArtifactManager.withResources(ArtifactManager.scala:111)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.connect.service.SessionHolder.withSession(SessionHolder.scala:395)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.connect.execution.ExecuteThreadRunner.executeInternal(ExecuteThreadRunner.scala:197)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.connect.execution.ExecuteThreadRunner.org$apache$spark$sql$connect$execution$ExecuteThreadRunner$$execute(ExecuteThreadRunner.scala:126)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.connect.execution.ExecuteThreadRunner$ExecutionThread.run(ExecuteThreadRunner.scala:334)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;Caused by: java.lang.NullPointerException: Cannot invoke "org.apache.spark.sql.connector.catalog.CatalogPlugin.name()" because "this.delegate" is null&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.connector.catalog.DelegatingCatalogExtension.name(DelegatingCatalogExtension.java:50)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.catalyst.analysis.RelationResolution.toCacheKey(RelationResolution.scala:310)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.catalyst.analysis.RelationResolution.$anonfun$resolveRelation$2(RelationResolution.scala:119)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at scala.Option.orElse(Option.scala:477)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.catalyst.analysis.RelationResolution.resolveRelation(RelationResolution.scala:117)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveRelations$.resolveRelation(Analyzer.scala:1323)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveRelations$$anonfun$apply$12.applyOrElse(Analyzer.scala:1244)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveRelations$$anonfun$apply$12.applyOrElse(Analyzer.scala:1205)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.catalyst.plans.logical.AnalysisHelper.$anonfun$resolveOperatorsUpWithPruning$3(AnalysisHelper.scala:139)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.catalyst.trees.CurrentOrigin$.withOrigin(origin.scala:107)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.catalyst.plans.logical.AnalysisHelper.$anonfun$resolveOperatorsUpWithPruning$1(AnalysisHelper.scala:139)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.catalyst.plans.logical.AnalysisHelper$.allowInvokingTransformsInAnalyzer(AnalysisHelper.scala:416)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.catalyst.plans.logical.AnalysisHelper.resolveOperatorsUpWithPruning(AnalysisHelper.scala:135)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.catalyst.plans.logical.AnalysisHelper.resolveOperatorsUpWithPruning$(AnalysisHelper.scala:131)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.catalyst.plans.logical.LogicalPlan.resolveOperatorsUpWithPruning(LogicalPlan.scala:37)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveRelations$.apply(Analyzer.scala:1205)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveRelations$.apply(Analyzer.scala:1167)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.catalyst.rules.RuleExecutor.$anonfun$execute$2(RuleExecutor.scala:248)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at scala.collection.LinearSeqOps.foldLeft(LinearSeq.scala:183)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at scala.collection.LinearSeqOps.foldLeft$(LinearSeq.scala:179)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at scala.collection.immutable.List.foldLeft(List.scala:79)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.catalyst.rules.RuleExecutor.$anonfun$execute$1(RuleExecutor.scala:245)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.catalyst.rules.RuleExecutor.$anonfun$execute$1$adapted(RuleExecutor.scala:237)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at scala.collection.immutable.List.foreach(List.scala:323)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.catalyst.rules.RuleExecutor.execute(RuleExecutor.scala:237)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.catalyst.analysis.Analyzer.org$apache$spark$sql$catalyst$analysis$Analyzer$$executeSameContext(Analyzer.scala:343)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.catalyst.analysis.Analyzer.$anonfun$execute$1(Analyzer.scala:339)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.catalyst.analysis.AnalysisContext$.withNewAnalysisContext(Analyzer.scala:224)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.catalyst.analysis.Analyzer.execute(Analyzer.scala:339)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.delta.commands.DeltaCommand.resolveIdentifier(DeltaCommand.scala:187)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.delta.commands.DeltaCommand.resolveIdentifier$(DeltaCommand.scala:186)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.delta.commands.ConvertToDeltaCommandBase.resolveIdentifier(ConvertToDeltaCommand.scala:70)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.delta.commands.DeltaCommand.isCatalogTable(DeltaCommand.scala:199)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.delta.commands.DeltaCommand.isCatalogTable$(DeltaCommand.scala:197)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.delta.commands.ConvertToDeltaCommandBase.isCatalogTable(ConvertToDeltaCommand.scala:199)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.delta.commands.ConvertToDeltaCommandBase.resolveConvertTarget(ConvertToDeltaCommand.scala:125)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.delta.commands.ConvertToDeltaCommandBase.run(ConvertToDeltaCommand.scala:97)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.execution.command.ExecutedCommandExec.sideEffectResult$lzycompute(commands.scala:79)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.execution.command.ExecutedCommandExec.sideEffectResult(commands.scala:77)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.execution.command.ExecutedCommandExec.executeCollect(commands.scala:88)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.execution.QueryExecution.$anonfun$eagerlyExecuteCommands$2(QueryExecution.scala:185)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.execution.SQLExecution$.$anonfun$withNewExecutionId0$8(SQLExecution.scala:177)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.execution.SQLExecution$.withSessionTagsApplied(SQLExecution.scala:285)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.execution.SQLExecution$.$anonfun$withNewExecutionId0$7(SQLExecution.scala:139)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.JobArtifactSet$.withActiveJobArtifactState(JobArtifactSet.scala:94)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.artifact.ArtifactManager.$anonfun$withResources$1(ArtifactManager.scala:112)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.util.Utils$.withContextClassLoader(Utils.scala:185)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.artifact.ArtifactManager.withClassLoaderIfNeeded(ArtifactManager.scala:102)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.artifact.ArtifactManager.withResources(ArtifactManager.scala:111)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.execution.SQLExecution$.$anonfun$withNewExecutionId0$6(SQLExecution.scala:139)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.execution.SQLExecution$.withSQLConfPropagated(SQLExecution.scala:308)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.execution.SQLExecution$.$anonfun$withNewExecutionId0$1(SQLExecution.scala:138)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.SparkSession.withActive(SparkSession.scala:804)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.execution.SQLExecution$.withNewExecutionId0(SQLExecution.scala:92)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.execution.SQLExecution$.withNewExecutionId(SQLExecution.scala:250)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.execution.QueryExecution.$anonfun$eagerlyExecuteCommands$1(QueryExecution.scala:185)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.execution.QueryExecution$.withInternalError(QueryExecution.scala:717)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.execution.QueryExecution.org$apache$spark$sql$execution$QueryExecution$$eagerlyExecute$1(QueryExecution.scala:184)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.execution.QueryExecution$$anonfun$eagerlyExecuteCommands$3.applyOrElse(QueryExecution.scala:201)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.execution.QueryExecution$$anonfun$eagerlyExecuteCommands$3.applyOrElse(QueryExecution.scala:194)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.catalyst.trees.TreeNode.$anonfun$transformDownWithPruning$1(TreeNode.scala:491)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.catalyst.trees.CurrentOrigin$.withOrigin(origin.scala:107)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.catalyst.trees.TreeNode.transformDownWithPruning(TreeNode.scala:491)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.catalyst.plans.logical.LogicalPlan.org$apache$spark$sql$catalyst$plans$logical$AnalysisHelper$$super$transformDownWithPruning(LogicalPlan.scala:37)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.catalyst.plans.logical.AnalysisHelper.transformDownWithPruning(AnalysisHelper.scala:360)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.catalyst.plans.logical.AnalysisHelper.transformDownWithPruning$(AnalysisHelper.scala:356)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.catalyst.plans.logical.LogicalPlan.transformDownWithPruning(LogicalPlan.scala:37)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.catalyst.plans.logical.LogicalPlan.transformDownWithPruning(LogicalPlan.scala:37)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.catalyst.trees.TreeNode.transformDown(TreeNode.scala:467)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.execution.QueryExecution.eagerlyExecuteCommands(QueryExecution.scala:194)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.execution.QueryExecution.$anonfun$lazyCommandExecuted$1(QueryExecution.scala:155)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at scala.util.Try$.apply(Try.scala:217)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.util.Utils$.doTryWithCallerStacktrace(Utils.scala:1392)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.util.LazyTry.tryT$lzycompute(LazyTry.scala:46)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.util.LazyTry.tryT(LazyTry.scala:46)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.util.LazyTry.get(LazyTry.scala:58)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.execution.QueryExecution.commandExecuted(QueryExecution.scala:160)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.classic.Dataset.&amp;lt;init&amp;gt;(Dataset.scala:276)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.classic.Dataset$.$anonfun$ofRows$5(Dataset.scala:139)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.SparkSession.withActive(SparkSession.scala:804)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.classic.Dataset$.ofRows(Dataset.scala:135)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.classic.SparkSession.$anonfun$sql$4(SparkSession.scala:584)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.SparkSession.withActive(SparkSession.scala:804)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.classic.SparkSession.sql(SparkSession.scala:561)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.connect.planner.SparkConnectPlanner.executeSQL(SparkConnectPlanner.scala:3148)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.connect.planner.SparkConnectPlanner.handleSqlCommand(SparkConnectPlanner.scala:2996)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.connect.planner.SparkConnectPlanner.process(SparkConnectPlanner.scala:2830)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.connect.execution.SparkConnectPlanExecution.handlePlan(SparkConnectPlanExecution.scala:96)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.connect.execution.ExecuteThreadRunner.$anonfun$executeInternal$1(ExecuteThreadRunner.scala:225)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.connect.execution.ExecuteThreadRunner.$anonfun$executeInternal$1$adapted(ExecuteThreadRunner.scala:197)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.connect.service.SessionHolder.$anonfun$withSession$2(SessionHolder.scala:396)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.SparkSession.withActive(SparkSession.scala:804)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.connect.service.SessionHolder.$anonfun$withSession$1(SessionHolder.scala:396)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.JobArtifactSet$.withActiveJobArtifactState(JobArtifactSet.scala:94)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.artifact.ArtifactManager.$anonfun$withResources$1(ArtifactManager.scala:112)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.util.Utils$.withContextClassLoader(Utils.scala:185)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.artifact.ArtifactManager.withClassLoaderIfNeeded(ArtifactManager.scala:102)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.artifact.ArtifactManager.withResources(ArtifactManager.scala:111)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.connect.service.SessionHolder.withSession(SessionHolder.scala:395)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.connect.execution.ExecuteThreadRunner.executeInternal(ExecuteThreadRunner.scala:197)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.connect.execution.ExecuteThreadRunner.org$apache$spark$sql$connect$execution$ExecuteThreadRunner$$execute(ExecuteThreadRunner.scala:126)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;at org.apache.spark.sql.connect.execution.ExecuteThreadRunner$ExecutionThread.run(ExecuteThreadRunner.scala:334)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;gt;&amp;gt;&amp;gt;&amp;nbsp;&lt;/DIV&gt;&lt;P&gt;```&lt;/P&gt;</description>
      <pubDate>Thu, 12 Mar 2026 08:53:38 GMT</pubDate>
      <guid>https://community.databricks.com/t5/data-engineering/internal-error-occurred-while-converting-iceberg-format-table-to/m-p/150663#M53491</guid>
      <dc:creator>hskimskydd</dc:creator>
      <dc:date>2026-03-12T08:53:38Z</dc:date>
    </item>
    <item>
      <title>Re: INTERNAL_ERROR occurred while converting Iceberg format table to Delta format using Spark</title>
      <link>https://community.databricks.com/t5/data-engineering/internal-error-occurred-while-converting-iceberg-format-table-to/m-p/150963#M53548</link>
      <description>&lt;P&gt;Quick question before diving in: are you running this through Spark Connect? The binary name spark-4.1.1-bin-hadoop3-connect suggests yes, and the stack trace confirms it. The NullPointerException on DelegatingCatalogExtension.name() because “this.delegate” is null points to the Iceberg catalog plugin not initializing on the server side.&lt;BR /&gt;Which version of delta-iceberg jar are you including? This matters because iceberg-spark-runtime has to be compiled against a specific Spark version and this exact pattern has happened before. Delta 2.4.0 docs note that “delta-iceberg is currently not available… since iceberg-spark-runtime does not support Spark 3.4 yet”, and the Delta 4.0.1 release notes explicitly state that “hudi and iceberg are currently not compatible with Spark 4.1, as support depends on upcoming releases.” (github.com/delta-io/delta/releases)&lt;BR /&gt;Does downgrading to Spark 3.5 with Delta 3.3.x change anything?&lt;/P&gt;</description>
      <pubDate>Sun, 15 Mar 2026 06:54:31 GMT</pubDate>
      <guid>https://community.databricks.com/t5/data-engineering/internal-error-occurred-while-converting-iceberg-format-table-to/m-p/150963#M53548</guid>
      <dc:creator>mderela</dc:creator>
      <dc:date>2026-03-15T06:54:31Z</dc:date>
    </item>
    <item>
      <title>Re: INTERNAL_ERROR occurred while converting Iceberg format table to Delta format using Spark</title>
      <link>https://community.databricks.com/t5/data-engineering/internal-error-occurred-while-converting-iceberg-format-table-to/m-p/152154#M53770</link>
      <description>&lt;P&gt;Hi &lt;a href="https://community.databricks.com/t5/user/viewprofilepage/user-id/88707"&gt;@hskimskydd&lt;/a&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks for sharing the full stack trace — that helps a lot.&lt;/P&gt;
&lt;P&gt;What you're seeing looks like a bug at first glance, but there are a few things working together under the surface.&lt;/P&gt;
&lt;P&gt;The NullPointerException coming out of DelegatingCatalogExtension.name() (this.delegate being null) is a strong signal that the Iceberg catalog plugin isn't initializing correctly. That's usually not a simple config issue — it points toward a mismatch between Spark, the Iceberg runtime, and the Delta-Iceberg integration layer.&lt;/P&gt;
&lt;P&gt;Now layer in your environment. You're on Spark 4.1.1 using Spark Connect. That combination isn't fully supported for Delta-Iceberg interoperability right now. Iceberg's Spark runtime hasn't caught up with Spark 4.1 yet, and Delta's Iceberg integration depends on that alignment. When those pieces don't line up, you get exactly what you're seeing — internal errors instead of a clean "not supported" message.&lt;/P&gt;
&lt;P&gt;It naturally follows that the specific pattern you're using — CONVERT TO DELTA against a path-based Iceberg table — is already outside the most stable workflows. Iceberg integrations tend to behave more predictably when they're catalog-driven, and conversion commands are especially sensitive to catalog resolution and metadata alignment. Combine that with an unsupported runtime and things break in non-obvious ways.&lt;/P&gt;
&lt;P&gt;So where does that leave you? A few options worth considering:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;
&lt;P&gt;Move the conversion to a version set where Spark, Delta, and Iceberg are known to work together (Spark 3.5.x with matching runtimes, for example). That alone resolves a lot of these issues.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;If you'd rather stay where you are, skip CONVERT TO DELTA and just rewrite the data:&lt;/P&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;df = spark.read.format("iceberg").load("s3a://…") df.write.format("delta").save("s3a://…/delta-table")&lt;/P&gt;
&lt;P&gt;More explicit, but it gives you full control and sidesteps the fragile integration layer.&lt;/P&gt;
&lt;OL start="3"&gt;
&lt;LI&gt;If Spark 4.1 is a hard requirement, do the conversion in a supported environment and then point your Spark 4.1 workload at the resulting Delta table.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;Bottom line — this isn't a random Spark failure. It's what happens when an unsupported runtime combination meets a conversion path that's already a bit outside the happy path. Line those pieces up and the problem usually goes away.&lt;/P&gt;
&lt;P&gt;Cheers, Louis&lt;/P&gt;</description>
      <pubDate>Thu, 26 Mar 2026 11:22:24 GMT</pubDate>
      <guid>https://community.databricks.com/t5/data-engineering/internal-error-occurred-while-converting-iceberg-format-table-to/m-p/152154#M53770</guid>
      <dc:creator>Louis_Frolio</dc:creator>
      <dc:date>2026-03-26T11:22:24Z</dc:date>
    </item>
  </channel>
</rss>

