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.安 ...
随机推荐
- android dialog弹出的情况下监听返回键
view = LayoutInflater.from(getActivity()).inflate( R.layout.dialog_tips, null); title2 = (TextView) ...
- 小白的Python之路 day5 re正则模块
re正则模块 一.概述 就其本质而言,正则表达式(或 RE)是一种小型的.高度专业化的编程语言,要讲他的具体用法要讲一本书!它内嵌在Python中,并通过 re 模块实现.你可以为想要匹配的相应字符串 ...
- python--批量下载豆瓣图片之升级版本
周末下雨没法出门,刷刷豆瓣看看妹子,本想拿以前脚本下载点图片,结果发现运行失败,之前版本为<python--批量下载豆瓣图片>,报错HTTP Error 403: Forbidden,网上 ...
- 日常API之图灵聊天机器人
机器人是什么?可以吃吗? 嗯,他可以和你聊天,不能吃哦. 首先需要到www.tuling123.com注册一只KEY,你才能调用机器人API哦 一.布局 (控制台程序可以跳过这一步)本文以WPF为示例 ...
- 02_Linux图形界面及文件系统结构介绍
一.根目录 / : 它跟Windows的C.D.E.F不同,在Linux中,所有的文件系统(光驱.U盘.硬盘)都挂载到根目录的某一个文件夹下 bin : 存放二进制可执行文件 sbin ...
- 不需要客户端插件PHP也能实现单点登录
分析CAS原理,构建PHP单点登录 单点登录(Single Sign On , 简称 SSO )是目前比较流行的服务于企业业务整合的解决方案之一, SSO 使得在多个应用系统中,用户 只需要登录一次就 ...
- 玩转spring boot——简单登录认证
前言 在一个web项目中,某些页面是可以匿名访问的,但有些页面则不能.spring mvc提供了HandlerInterceptor接口来应对,只需要重写preHandle方法便可以实现此功能.那么使 ...
- 《Thinking in Java》学习笔记(五)
1. Java异常补充 a.使用try/catch捕获了异常之后,catch之后的代码是会正常运行的,认为即使进行了异常捕获,出现了异常就不往下执行,这是很多新手会犯的错误. public class ...
- Java获得系统的外网IP
关于如何获得系统外网IP?在网上找了好久,大多数解决方案都没法直接用,所以今天和大家分享一段获得外网IP的代码! import java.net.Inet4Address; import java.n ...
- VScode离线安装插件
VScode离线插件的转移 需求:换台电脑用VScode 找到插件安装路径 在本地找.vscode的文件夹,里面的extensions文件夹里都是下载的插件 复制发给其他电脑 在vscode首选项-- ...