Hive命令及操作
1.hive表操作
复制表结构
create table denserank_amt like otheravgrank_amt;
修改表名
alter table tmp rename to credit_card;
修改表结构
修改column属性
ALTER TABLE table_name
CHANGE [COLUMN] col_old_name col_new_name
column_type [COMMENT col_comment] [FIRST|AFTER column_name]
alter table otheravg_amt change cr_tx_cod cr_tx_amt float;
增加/替换column(可以使用replace来删除不需要的字段)
ALTER TABLE table_name
ADD|REPLACE COLUMNS (col_name data_type [COMMENT col_comment], ...) 比如
alter table alter_test replace columns (id int, name string);
alter table alter_test add columns(test_columen INT);
插入语句
hive> insert into table cite select * from tt;
追加数据到cite表格中
hive> insert overwrite table cite select * from tt;
覆盖已经存在的数据
2.hive查询语句
建表
create table otheravg_amt(bus_inst_no string,canal string,sa_tx_dt string,dr_cr_cod string,cr_tx_cod float,f_fare float,counts bigint);
将查询结果插入新表,包含截取字段,求平均数
insert overwrite table otheravg_amt select substr(bus_inst_no,0,5),canal,sa_tx_dt,dr_cr_cod,avg(cr_tx_amt),avg(f_fare),avg(counts) from branch_amt group by substr(bus_inst_no,0,5),canal,sa_tx_dt,dr_cr_cod;
只取前5条记录
select * from otheravg_amt limit 5; 筛选
select deptno,sum(sal) from emp group by deptno having sum(sal)>10000; 同表同一列的数相减
select
(select count from table where name = '1'
)-
(select count from table where name = '2')
from dual; insert into table branch_atmzc_sum
Select canal, XT_OP_TRL, SA_TX_DT,'number2-number1',b.cr_tx_amt-a.cr_tx_amt from branch_atmzc a, branch_atmzc b where a.canal = b.canal and a.XT_OP_TRL = b.XT_OP_TRL and a.SA_TX_DT = b.SA_TX_DT and a.tran_cd = 'number1' and b.tran_cd = 'number2'; mysql同一列时间依次与最大时间相减
SELECT SUM(TIMEDIFF(paytime, (SELECT MAX(paytime) FROM 表) ))
FROM 表
3.本地文本文件数据导入hive中
load data local inpath '/mnt/pc/pcclientlogs/test.log' into table test partition (dt = '20120917');
语法:INSERT OVERWRITE [LOCAL] DIRECTORY directory1 select_statement1 查询结果可以直接导到excel中等,但需要注意的是hive导出文件时使用的分隔符,否则会出现乱码。hive是使用^A符号作为域的分隔符,原文如下:
Data written to the filesystem is serialized as text with columns separated by ^A
在python中可以使用line.split('\x01')来进行切分,也可以用line.split('\001')
如果需要将查询结果导出到本地文件,可以直接使用hive,很方便。
bin/hive -e "select * from test" >> res.csv
或者是:
bin/hive -f sql.q >> res.csv
其中文件sql.q写入你想要执行的查询语句
这问题在使用hive hql streaming时也会遇到,当你使用hql strreaming 将输出直接写入到hdfs目录,然后你在该目录上创建hive 外部表时,hive的输出结果会将streaming 的key和value之间的分隔符修改为 \001,所以,在hql streaming和输出为hive 外部表时,最好将streaming的最后输出的分隔符修改为\001,并且hive外部表的分隔符应该设置为\001,注意:不要使用^A和\x01,如:
create external table site_user_mapping_info_month(uid String,tag string,project_ids string,site_interests string) PARTITIONED BY(year String, month String) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\001' LOCATION '/project/site_grouping/site_user_mapping_info_month';
注意:将hive结果导入到hdfs上,不能指定分割符
1.将select的结果放到一个的的表格中(首先要用create table创建新的表格) insert overwrite table test select uid,name from test2; 2.将select的结果放到本地文件系统中 INSERT OVERWRITE LOCAL DIRECTORY '/tmp/reg_3' SELECT a.* FROM events a; 3.将select的结果放到hdfs文件系统中 INSERT OVERWRITE DIRECTORY '/tmp/hdfs_out' SELECT a.* FROM invites a WHERE a.ds='<DATE>'
如:
hive> insert overwrite local directory '/home/wyp/Documents/result' row format delimited fields terminated by '\t' select * from test;
如果是map类型。还可以指定分割符来划分key和value
hive> insert overwrite local directory './test-04' row format delimited FIELDS TERMINATED BY '\t' COLLECTION ITEMS TERMINATED BY ',' MAP KEYS TERMINATED BY ':' select * from src;
Hive命令及操作的更多相关文章
- kafka工作流程| 命令行操作
1. 概述 数据层:结构化数据+非结构化数据+日志信息(大部分为结构化) 传输层:flume(采集日志--->存储性框架(如HDFS.kafka.Hive.Hbase))+sqoop(关系型数 ...
- 如何监听对 HIVE 元数据的操作
目录 简介 HIVE 基本操作 获取 HIVE 源码 编译 HIVE 源码 启动 HIVE 停止 HIVE 监听对 HIVE 元数据的操作 参考文档 简介 公司有个元数据管理平台,会定期同步 HIVE ...
- 大数据系列之数据仓库Hive命令使用及JDBC连接
Hive系列博文,持续更新~~~ 大数据系列之数据仓库Hive原理 大数据系列之数据仓库Hive安装 大数据系列之数据仓库Hive中分区Partition如何使用 大数据系列之数据仓库Hive命令使用 ...
- Hive配置与操作实践
Hive配置与操作实践 @(Hadoop) 安装hive hive的安装十分简单,只需要在一台服务器上部署即可. 上传hive安装包,解压缩,将其配入环境变量. mysql的设置 在要作为元数据库的m ...
- Hive与表操作有关的语句
Hive与表操作有关的语句 1.创建表的语句: Create [EXTERNAL] TABLE [IF NOT EXISTS] table_name [(col_name data_type [COM ...
- 命令行操作svn和git和git
前几天在写代码的时候电脑突然坏掉,老大交代的任务没完成,非常痛恨自己用svn或者git保存代码,相信很多程序员遇到过,硬盘坏掉,存在硬盘中的代码丢失,无法找回的问题,svn和git可谓程序员界的福音, ...
- Oracle手边常用命令及操作语句
Oracle手边常用命令及操作语句 作者:白宁超 时间:2016年3月4日11:24:08 摘要:日常使用oracle数据库过程中,常用脚本命令莫不是用户和密码.表空间.多表联合.执行语句等常规操作. ...
- mysql 命令行操作入门(详细讲解版)
之前分享过多次Mysql主题,今天继续分享mysql命令行入门 1. 那么多mysql客户端工具,为何要分享命令行操作? -快捷.简单.方便 -在没有客户端的情况下怎么办 -如果是mysql未开启 ...
- windows下使用TortoiseGit代替Git命令行操作
windows下使用TortoiseGit代替Git命令行操作 大家在使用svn的时候,都非常喜欢使用小乌龟,也就是TortoiseSVN:那么git也有小乌龟版本,即TortoiseGit. 1.安 ...
随机推荐
- 【转】Robust regression(稳健回归)
Robust regression(稳健回归) 语法 b=robustfit(X,y) b=robustfit(X,y,wfun,tune) b=robustfit(X,y,wfun,tune,con ...
- docker挂载NVIDIA显卡运行pytorch
本文为作者原创,转载请注明出处(http://www.cnblogs.com/mar-q/)by 负赑屃 写在前面: 请参考之前的文章安装好CentOS.NVIDIA相关驱动及软件.docker及 ...
- centos配置单网卡为Trunk模式
单网卡配置多IP(trunk模式)操作标准 1.linux的单网卡配置多IP的操作 下面为linux系统单网卡配置多IP(trunk模式)的操作步骤,系统平台为centos5.5.全部操作完成后,将实 ...
- SpringMVC 知识整理
SpringMVC架构设计 MVC是一种架构模式,它把业务的实现和展示相分离. SpringMVC与struts2的区别 Struts2是类级别的拦截, 一个类对应一个request上下文,Sprin ...
- oracle如何操作约束
自我总结,欢迎怕转! 约束的作用不多说了,直接看怎么用吧. 非空约束: 在创建表时设置非空约束: CREATE TABLE table_name( column_name datatype NOT N ...
- fscanf和fprintf
fscanf和fprintf fscanf的字符串是在键盘的缓冲区,fprintf是在显示器的缓冲区. 1.函数原型: int fprintf(FILE *fp, const char *format ...
- 08_Python编码与解码
一.编码的由来 因为计算机只能处理010101二进制数据,如果要处理文本,图像,视频等,需要我们把数据转换成01010二进制格式才能被计算机处理 最先出现的是ASCII,用8位一个字节来表示,成为单字 ...
- Java源码分析系列之HttpServletRequest源码分析
从源码当中 我们可以 得知,HttpServletRequest其实 实际上 并 不是一个类,它只是一个标准,一个 接口而已,它的 父类是ServletRequest. 认证方式 public int ...
- rapid framework开发系列(一)
定义:web项目脚手架 rapid-framework是一个以spring为核心的项目脚手架(或者称为胶水框架),框架将各个零散的框架(struts,strust2,springmvc,hiberna ...
- Could note find result map com.xxxx.entity.UserAccountDO
原因: insert语句的标签写错:应该是parameterType,而不应该是resultType