Hive - 如何从结果集中删除列标题

时间:2015-08-03 10:47:11

标签: sql hive

我正在尝试解决在hive查询执行后创建的一个问题。

一个名为' stock_data'的新表这是持有股票价格,股票代码和所有其他细节。

我有一个tsv文件(制表符分隔文件),并在路径中使用“加载本地数据”。命令加载数据库表。

tsv文件,其列标题为' stock_name',' stock_symbol' ....

现在,当我想使用以下查询显示股票代码和计数数量时: -

select stock_symbol,count(*) from stocks group by stock_symbol;

输出正在加载列标题

XOM 500
XRX 500
XTO 496
YPF 500
YUM 500
YZC 478
ZAP 494
ZF  494
stock_symbol    1

Time taken: 20.576 seconds, Fetched: 1735 row(s)

我的问题是: -

如何隐藏或删除' stock_symbol 1' (最后一行)来自我的结果集?

我在运行之前尝试使用以下命令: -

set hive.cli.print.header=false;

对我不起作用......

任何人都可以帮助我......

谢谢..

3 个答案:

答案 0 :(得分:0)

问题似乎是您的数据是使用标头作为数据行导入的。我可能会建议您删除该值:

delete from stocks
    where stock_symbol = 'stock_symbol';

否则,您可以修改查询并使用WHERE将其排除:

select stock_symbol, count(*)
from stocks
where stock_symbol <> 'stock_symbol'
group by stock_symbol;

答案 1 :(得分:0)

从shell终端

尝试以下命令
  

hive -s -e'选择stock_symbol,按stock_symbol从股票组中计算(*);' |尾巴-1

注意:使用tail或head命令终止最后一行......

答案 2 :(得分:0)

相信你有输入转储,它都有标题,这就是它在计数中的反映。

请检查链接 Skip first line of csv while loading in hive table

已经分享了答案:)

之前的样本示例意义

CREATE TABLE temp 
  ( 
     name STRING, 
     id   INT 
  ) row format delimited fields terminated BY '\t' lines terminated BY '\n' 
tblproperties("skip.header.line.count"="1");