Uploaded image for project: 'Spark'
  1. Spark
  2. SPARK-16329

select * from temp_table_no_cols fails

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 1.6.0, 1.6.1, 1.6.2
    • Fix Version/s: 2.1.0
    • Component/s: SQL
    • Labels:
      None

      Description

      The following works with spark 1.5.1, but not anymore with spark 1.6.0:

      import org.apache.spark.sql.{ DataFrame, Row }
      import org.apache.spark.sql.types.StructType
      
      val rddNoCols = sqlContext.sparkContext.parallelize(1 to 10).map(_ => Row.empty)
      val dfNoCols = sqlContext.createDataFrame(rddNoCols, StructType(Seq.empty))
      
      dfNoCols.registerTempTable("temp_table_no_cols")
      
      sqlContext.sql("select * from temp_table_no_cols").show
      

      spark 1.5.1 result:

      ++
      ||
      ++
      ||
      ||
      ||
      ||
      ||
      ||
      ||
      ||
      ||
      ||
      ++
      

      spark 1.6.0 result:

      java.lang.IllegalArgumentException: requirement failed
              at scala.Predef$.require(Predef.scala:221)
              at org.apache.spark.sql.catalyst.analysis.UnresolvedStar.expand(unresolved.scala:199)
              at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$$anonfun$apply$10$$anonfun$applyOrElse$14.apply(Analyzer.scala:354)
              at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$$anonfun$apply$10$$anonfun$applyOrElse$14.apply(Analyzer.scala:353)
              at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:251)
              at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:251)
              at scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
              at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:47)
              at scala.collection.TraversableLike$class.flatMap(TraversableLike.scala:251)
              at scala.collection.AbstractTraversable.flatMap(Traversable.scala:105)
              at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$$anonfun$apply$10.applyOrElse(Analyzer.scala:353)
              at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$$anonfun$apply$10.applyOrElse(Analyzer.scala:347)
              at org.apache.spark.sql.catalyst.plans.logical.LogicalPlan$$anonfun$resolveOperators$1.apply(LogicalPlan.scala:57)
              at org.apache.spark.sql.catalyst.plans.logical.LogicalPlan$$anonfun$resolveOperators$1.apply(LogicalPlan.scala:57)
              at org.apache.spark.sql.catalyst.trees.CurrentOrigin$.withOrigin(TreeNode.scala:53)
              at org.apache.spark.sql.catalyst.plans.logical.LogicalPlan.resolveOperators(LogicalPlan.scala:56)
              at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$.apply(Analyzer.scala:347)
              at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences$.apply(Analyzer.scala:328)
              at org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$execute$1$$anonfun$apply$1.apply(RuleExecutor.scala:83)
              at org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$execute$1$$anonfun$apply$1.apply(RuleExecutor.scala:80)
              at scala.collection.LinearSeqOptimized$class.foldLeft(LinearSeqOptimized.scala:111)
              at scala.collection.immutable.List.foldLeft(List.scala:84)
              at org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$execute$1.apply(RuleExecutor.scala:80)
              at org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$execute$1.apply(RuleExecutor.scala:72)
              at scala.collection.immutable.List.foreach(List.scala:318)
              at org.apache.spark.sql.catalyst.rules.RuleExecutor.execute(RuleExecutor.scala:72)
              at org.apache.spark.sql.execution.QueryExecution.analyzed$lzycompute(QueryExecution.scala:36)
              at org.apache.spark.sql.execution.QueryExecution.analyzed(QueryExecution.scala:36)
              at org.apache.spark.sql.execution.QueryExecution.assertAnalyzed(QueryExecution.scala:34)
              at org.apache.spark.sql.DataFrame.<init>(DataFrame.scala:133)
              at org.apache.spark.sql.DataFrame$.apply(DataFrame.scala:52)
              at org.apache.spark.sql.SQLContext.sql(SQLContext.scala:817)
              at $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC.<init>(<console>:28)
              at $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC.<init>(<console>:33)
              at $iwC$$iwC$$iwC$$iwC$$iwC$$iwC.<init>(<console>:35)
              at $iwC$$iwC$$iwC$$iwC$$iwC.<init>(<console>:37)
              at $iwC$$iwC$$iwC$$iwC.<init>(<console>:39)
              at $iwC$$iwC$$iwC.<init>(<console>:41)
              at $iwC$$iwC.<init>(<console>:43)
              at $iwC.<init>(<console>:45)
              at <init>(<console>:47)
              at .<init>(<console>:51)
              at .<clinit>(<console>)
              at .<init>(<console>:7)
              at .<clinit>(<console>)
              at $print(<console>)
              at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
              at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
              at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
              at java.lang.reflect.Method.invoke(Method.java:606)
              at org.apache.spark.repl.SparkIMain$ReadEvalPrint.call(SparkIMain.scala:1065)
              at org.apache.spark.repl.SparkIMain$Request.loadAndRun(SparkIMain.scala:1346)
              at org.apache.spark.repl.SparkIMain.loadAndRunReq$1(SparkIMain.scala:840)
              at org.apache.spark.repl.SparkIMain.interpret(SparkIMain.scala:871)
              at org.apache.spark.repl.SparkIMain.interpret(SparkIMain.scala:819)
              at org.apache.spark.repl.SparkILoop.reallyInterpret$1(SparkILoop.scala:857)
              at org.apache.spark.repl.SparkILoop.interpretStartingWith(SparkILoop.scala:902)
              at org.apache.spark.repl.SparkILoop.command(SparkILoop.scala:814)
              at org.apache.spark.repl.SparkILoop.processLine$1(SparkILoop.scala:657)
              at org.apache.spark.repl.SparkILoop.innerLoop$1(SparkILoop.scala:665)
              at org.apache.spark.repl.SparkILoop.org$apache$spark$repl$SparkILoop$$loop(SparkILoop.scala:670)
              at org.apache.spark.repl.SparkILoop$$anonfun$org$apache$spark$repl$SparkILoop$$process$1.apply$mcZ$sp(SparkILoop.scala:997)
              at org.apache.spark.repl.SparkILoop$$anonfun$org$apache$spark$repl$SparkILoop$$process$1.apply(SparkILoop.scala:945)
              at org.apache.spark.repl.SparkILoop$$anonfun$org$apache$spark$repl$SparkILoop$$process$1.apply(SparkILoop.scala:945)
              at scala.tools.nsc.util.ScalaClassLoader$.savingContextLoader(ScalaClassLoader.scala:135)
              at org.apache.spark.repl.SparkILoop.org$apache$spark$repl$SparkILoop$$process(SparkILoop.scala:945)
              at org.apache.spark.repl.SparkILoop.process(SparkILoop.scala:1059)
              at org.apache.spark.repl.Main$.main(Main.scala:31)
              at org.apache.spark.repl.Main.main(Main.scala)
              at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
              at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
              at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
              at java.lang.reflect.Method.invoke(Method.java:606)
              at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:731)
              at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:181)
              at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:206)
              at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:121)
              at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
      

      I can understand why tables with no columns might not be supported in SQL, but in that case I would say that the dfNoCols.registerTempTable() call should fail with a more descriptive error.

        Attachments

          Activity

            People

            • Assignee:
              smilegator Xiao Li
              Reporter:
              i.adri Adrian Ionescu
            • Votes:
              0 Vote for this issue
              Watchers:
              6 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: