Scala 当存储为字符串变量时,如何执行spark sql多行查询?

Scala 当存储为字符串变量时,如何执行spark sql多行查询?,scala,apache-spark,apache-spark-sql,hiveql,Scala,Apache Spark,Apache Spark Sql,Hiveql,我有这样的多行查询代码 val hiveInsertIntoTable = spark.read.text(fileQuery).collect() hiveInsertIntoTable.foreach(println) val actualQuery = hiveInsertIntoTable(0).mkString println(actualQuery) spark.sql(s"truncate table $tableTruncate") spark.sq

我有这样的多行查询代码

  val hiveInsertIntoTable = spark.read.text(fileQuery).collect()
  hiveInsertIntoTable.foreach(println)

  val actualQuery = hiveInsertIntoTable(0).mkString
  println(actualQuery)


  spark.sql(s"truncate table $tableTruncate")
  spark.sql(actualQuery)
每当我试图执行实际的查询时,我都会得到一个错误

org.apache.spark.sql.catalyst.parser.ParseException:
no viable alternative at input '<EOF>'(line 1, pos 52)
== SQL ==
insert into wera_tacotv_esd.lac_asset_table_pb_hive
这个查询实际上大约有450行

我试图用三个引号将变量括起来,但也没用

感谢您的帮助

我正在使用spark 2.1和scala 2.11解决三个问题:

  • hiveInsertIntoTable
    是一个
    数组[org.apache.spark.sql.Row]
    -不是很有用的结构
  • 您只获取它的第一行
    hiveInsertIntoTable(0)
  • 即使获取所有行,使用空字符串(
    .mkString
    )进行连接也不会很好
要么:

val actualQuery = spark.read.text(path).as[String].collect.mkString("\n")


我们需要查看此查询。。。至少它的前53个字符…你是对的ronhash错误是当前anser和我有一个;在查询的末尾
val actualQuery = spark.read.text(path).as[String].collect.mkString("\n")
val actualQuery = spark.sparkContext.wholeTextFiles(path).values.first()