如何在变量中获取hive输出?

时间:2015-03-28 09:06:52

标签: hadoop hive

如何将hive查询结果转换为一个变量?在SQL中,我们使用以下查询。

Declare @cnt as int Select @cnt= count(*) from tabname

@cnt将在整个过程中使用。 我不知道如何在HIVE中实现同样的目标。有人能告诉我如何在hive提示符和Shell提示符下实现这一点吗?

5 个答案:

答案 0 :(得分:1)

obj[id==1]

答案 1 :(得分:0)

没有直接的方法来做到这一点......

  1. 通过shell的一种天真的方式是:

    catchData=$(beeline/hive -u jdbc:hive2://$hiveServer2:10000 -n $userName -e "select count(*) from table")

  2. 但这没有效果,因为它甚至会打印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

中为表的第一行提供逗号分隔输出