当前位置: 首页 > news >正文

保存Hive查询结果的方法

很多时候,我们需要将Hive的查询(select)结果保存起来,方便进一步处理或查看。
在Hive里面提供了不同的方式来保存查询结果,在这里做下总结:

一、保存结果到本地

方法1:调用hive标准输出,将查询结果写到指定的文件中
这个方法最为常见,笔者也经常使用。sql的查询结果将直接保存到/tmp/out.txt中:
$ hive -e "select user, login_timestamp from user_login" > /tmp/out.txt

 

方法2:使用INSERT OVERWRITE LOCAL DIRECTORY结果到本地

hive> insert overwrite local directory "/tmp/out/"                                        
    > select user, login_time from user_login;

  

上面的命令会将select user, login_time from user_login的查询结果保存到/tmp/out/本地目录下。

 

我们查看一下/tmp/out/目录下的文件,发现命令执行后,多了两个文件:

$ find /tmp/out/ -type f
/tmp/out/.000000_0.crc
/tmp/out/000000_0

  

默认的字段分割符有时候可能不太方便,幸好Hive提供了修改分割符号的方法,我们只要在导出时指定就可以了:

hive> insert overwrite local directory "/tmp/out/"
    > row format delimited fields terminated by "\t" 
    > select user, login_time from user_login;

  

二、保存结果到hdfs

保存查询结果到hdfs很简单,使用INSERT OVERWRITE DIRECTORY就可以完成操作:

hive> insert overwrite directory "/tmp/out/"
    > row format delimited fields terminated by "\t" 
    > select user, login_time from user_login;

  

三、保存结果到HIVE表

方法1、已经建好结果表,使用INSERT OVERWRITE TABLE以覆盖方式写入结果表

如果结果表已经建好,可以使用INSERT OVERWRITE TABLE将结果写入结果表:

login_time          	bigint
hive> insert overwrite table query_result     
    > select user, login_time from user_login;

  

当然,HIVE也提供了追加方式INSERT TABLE,可以在原有数据后面加上新的查询结果。在上面这个例子基础上,我们再追加一个查询结果:

hive> insert into table query_result
    > select * from query_result;

  

方法2、如果需要新建一个表,用于存放查询结果,可以使用CREATE TABLE AS SELECT语法

hive> create table query_result 
    > as
    > select user, login_time from user_login;

  

 

相关文章:

  • Session
  • greenplum安装文档
  • 第42件事 移动App设计的11大法则
  • 解决网站访问流量过大问题
  • Java高级编程——MySql采用的算法原理
  • Nginx设置多条件判断访问控制
  • Magento搜索产品结果不精准的问题
  • spring boot slf4j日记记录配置详解
  • jsp的几种跳转比较
  • Python 给字符串进行加密,生成唯一固定长度字符串
  • JAVA 网络编程小记
  • python中异常处理--raise的使用
  • 力学,非线性形变
  • Ubuntu安装distcc+dmucs(分布式编译)步骤
  • opensuse使用zypper安装软件
  • 【跃迁之路】【641天】程序员高效学习方法论探索系列(实验阶段398-2018.11.14)...
  • crontab执行失败的多种原因
  • github从入门到放弃(1)
  • HTML中设置input等文本框为不可操作
  • iBatis和MyBatis在使用ResultMap对应关系时的区别
  • Laravel 菜鸟晋级之路
  • mongo索引构建
  • Next.js之基础概念(二)
  • Octave 入门
  • Promise面试题,控制异步流程
  • Redis中的lru算法实现
  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • Web标准制定过程
  • 阿里云Kubernetes容器服务上体验Knative
  • 从setTimeout-setInterval看JS线程
  • 简析gRPC client 连接管理
  • 开源SQL-on-Hadoop系统一览
  • 前端攻城师
  • 如何在GitHub上创建个人博客
  • 扫描识别控件Dynamic Web TWAIN v12.2发布,改进SSL证书
  • Hibernate主键生成策略及选择
  • 进程与线程(三)——进程/线程间通信
  • ​LeetCode解法汇总2583. 二叉树中的第 K 大层和
  • #define与typedef区别
  • (1)(1.13) SiK无线电高级配置(六)
  • (DFS + 剪枝)【洛谷P1731】 [NOI1999] 生日蛋糕
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (二)【Jmeter】专栏实战项目靶场drupal部署
  • (二)Pytorch快速搭建神经网络模型实现气温预测回归(代码+详细注解)
  • (二)正点原子I.MX6ULL u-boot移植
  • (十八)devops持续集成开发——使用docker安装部署jenkins流水线服务
  • (收藏)Git和Repo扫盲——如何取得Android源代码
  • . NET自动找可写目录
  • ... fatal error LINK1120:1个无法解析的外部命令 的解决办法
  • ../depcomp: line 571: exec: g++: not found
  • .Net - 类的介绍
  • .net core 连接数据库,通过数据库生成Modell
  • .net Signalr 使用笔记
  • .NET 使用 ILRepack 合并多个程序集(替代 ILMerge),避免引入额外的依赖
  • .netcore 如何获取系统中所有session_如何把百度推广中获取的线索(基木鱼,电话,百度商桥等)同步到企业微信或者企业CRM等企业营销系统中...