首页 > 解决方案 > 给定 Timestamp 对象作为分区键,如何从 hive-metastore 获取分区路径

问题描述

在 spark 中,有没有办法通过提供 Timstamp 对象来获取分区路径,而不是提供分区键作为字符串?

我知道我们可以通过运行以下查询来获取分区路径:

val x = "date='2019-08-06 23:48:32.113'"
spark.sql(s"describe extended hospitaltest partition (${x})")

但上述查询需要将分区键作为字符串。

标签: sqlscalaapache-sparkhivehive-metastore

解决方案


我不知道它是否为 spark 正确编写了查询,但作为您问题的一部分,下一个查询从 hive 元存储(存储在 mysql 中)返回分区的位置:

SELECT 
      location 
    FROM 
      hive.DBS 
    LEFT JOIN hive.TBLS 
    ON 
      ( 
        DBS.DB_ID       = TBLS.DB_ID 
      AND upper(TBLS.tbl_name) = 'CG_CRDSTDLVRS_RAW' 
      ) 
    LEFT JOIN hive.PARTITIONS 
    ON 
      ( 
        TBLS.TBL_ID = PARTITIONS.TBL_ID 
      AND PARTITIONS.PART_NAME LIKE '%2018-09-15%' 
      ) 
    LEFT JOIN hive.SDS 
    ON 
      ( 
        PARTITIONS.SD_ID = SDS.SD_ID 
      ) 
    WHERE 
      upper(DBS.name)='RAW_FAT01'

推荐阅读