【问题标题】:Hive - How to remove column header from result setHive - 如何从结果集中删除列标题
【发布时间】:2015-08-03 10:47:11
【问题描述】:

我正在尝试解决一个在 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;

对我没用...

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

谢谢..

【问题讨论】:

  • 你可以使用 where 条件。

标签: sql hive


【解决方案1】:

从 shell 终端尝试以下命令

hive -s -e 'select stock_symbol,count(*) from stock group by stock_symbol;' |尾 -1

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

【讨论】:

  • 谢谢各位,完美。
【解决方案2】:

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

delete from stocks
    where stock_symbol = 'stock_symbol';

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

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

【讨论】:

    【解决方案3】:

    相信您拥有所有具有标题的输入转储,这就是它反映在计数中的内容。

    请检查链接 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"); 
    

    【讨论】:

    • 是的,你是对的..在插入过程中,头文件存在于 tsv 文件中。现在我试图运行查询而不在输出中显示标题。
    猜你喜欢
    • 2016-10-27
    • 2014-06-06
    • 1970-01-01
    • 2012-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多