Hive 在另一个查询中使用配置单元/黑斑羚查询的结果

Hive 在另一个查询中使用配置单元/黑斑羚查询的结果,hive,impala,hue,Hive,Impala,Hue,我正在使用hive/impala,我经常遇到需要查询show分区的结果才能获得特定分区的情况。假设我有一个表tbl1按字段country和date分区。所以,show partitions tbl1会产生类似的结果 country=c1/date=d1 country=c1/date=d3 country=c2/date=d2 我想做一些类似于select*from(show partitions tbl1)a其中a.country='c1'的事情,我想在色调或外壳(蜂巢和黑斑羚)中这样做。

我正在使用hive/impala,我经常遇到需要查询
show分区的结果才能获得特定分区的情况。假设我有一个表
tbl1
按字段
country
date
分区。所以,
show partitions tbl1
会产生类似的结果

country=c1/date=d1
country=c1/date=d3
country=c2/date=d2
我想做一些类似于
select*from(show partitions tbl1)a其中a.country='c1'
的事情,我想在色调或外壳(蜂巢和黑斑羚)中这样做。
这可能吗

我不认为你在黑斑羚/蜂巢中直接尝试的是可能的

我可以建议另一种方式:

在黑斑羚/蜂巢组合中使用bash 因此,不要在hive和impala中进入交互模式,而是使用命令行选项从bashshell本身传递查询,以便将结果返回到bashshell,然后使用grep或其他文本处理命令对其进行处理

看起来是这样的

impala -k -i <> --ssl -ca_cert <> -B -q "show partitions tbl1" | grep "country=c1"
impala-k-i--ssl-ca_cert-B-q“显示分区tbl1”| grep“country=c1”
在这里,您需要将所需的值替换为

因此,通过这种方式,您可以使用grep/sed或其他工具来获得所需的输出。
很明显,这取决于你的用例你到底想要什么。但我希望这能帮助你

如果有人觉得这很有用,这就是我最终要做的。假设您有
sparkshell
spark2 shell
,您可以将
show partitions
的输出存储在数据帧中,然后转换这样的数据帧。这就是我所做的(在spark2 shell内部)

val df = spark.sql("show partitions tbl1").map(row => {
    val arrayValues = row.getString(0).split("/")
    (arrayValues.head.split("=")(1), arrayValues(1).split("=")(1))
}).toDF("country", "date")

这将获取分区列表(数据帧[字符串])将数据框按
/
进行拆分,然后对每一块进行拆分,
=
并获取您需要输入的值。tbl1在上述查询中,我对
蜂巢
黑斑羚壳
bash
使用了类似的方法,但次数比我希望的要多,我必须使用
色调
,所以我一直在寻找对于两种环境都有效的方法,谢谢