当存储为字符串变量时,如何执行火花SQL多行查询?



我有这样的多行查询代码

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

----------------------------------------------------^^^

and the end of the query  .... ;    (terminates in a ;)

查询实际上大约有 450 行

我试图将变量包装在三引号中,但这也不起作用。

任何帮助,不胜感激。

我正在使用 Spark 2.1 和 scala 2.11

三个问题:

  • hiveInsertIntoTable是一个Array[org.apache.spark.sql.Row]- 不是很有用的结构。
  • 你只拿它的第一行hiveInsertIntoTable(0)
  • 即使你拿走了所有行,用空字符串(.mkString(连接也不会很好地工作。

也:

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

val actualQuery = spark.sparkContext.wholeTextFiles(path).values.first()

最新更新