分享

Hive如何执行文件中的sql语句

hyj 2014-4-19 19:57:54 发表于 实操演练 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 6 133064
问题导读:

1.hive通过什么命令可以执行文件中sql语句
2. source /home/wyp/Documents/test;与hive -f test的区别是什么?





Hive可以运行保存在文件里面的一条或多条的语句,只要用-f参数,一般情况下,保存这些Hive查询语句的文件通常用.q或者.hql后缀名,但是这不是必须的,你也可以保存你想要的后缀名。假设test文件里面有一下的Hive查询语句:
  1. select * from p limit 10;
  2. select count(*) from p;
复制代码

那么我们可以用下面的命令来查询:
  1. [wyp@wyp hive-0.11.0-bin]$ bin/hive -f test
  2. ........这里省略了一些输出...........
  3. OK
  4. 196        242        3        881250949        20131102        jx
  5. 186        302        3        891717742        20131102        jx
  6. 22        377        1        878887116        20131102        jx
  7. 244        51        2        880606923        20131102        jx
  8. 166        346        1        886397596        20131102        jx
  9. 298        474        4        884182806        20131102        jx
  10. 115        265        2        881171488        20131102        jx
  11. 253        465        5        891628467        20131102        jx
  12. 305        451        3        886324817        20131102        jx
  13. 6        86        3        883603013        20131102        jx
  14. Time taken: 4.386 seconds, Fetched: 10 row(s)
  15. ........这里省略了一些输出...........
  16. OK
  17. 4000000
  18. Time taken: 16.284 seconds, Fetched: 1 row(s)
复制代码

如果你配置好了Hive shell的路径,你可以用SOURCE命令来运行那个查询文件:
  1. [wyp@wyp hive-0.11.0-bin]$ hive
  2. hive> source /home/wyp/Documents/test;
  3. ........这里省略了一些输出...........
  4. OK
  5. 196        242        3        881250949        20131102        jx
  6. 186        302        3        891717742        20131102        jx
  7. 22        377        1        878887116        20131102        jx
  8. 244        51        2        880606923        20131102        jx
  9. 166        346        1        886397596        20131102        jx
  10. 298        474        4        884182806        20131102        jx
  11. 115        265        2        881171488        20131102        jx
  12. 253        465        5        891628467        20131102        jx
  13. 305        451        3        886324817        20131102        jx
  14. 6        86        3        883603013        20131102        jx
  15. Time taken: 4.386 seconds, Fetched: 10 row(s)
  16. ........这里省略了一些输出...........
  17. OK
  18. 4000000
  19. Time taken: 16.284 seconds, Fetched: 1 row(s)
复制代码












已有(6)人评论

跳转到指定楼层
quenlang 发表于 2014-9-28 09:38:35
试了一下,好使,学习了
回复

使用道具 举报

地球仪 发表于 2016-9-7 09:15:16
你好,咨询你个问题。两个独立的sql算出两个独立的结果集,怎么用SQL实现(SQL1/SQL2)*100%
回复

使用道具 举报

lbwab777 发表于 2017-4-27 21:23:59
可是区别到底是什么呢,只是一个配置好了shell路径?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条