sql - 给定 Timestamp 对象作为分区键,如何从 hive-metastore 获取分区路径
问题描述
在 spark 中,有没有办法通过提供 Timstamp 对象来获取分区路径,而不是提供分区键作为字符串?
我知道我们可以通过运行以下查询来获取分区路径:
val x = "date='2019-08-06 23:48:32.113'"
spark.sql(s"describe extended hospitaltest partition (${x})")
但上述查询需要将分区键作为字符串。
解决方案
我不知道它是否为 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'
推荐阅读
- string - 编写一个 Dart 程序,检查一个字符串是否是 dart 中的有效密码
- python - 如何仅显示条形图matplotlib的轮廓
- java - 在枚举列类型上休眠@Filter
- reactjs - React useState 钩子没有显示正确的数组状态
- haskell - Debug GHC 编译错误在运行时由提示的 `Language.Haskell.Interpreter.runInterpreter` 返回
- unity3d - Rider 似乎不认识 Unity 项目
- java - 是否有一种简单的方法可以仅使用 SceneBuilder 在 JavaFX 中设置随窗口大小而增长/缩小的图像?
- node.js - 远程调试 node.js 应用,Chrome DevTools 检查设备丢失
- php - 在 cPanel 帐户中一起运行 PHP 和 Nodejs 应用程序
- windows - 选择字符串命令中两次选择的原因