Spark - 如何获取Hive视图或表指向的快照名称

时间:2018-05-14 11:27:01

标签: apache-spark hive

在Hive中可以使用命令获取与视图相关的元数据:

show create table myDataBase.myTable

这将返回如下内容:

CREATE VIEW `myDataBase.myTable` AS SELECT `myTable_20170816073203`.`col1`, `myTable_20170816073203`.`col2`, `myTable_20170816073203`.`col3`, `myTable_20170816073203`.`col4`  FROM `myDataBase`.`myTable_20170816073203`

可以从Spark运行Hive查询,以便稍后将结果存储在变量中,执行以下操作:

val metadata =  sqlContext.sql("show create table myDataBase.myTable")

问题是我无法从输出中读取特定字段,这是一个名为result的单列的Dataframe:

org.apache.spark.sql.DataFrame = [result: string]

其中包含与运行配置单元查询时相同的信息:

CREATE VIEW `myDataBase.myTable` AS SELECT `myTable_20170816073203`.`col1`, `myTable_20170816073203`.`col2`, `myTable_20170816073203`.`col3`, `myTable_20170816073203`.`col4`  FROM `myDataBase`.`myTable_20170816073203`

有没有人知道另一种获取视图所指向的快照值的方法?

2 个答案:

答案 0 :(得分:1)

为什么不会

metadata.first.getString(0)

metadata.as[String].first

答案 1 :(得分:0)

基于@ user9787952指出的内容,我发现以下方法可能是解决它。但这可能是实现这一目标的更有效方式。

metadata.as[String].first.split('_').last.dropRight(1)

将返回快照的日期部分

20170816073203