尝试将 Spark DF 写入 Hive 时出错 "Invalid call to qualifier on unresolved object" table

Error "Invalid call to qualifier on unresolved object" when trying to write a Spark DF into a Hive table

我在尝试将特定的 Spark DataFrame 写入 Hive 时出现错误“Invalid call to qualifier on unresolved object, tree: 'date1”table。

我使用的是 Spark 2.4.0,但也在 Spark 2.4.3 中进行了测试,结果相同。

我知道如何避免错误,但是这些方法中的 none 是预期的解决方案,因为它以某种方式修改了 table:

除了删除date1列,其他方法对我来说都没有意义。我不明白为什么通过应用这些选项中的任何一个来解决问题。

这是 Scala 示例代码 以重现错误:

// Create a sample dataframe
import spark.implicits._
val df = Seq(("",
              "",
              false,
              "",
              "2019-07-01"))
    .toDF("text1",
          "text2",
          "boolean1",
          "text3",
          "date1")

// df schema:
df.printSchema
root
 |-- text1: string (nullable = true)
 |-- text2: string (nullable = true)
 |-- boolean1: boolean (nullable = false)
 |-- text3: string (nullable = true)
 |-- date1: string (nullable = true)

// Create the related hive table
spark.sql("drop table if exists table_sample")
spark.sql("""CREATE TABLE `table_sample` (
    `text1` STRING,
    `text2` STRING, 
    `boolean1` BOOLEAN, 
    `text3` STRING,
    `date1` DATE
    )
USING ORC
PARTITIONED BY (text1, text2)
""")

// Write the sample dataframe to the hive table
df.write
      .mode("overwrite")
      .format("orc")
      .insertInto("table_sample")

我希望 table 可以在没有错误的情况下创建,并且不需要更改 table 架构(不重命名列、更改列类型或将列移动到另一个位置)。

这是完整的堆栈跟踪:

org.apache.spark.sql.catalyst.analysis.UnresolvedException: Invalid call to qualifier on unresolved object, tree: 'trx_business_day_date
    at org.apache.spark.sql.catalyst.analysis.UnresolvedAttribute.qualifier(unresolved.scala:107)
    at org.apache.spark.sql.catalyst.expressions.package$AttributeSeq$$anonfun.apply(package.scala:155)
    at org.apache.spark.sql.catalyst.expressions.package$AttributeSeq$$anonfun.apply(package.scala:155)
    at scala.collection.TraversableLike$$anonfun$filterImpl.apply(TraversableLike.scala:248)
    at scala.collection.immutable.List.foreach(List.scala:381)
    at scala.collection.TraversableLike$class.filterImpl(TraversableLike.scala:247)
    at scala.collection.TraversableLike$class.filter(TraversableLike.scala:259)
    at scala.collection.AbstractTraversable.filter(Traversable.scala:104)
    at org.apache.spark.sql.catalyst.expressions.package$AttributeSeq.<init>(package.scala:155)
    at org.apache.spark.sql.catalyst.expressions.package$.AttributeSeq(package.scala:98)
    at org.apache.spark.sql.catalyst.plans.logical.LogicalPlan.outputAttributes$lzycompute(LogicalPlan.scala:93)
    at org.apache.spark.sql.catalyst.plans.logical.LogicalPlan.outputAttributes(LogicalPlan.scala:93)
    at org.apache.spark.sql.catalyst.plans.logical.LogicalPlan.resolve(LogicalPlan.scala:113)
    at org.apache.spark.sql.catalyst.plans.logical.LogicalPlan$$anonfun$resolve.apply(LogicalPlan.scala:81)
    at org.apache.spark.sql.catalyst.plans.logical.LogicalPlan$$anonfun$resolve.apply(LogicalPlan.scala:80)
    at scala.collection.TraversableLike$$anonfun$map.apply(TraversableLike.scala:234)
    at scala.collection.TraversableLike$$anonfun$map.apply(TraversableLike.scala:234)
    at scala.collection.Iterator$class.foreach(Iterator.scala:893)
    at scala.collection.AbstractIterator.foreach(Iterator.scala:1336)
    at scala.collection.IterableLike$class.foreach(IterableLike.scala:72)
    at org.apache.spark.sql.types.StructType.foreach(StructType.scala:99)
    at scala.collection.TraversableLike$class.map(TraversableLike.scala:234)
    at org.apache.spark.sql.types.StructType.map(StructType.scala:99)
    at org.apache.spark.sql.catalyst.plans.logical.LogicalPlan.resolve(LogicalPlan.scala:80)
    at org.apache.spark.sql.execution.datasources.DataSourceAnalysis$$anonfun$apply.applyOrElse(DataSourceStrategy.scala:198)
    at org.apache.spark.sql.execution.datasources.DataSourceAnalysis$$anonfun$apply.applyOrElse(DataSourceStrategy.scala:136)
    at org.apache.spark.sql.catalyst.plans.logical.AnalysisHelper$$anonfun$resolveOperatorsDown$$anonfun.apply(AnalysisHelper.scala:108)
    at org.apache.spark.sql.catalyst.plans.logical.AnalysisHelper$$anonfun$resolveOperatorsDown$$anonfun.apply(AnalysisHelper.scala:108)
    at org.apache.spark.sql.catalyst.trees.CurrentOrigin$.withOrigin(TreeNode.scala:77)
    at org.apache.spark.sql.catalyst.plans.logical.AnalysisHelper$$anonfun$resolveOperatorsDown.apply(AnalysisHelper.scala:107)
    at org.apache.spark.sql.catalyst.plans.logical.AnalysisHelper$$anonfun$resolveOperatorsDown.apply(AnalysisHelper.scala:106)
    at org.apache.spark.sql.catalyst.plans.logical.AnalysisHelper$.allowInvokingTransformsInAnalyzer(AnalysisHelper.scala:194)
    at org.apache.spark.sql.catalyst.plans.logical.AnalysisHelper$class.resolveOperatorsDown(AnalysisHelper.scala:106)
    at org.apache.spark.sql.catalyst.plans.logical.LogicalPlan.resolveOperatorsDown(LogicalPlan.scala:29)
    at org.apache.spark.sql.catalyst.plans.logical.AnalysisHelper$class.resolveOperators(AnalysisHelper.scala:73)
    at org.apache.spark.sql.catalyst.plans.logical.LogicalPlan.resolveOperators(LogicalPlan.scala:29)
    at org.apache.spark.sql.execution.datasources.DataSourceAnalysis.apply(DataSourceStrategy.scala:136)
    at org.apache.spark.sql.execution.datasources.DataSourceAnalysis.apply(DataSourceStrategy.scala:54)
    at org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$execute$$anonfun$apply.apply(RuleExecutor.scala:105)
    at org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$execute$$anonfun$apply.apply(RuleExecutor.scala:102)
    at scala.collection.LinearSeqOptimized$class.foldLeft(LinearSeqOptimized.scala:124)
    at scala.collection.immutable.List.foldLeft(List.scala:84)
    at org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$execute.apply(RuleExecutor.scala:102)
    at org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$execute.apply(RuleExecutor.scala:94)
    at scala.collection.immutable.List.foreach(List.scala:381)
    at org.apache.spark.sql.catalyst.rules.RuleExecutor.execute(RuleExecutor.scala:94)
    at org.apache.spark.sql.catalyst.analysis.Analyzer.org$apache$spark$sql$catalyst$analysis$Analyzer$$executeSameContext(Analyzer.scala:136)
    at org.apache.spark.sql.catalyst.analysis.Analyzer.execute(Analyzer.scala:130)
    at org.apache.spark.sql.catalyst.analysis.Analyzer.execute(Analyzer.scala:102)
    at org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$executeAndTrack.apply(RuleExecutor.scala:80)
    at org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$executeAndTrack.apply(RuleExecutor.scala:80)
    at org.apache.spark.sql.catalyst.QueryPlanningTracker$.withTracker(QueryPlanningTracker.scala:88)
    at org.apache.spark.sql.catalyst.rules.RuleExecutor.executeAndTrack(RuleExecutor.scala:79)
    at org.apache.spark.sql.catalyst.analysis.Analyzer$$anonfun$executeAndCheck.apply(Analyzer.scala:114)
    at org.apache.spark.sql.catalyst.analysis.Analyzer$$anonfun$executeAndCheck.apply(Analyzer.scala:113)
    at org.apache.spark.sql.catalyst.plans.logical.AnalysisHelper$.markInAnalyzer(AnalysisHelper.scala:201)
    at org.apache.spark.sql.catalyst.analysis.Analyzer.executeAndCheck(Analyzer.scala:113)
    at org.apache.spark.sql.execution.QueryExecution$$anonfun$analyzed.apply(QueryExecution.scala:82)
    at org.apache.spark.sql.execution.QueryExecution$$anonfun$analyzed.apply(QueryExecution.scala:80)
    at org.apache.spark.sql.catalyst.QueryPlanningTracker.measurePhase(QueryPlanningTracker.scala:111)
    at org.apache.spark.sql.execution.QueryExecution.analyzed$lzycompute(QueryExecution.scala:80)
    at org.apache.spark.sql.execution.QueryExecution.analyzed(QueryExecution.scala:80)
    at org.apache.spark.sql.execution.QueryExecution.org$apache$spark$sql$execution$QueryExecution$$output(QueryExecution.scala:249)
    at org.apache.spark.sql.execution.QueryExecution$$anonfun.apply(QueryExecution.scala:251)
    at org.apache.spark.sql.execution.QueryExecution$$anonfun.apply(QueryExecution.scala:251)
    at org.apache.spark.sql.execution.QueryExecution.stringOrError(QueryExecution.scala:144)
    at org.apache.spark.sql.execution.QueryExecution.toString(QueryExecution.scala:251)
    at org.apache.spark.sql.execution.SQLExecution$$anonfun$withCustomExecutionEnv.apply(SQLExecution.scala:90)
    at org.apache.spark.sql.execution.SQLExecution$.withSQLConfPropagated(SQLExecution.scala:228)
    at org.apache.spark.sql.execution.SQLExecution$.withCustomExecutionEnv(SQLExecution.scala:85)
    at org.apache.spark.sql.execution.SQLExecution$.withNewExecutionId(SQLExecution.scala:158)
    at org.apache.spark.sql.DataFrameWriter.runCommand(DataFrameWriter.scala:690)
    at org.apache.spark.sql.DataFrameWriter.insertInto(DataFrameWriter.scala:339)
    at org.apache.spark.sql.DataFrameWriter.insertInto(DataFrameWriter.scala:325)
    at line694971ab74ea4d1382bf12d864e23292142.$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw.<init>(command-1106698602130938:9)
    at line694971ab74ea4d1382bf12d864e23292142.$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw.<init>(command-1106698602130938:134)
    at line694971ab74ea4d1382bf12d864e23292142.$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw.<init>(command-1106698602130938:136)
    at line694971ab74ea4d1382bf12d864e23292142.$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw.<init>(command-1106698602130938:138)
    at line694971ab74ea4d1382bf12d864e23292142.$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw.<init>(command-1106698602130938:140)
    at line694971ab74ea4d1382bf12d864e23292142.$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw.<init>(command-1106698602130938:142)
    at line694971ab74ea4d1382bf12d864e23292142.$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw.<init>(command-1106698602130938:144)
    at line694971ab74ea4d1382bf12d864e23292142.$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw.<init>(command-1106698602130938:146)
    at line694971ab74ea4d1382bf12d864e23292142.$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw.<init>(command-1106698602130938:148)
    at line694971ab74ea4d1382bf12d864e23292142.$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw.<init>(command-1106698602130938:150)
    at line694971ab74ea4d1382bf12d864e23292142.$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw.<init>(command-1106698602130938:152)
    at line694971ab74ea4d1382bf12d864e23292142.$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw.<init>(command-1106698602130938:154)
    at line694971ab74ea4d1382bf12d864e23292142.$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw.<init>(command-1106698602130938:156)
    at line694971ab74ea4d1382bf12d864e23292142.$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw.<init>(command-1106698602130938:158)
    at line694971ab74ea4d1382bf12d864e23292142.$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw.<init>(command-1106698602130938:160)
    at line694971ab74ea4d1382bf12d864e23292142.$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw.<init>(command-1106698602130938:162)
    at line694971ab74ea4d1382bf12d864e23292142.$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw.<init>(command-1106698602130938:164)
    at line694971ab74ea4d1382bf12d864e23292142.$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw.<init>(command-1106698602130938:166)
    at line694971ab74ea4d1382bf12d864e23292142.$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw.<init>(command-1106698602130938:168)
    at line694971ab74ea4d1382bf12d864e23292142.$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw.<init>(command-1106698602130938:170)
    at line694971ab74ea4d1382bf12d864e23292142.$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw.<init>(command-1106698602130938:172)
    at line694971ab74ea4d1382bf12d864e23292142.$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw.<init>(command-1106698602130938:174)
    at line694971ab74ea4d1382bf12d864e23292142.$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw.<init>(command-1106698602130938:176)
    at line694971ab74ea4d1382bf12d864e23292142.$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw.<init>(command-1106698602130938:178)
    at line694971ab74ea4d1382bf12d864e23292142.$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw.<init>(command-1106698602130938:180)
    at line694971ab74ea4d1382bf12d864e23292142.$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw.<init>(command-1106698602130938:182)
    at line694971ab74ea4d1382bf12d864e23292142.$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw.<init>(command-1106698602130938:184)
    at line694971ab74ea4d1382bf12d864e23292142.$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw.<init>(command-1106698602130938:186)
    at line694971ab74ea4d1382bf12d864e23292142.$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw.<init>(command-1106698602130938:188)
    at line694971ab74ea4d1382bf12d864e23292142.$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw.<init>(command-1106698602130938:190)
    at line694971ab74ea4d1382bf12d864e23292142.$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw.<init>(command-1106698602130938:192)
    at line694971ab74ea4d1382bf12d864e23292142.$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw.<init>(command-1106698602130938:194)
    at line694971ab74ea4d1382bf12d864e23292142.$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw.<init>(command-1106698602130938:196)
    at line694971ab74ea4d1382bf12d864e23292142.$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw.<init>(command-1106698602130938:198)
    at line694971ab74ea4d1382bf12d864e23292142.$read$$iw$$iw$$iw$$iw$$iw$$iw.<init>(command-1106698602130938:200)
    at line694971ab74ea4d1382bf12d864e23292142.$read$$iw$$iw$$iw$$iw$$iw.<init>(command-1106698602130938:202)
    at line694971ab74ea4d1382bf12d864e23292142.$read$$iw$$iw$$iw$$iw.<init>(command-1106698602130938:204)
    at line694971ab74ea4d1382bf12d864e23292142.$read$$iw$$iw$$iw.<init>(command-1106698602130938:206)
    at line694971ab74ea4d1382bf12d864e23292142.$read$$iw$$iw.<init>(command-1106698602130938:208)
    at line694971ab74ea4d1382bf12d864e23292142.$read$$iw.<init>(command-1106698602130938:210)
    at line694971ab74ea4d1382bf12d864e23292142.$read.<init>(command-1106698602130938:212)
    at line694971ab74ea4d1382bf12d864e23292142.$read$.<init>(command-1106698602130938:216)
    at line694971ab74ea4d1382bf12d864e23292142.$read$.<clinit>(command-1106698602130938)
    at line694971ab74ea4d1382bf12d864e23292142.$eval$.$print$lzycompute(<notebook>:7)
    at line694971ab74ea4d1382bf12d864e23292142.$eval$.$print(<notebook>:6)
    at line694971ab74ea4d1382bf12d864e23292142.$eval.$print(<notebook>)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at scala.tools.nsc.interpreter.IMain$ReadEvalPrint.call(IMain.scala:786)
    at scala.tools.nsc.interpreter.IMain$Request.loadAndRun(IMain.scala:1047)
    at scala.tools.nsc.interpreter.IMain$WrappedRequest$$anonfun$loadAndRunReq.apply(IMain.scala:638)
    at scala.tools.nsc.interpreter.IMain$WrappedRequest$$anonfun$loadAndRunReq.apply(IMain.scala:637)
    at scala.reflect.internal.util.ScalaClassLoader$class.asContext(ScalaClassLoader.scala:31)
    at scala.reflect.internal.util.AbstractFileClassLoader.asContext(AbstractFileClassLoader.scala:19)
    at scala.tools.nsc.interpreter.IMain$WrappedRequest.loadAndRunReq(IMain.scala:637)
    at scala.tools.nsc.interpreter.IMain.interpret(IMain.scala:569)
    at scala.tools.nsc.interpreter.IMain.interpret(IMain.scala:565)
    at com.databricks.backend.daemon.driver.DriverILoop.execute(DriverILoop.scala:199)
    at com.databricks.backend.daemon.driver.ScalaDriverLocal$$anonfun$repl.apply$mcV$sp(ScalaDriverLocal.scala:189)
    at com.databricks.backend.daemon.driver.ScalaDriverLocal$$anonfun$repl.apply(ScalaDriverLocal.scala:189)
    at com.databricks.backend.daemon.driver.ScalaDriverLocal$$anonfun$repl.apply(ScalaDriverLocal.scala:189)
    at com.databricks.backend.daemon.driver.DriverLocal$TrapExitInternal$.trapExit(DriverLocal.scala:587)
    at com.databricks.backend.daemon.driver.DriverLocal$TrapExit$.apply(DriverLocal.scala:542)
    at com.databricks.backend.daemon.driver.ScalaDriverLocal.repl(ScalaDriverLocal.scala:189)
    at com.databricks.backend.daemon.driver.DriverLocal$$anonfun$execute.apply(DriverLocal.scala:324)
    at com.databricks.backend.daemon.driver.DriverLocal$$anonfun$execute.apply(DriverLocal.scala:304)
    at com.databricks.logging.UsageLogging$$anonfun$withAttributionContext.apply(UsageLogging.scala:235)
    at scala.util.DynamicVariable.withValue(DynamicVariable.scala:58)
    at com.databricks.logging.UsageLogging$class.withAttributionContext(UsageLogging.scala:230)
    at com.databricks.backend.daemon.driver.DriverLocal.withAttributionContext(DriverLocal.scala:45)
    at com.databricks.logging.UsageLogging$class.withAttributionTags(UsageLogging.scala:268)
    at com.databricks.backend.daemon.driver.DriverLocal.withAttributionTags(DriverLocal.scala:45)
    at com.databricks.backend.daemon.driver.DriverLocal.execute(DriverLocal.scala:304)
    at com.databricks.backend.daemon.driver.DriverWrapper$$anonfun$tryExecutingCommand.apply(DriverWrapper.scala:589)
    at com.databricks.backend.daemon.driver.DriverWrapper$$anonfun$tryExecutingCommand.apply(DriverWrapper.scala:589)
    at scala.util.Try$.apply(Try.scala:192)
    at com.databricks.backend.daemon.driver.DriverWrapper.tryExecutingCommand(DriverWrapper.scala:584)
    at com.databricks.backend.daemon.driver.DriverWrapper.getCommandOutputAndError(DriverWrapper.scala:475)
    at com.databricks.backend.daemon.driver.DriverWrapper.executeCommand(DriverWrapper.scala:542)
    at com.databricks.backend.daemon.driver.DriverWrapper.runInnerLoop(DriverWrapper.scala:381)
    at com.databricks.backend.daemon.driver.DriverWrapper.runInner(DriverWrapper.scala:328)
    at com.databricks.backend.daemon.driver.DriverWrapper.run(DriverWrapper.scala:215)
    at java.lang.Thread.run(Thread.java:748)

有人知道如何在不更改 df/table 架构的情况下解决问题吗?会不会是 Spark 错误?

提前致谢!

真正的问题是您的代码试图在 date1 列中插入布尔值 'false',其中 date1 是 'Date' 类型。

您的问题的解决方案是将分区列移动为数据帧 df 中的最后两列。 由于 spark 的 .insertInto() 方法将最后一列视为分区列。它不会在数据框中的列名上匹配它,而是在基于索引的列映射上工作。

下面的 df 在不改变 table 结构的情况下完美运行。

val df = Seq(( false,"","2019-07-01","", ""))
  .toDF(
    "boolean1", "text3", "date1", "text1", "text2")

查询:"Show create table table_sample" 结果为

CREATE TABLE `table_sample` (`boolean1` BOOLEAN, `text3` STRING, `date1` DATE, `text1` STRING, `text2` STRING)
USING ORC
OPTIONS (
`serialization.format` '1'
)
PARTITIONED BY (text1, text2)

所以根据上面的 table 结构和你的数据框 df,spark 完成的映射将是:

`boolean1` BOOLEAN = "" 
`text3` STRING     = ""
`date1` DATE       = false         --> Issue is this mapping
`text1` STRING     = ""
`text2` STRING     = "2019-07-01"

它也可能是 Spark 错误,因为它应该在日期字段中插入 null 而不是抛出错误。