[ 
https://issues.apache.org/jira/browse/SPARK-47957?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Christos Karras updated SPARK-47957:
------------------------------------
    Priority: Minor  (was: Major)

> pyspark.pandas.read_excel can't get _metadata because it causes a "max 
> iterations reached for batch Resolution" error
> ---------------------------------------------------------------------------------------------------------------------
>
>                 Key: SPARK-47957
>                 URL: https://issues.apache.org/jira/browse/SPARK-47957
>             Project: Spark
>          Issue Type: Bug
>          Components: Pandas API on Spark
>    Affects Versions: 3.5.1
>            Reporter: Christos Karras
>            Priority: Minor
>
> I'm trying to add _metadata.file_path to a Spark DataFrame that was read from 
> Excel files using ps.read_excel, but it causes this error: "Max iterations 
> (100) reached for batch Resolution, please set 
> 'spark.sql.analyzer.maxIterations' to a larger value". Increasing 
> spark.sql.analyzer.maxIterations to larger values does not resolve the error, 
> it just increases the execution time more and more as I try larger values.
>  
> Excel files are fairly simple (1 sheet, 8 columns, 2000 rows) and there are 
> only a few files (5)
>  
> Sample code to reproduce:
> ```python
> import pyspark.pandas as ps
> from pyspark.sql import DataFrame
> from pyspark.sql.functions import col, lit
>  
> adls_full_path: str = 
> f"abfss://contai...@azurestorageaccountname.dfs.core.windows.net/path/2024-04-01/filenamewithwildcards*.xlsx"
>  
> input_df: DataFrame = (
>     ps
>     .read_excel(adls_full_path)
>     .to_spark()
>     .withColumn("metadata_file_path", col("_metadata.file_path"))
> )
> ```
>  
> This code will raise the following error on .withColumn("metadata_file_path", 
> col("_metadata.file_path")):
> ``
> Py4JJavaError: An error occurred while calling o1835.withColumn. : 
> java.lang.RuntimeException: Max iterations (100) reached for batch 
> Resolution, please set 'spark.sql.analyzer.maxIterations' to a larger value. 
> at 
> org.apache.spark.sql.catalyst.rules.RuleExecutor.$anonfun$execute$2(RuleExecutor.scala:352)
>  at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23) at 
> com.databricks.spark.util.FrameProfiler$.record(FrameProfiler.scala:94) at 
> org.apache.spark.sql.catalyst.rules.RuleExecutor.executeBatch$1(RuleExecutor.scala:289)
>  at 
> org.apache.spark.sql.catalyst.rules.RuleExecutor.$anonfun$execute$9(RuleExecutor.scala:382)
>  at 
> org.apache.spark.sql.catalyst.rules.RuleExecutor.$anonfun$execute$9$adapted(RuleExecutor.scala:382)
>  at scala.collection.immutable.List.foreach(List.scala:431) at 
> org.apache.spark.sql.catalyst.rules.RuleExecutor.$anonfun$execute$1(RuleExecutor.scala:382)
>  at com.databricks.spark.util.FrameProfiler$.record(FrameProfiler.scala:94) 
> at 
> org.apache.spark.sql.catalyst.rules.RuleExecutor.execute(RuleExecutor.scala:256)
>  at 
> org.apache.spark.sql.catalyst.analysis.Analyzer.executeSameContext(Analyzer.scala:415)
>  at 
> org.apache.spark.sql.catalyst.analysis.Analyzer.$anonfun$execute$1(Analyzer.scala:408)
>  at 
> org.apache.spark.sql.catalyst.analysis.AnalysisContext$.withNewAnalysisContext(Analyzer.scala:322)
>  at 
> org.apache.spark.sql.catalyst.analysis.Analyzer.execute(Analyzer.scala:408) 
> at 
> org.apache.spark.sql.catalyst.analysis.Analyzer.execute(Analyzer.scala:341) 
> at 
> org.apache.spark.sql.catalyst.rules.RuleExecutor.$anonfun$executeAndTrack$1(RuleExecutor.scala:248)
>  at 
> org.apache.spark.sql.catalyst.QueryPlanningTracker$.withTracker(QueryPlanningTracker.scala:166)
>  at 
> org.apache.spark.sql.catalyst.rules.RuleExecutor.executeAndTrack(RuleExecutor.scala:248)
>  at 
> org.apache.spark.sql.catalyst.analysis.Analyzer.$anonfun$executeAndCheck$1(Analyzer.scala:393)
>  at 
> org.apache.spark.sql.catalyst.plans.logical.AnalysisHelper$.markInAnalyzer(AnalysisHelper.scala:407)
>  at 
> org.apache.spark.sql.catalyst.analysis.Analyzer.executeAndCheck(Analyzer.scala:392)
>  at 
> org.apache.spark.sql.execution.QueryExecution.$anonfun$analyzed$1(QueryExecution.scala:244)
>  at com.databricks.spark.util.FrameProfiler$.record(FrameProfiler.scala:94) 
> at 
> org.apache.spark.sql.catalyst.QueryPlanningTracker.measurePhase(QueryPlanningTracker.scala:394)
>  at 
> org.apache.spark.sql.execution.QueryExecution.$anonfun$executePhase$4(QueryExecution.scala:573)
>  at 
> org.apache.spark.sql.execution.QueryExecution$.withInternalError(QueryExecution.scala:1079)
>  at 
> org.apache.spark.sql.execution.QueryExecution.$anonfun$executePhase$2(QueryExecution.scala:573)
>  at 
> com.databricks.util.LexicalThreadLocal$Handle.runWith(LexicalThreadLocal.scala:63)
>  at 
> org.apache.spark.sql.execution.QueryExecution.$anonfun$executePhase$1(QueryExecution.scala:569)
>  at org.apache.spark.sql.SparkSession.withActive(SparkSession.scala:1175) at 
> org.apache.spark.sql.execution.QueryExecution.executePhase(QueryExecution.scala:569)
>  at 
> org.apache.spark.sql.execution.QueryExecution.analyzed$lzycompute(QueryExecution.scala:238)
>  at 
> org.apache.spark.sql.execution.QueryExecution.analyzed(QueryExecution.scala:237)
>  at 
> org.apache.spark.sql.execution.QueryExecution.assertAnalyzed(QueryExecution.scala:219)
>  at org.apache.spark.sql.Dataset$.$anonfun$ofRows$1(Dataset.scala:102) at 
> org.apache.spark.sql.SparkSession.withActive(SparkSession.scala:1175) at 
> org.apache.spark.sql.SparkSession.$anonfun$withActiveAndFrameProfiler$1(SparkSession.scala:1182)
>  at com.databricks.spark.util.FrameProfiler$.record(FrameProfiler.scala:94) 
> at 
> org.apache.spark.sql.SparkSession.withActiveAndFrameProfiler(SparkSession.scala:1182)
>  at org.apache.spark.sql.Dataset$.ofRows(Dataset.scala:100) at 
> org.apache.spark.sql.Dataset.$anonfun$org$apache$spark$sql$Dataset$$withPlan$1(Dataset.scala:4739)
>  at com.databricks.spark.util.FrameProfiler$.record(FrameProfiler.scala:94) 
> at 
> org.apache.spark.sql.Dataset.org$apache$spark$sql$Dataset$$withPlan(Dataset.scala:4739)
>  at org.apache.spark.sql.Dataset.select(Dataset.scala:1647) at 
> org.apache.spark.sql.Dataset.$anonfun$withColumns$1(Dataset.scala:2922) at 
> com.databricks.spark.util.FrameProfiler$.record(FrameProfiler.scala:94) at 
> org.apache.spark.sql.Dataset.withColumns(Dataset.scala:2896) at 
> org.apache.spark.sql.Dataset.withColumn(Dataset.scala:2860) at 
> sun.reflect.GeneratedMethodAccessor635.invoke(Unknown Source) at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>  at java.lang.reflect.Method.invoke(Method.java:498) at 
> py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244) at 
> py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:397) at 
> py4j.Gateway.invoke(Gateway.java:306) at 
> py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132) at 
> py4j.commands.CallCommand.execute(CallCommand.java:79) at 
> py4j.ClientServerConnection.waitForCommands(ClientServerConnection.java:199) 
> at py4j.ClientServerConnection.run(ClientServerConnection.java:119) at 
> java.lang.Thread.run(Thread.java:750)
> ```



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@spark.apache.org
For additional commands, e-mail: issues-h...@spark.apache.org

Reply via email to