【发布时间】:2020-09-18 23:54:31
【问题描述】:
我必须对给定数据库中的所有表执行操作,因此我使用以下代码。
但是,它也给了我视图,有没有一种方法可以只过滤表格?
代码
def getTables(databaseName: String)(implicit spark: SparkSession): Array[String] = {
val tables = spark.sql(s"show tables from ${databaseName}").collect().map(_(1).asInstanceOf[String])
logger.debug(s"${tables.mkString(",")} found")
tables
}
另外,`show views 显示错误"
scala> spark.sql("show views from gshah03;").show
org.apache.spark.sql.catalyst.parser.ParseException:
missing 'FUNCTIONS' at 'from'(line 1, pos 11)
== SQL ==
show views from gshah03;
-----------^^^
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:643)
... 49 elided
【问题讨论】:
-
@LuckyGuess 谢谢,但它不适用于
hive列table type不存在 -
嗯...也许你可以做
show views和show tables除外? -
@LuckyGuess 它显示错误
标签: apache-spark apache-spark-sql