Scala Spark 2.4无法使用变量插入记录

Scala Spark 2.4无法使用变量插入记录,scala,apache-spark,Scala,Apache Spark,我试图使用变量将记录插入表中,但失败了 命令: val query = "INSERT into TABLE Feed_metadata_s2 values ('LOGS','RUN_DATE',{} )".format(s"$RUN_DATE") spark.sql(s"query") spark.sql("INSERT into TABLE Feed_metadata_s2 values ('LOGS','ExtractS

我试图使用变量将记录插入表中,但失败了

命令:

val query = "INSERT into TABLE Feed_metadata_s2 values ('LOGS','RUN_DATE',{} )".format(s"$RUN_DATE")
spark.sql(s"query")
spark.sql("INSERT into TABLE Feed_metadata_s2 values ('LOGS','ExtractStartTimestamp',$ExtractStartTimestamp)")
错误:

INSERT into TABLE Feed_metadata_s2 values ('SDEDLOGS','ExtractStartTimestamp',$ExtractStartTimestamp)
------------------------------------------------------------------------------^^^

at org.apache.spark.sql.catalyst.parser.ParseException.withCommand(ParseDriver.scala:241)
at org.apache.spark.sql.catalyst.parser.AbstractSqlParser.parse(ParseDriver.scala:117)
at org.apache.spark.sql.execution.SparkSqlParser.parse(SparkSqlParser.scala:48)
at org.apache.spark.sql.catalyst.parser.AbstractSqlParser.parsePlan(ParseDriver.scala:69)
at org.apache.spark.sql.SparkSession.sql(SparkSession.scala:642)

似乎你对字符串插值感到困惑。。。您需要将
s
放在最后一个查询之前,以便将变量替换到字符串中。前两行也可以简化:

val query = s"INSERT into TABLE Feed_metadata_s2 values ('LOGS','RUN_DATE',$RUN_DATE)"
spark.sql(query)
spark.sql(s"INSERT into TABLE Feed_metadata_s2 values ('LOGS','ExtractStartTimestamp',$ExtractStartTimestamp)")

你好,麦克,谢谢你的建议,它正在按预期工作:)但现在我有另一个问题。每次运行时,只有很少的记录被插入到表中,并创建一个新的拼花文件。这意味着,如果我每天运行这个,就会创建一个新的小文件。我需要避免它。我正在考虑在最后使用插入覆盖和一些合并集命令,但spark不允许插入覆盖。知道如何处理吗?如果你有新问题,请点击“提问”按钮提出新问题。评论部分没有足够的空间回答您的问题。谢谢@拉坦