在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`
有没有人知道另一种获取视图所指向的快照值的方法?
答案 0 :(得分:1)
为什么不会
metadata.first.getString(0)
或
metadata.as[String].first
答案 1 :(得分:0)
基于@ user9787952指出的内容,我发现以下方法可能是解决它。但这可能是实现这一目标的更有效方式。
metadata.as[String].first.split('_').last.dropRight(1)
将返回快照的日期部分
20170816073203