如何使用Spark SQL Scala API(不是SQL)检查Hive表是否为外部表

我正在使用以下代码(Spark SQL Scala API)检查Hive表是否为外部表,但是df.drop("arr_split").show() # Please ignore a and b columns +---+---+--------------+--------------------+ | a| b| abc| QUALIFY2| +---+---+--------------+--------------------+ | 1| 1|col1|col2|col3|'col1','col2','...| | 2| 2|col1|col2|col3|'col1','...| | 3| 3|col1|col2|col3|'col1','...| | 4| 4|col1|col2|col3|'col1','...| | 5| 5|col1|col2|col3|'col1','...| +---+---+--------------+--------------------+ API没有回答给定表是否为外部表的方法。

我问我如何检查Hive表是否是外部表  使用Spark SQL Scala API(而非SQL)

代码是:

Table
yangliang3650880 回答:如何使用Spark SQL Scala API(不是SQL)检查Hive表是否为外部表

您可以使用目录API:

sparkSession.catalog.listTables("db1")
.where($"name"==="t1")
.select($"tableType")
.as[String]
.first

MANAGED表示配置单元托管表,EXTERNAL将是配置单元外部表

,

您可以直接从desc formated检索此信息:

scala> spark.sql("desc formatted db1.t1")
    .filter($"col_name" === "Type")
    .select("data_type")
    .as[String]
    .head
res11: String = EXTERNAL
,

您可以使用show create table命令。然后根据结果确定表类型。

spark.sql("show create table db1.t1").show(false)
本文链接:https://www.f2er.com/3154200.html

大家都在问