如何将hive查询结果转换为一个变量?在SQL中,我们使用以下查询。
Declare @cnt as int Select @cnt= count(*) from tabname
@cnt将在整个过程中使用。 我不知道如何在HIVE中实现同样的目标。有人能告诉我如何在hive提示符和Shell提示符下实现这一点吗?
答案 0 :(得分:1)
obj[id==1]
答案 1 :(得分:0)
没有直接的方法来做到这一点......
通过shell的一种天真的方式是:
catchData=$(beeline/hive -u jdbc:hive2://$hiveServer2:10000 -n $userName -e "select count(*) from table")
但这没有效果,因为它甚至会打印hive连接语句,info&警告声明和数据
<强> 2。最好的方法是..
INSERT OVERWRITE DIRECTORY <-directory location}->
SELECT COUNT(*) FROM TABLE
countinfo=$(hdfs dfs -cat <-directory location}->)
希望这一点有助于......
答案 2 :(得分:0)
嗯,这很简单......
在你的shell中, countinfo = $(hdfs dfs -cat&lt; -directory location} - &gt;)
** hive -hivevar countNum =“$ countinfo”\ -f'/Filepath/file.hql' **
在你的file.hql中,在查询中使用$ {countNum}
答案 3 :(得分:0)
它很难做到shell脚本。
我建议你使用perl脚本吗? 在perl中导致它相当容易。
你可以在perl脚本中这样做
my $ query_total_recs =“SELECT COUNT(*)FROM table”;
答案 4 :(得分:0)
#!/bin/bash -e
hive -e "use schema_name; INSERT OVERWRITE DIRECTORY '/tmp/ank' row format delimited
FIELDS TERMINATED BY ',' select * from table_name limit 1;"
a=$(hdfs dfs -cat /tmp/ank/000000_0)
echo $a
这将在变量a
中为表的第一行提供逗号分隔输出