1.创建数据(文本以tab分隔)
vim test1_hive
2.创建新表
CREATE TABLE t_hive (a int, b int, c int) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|';
3.导入数据test1_hive到t_hive表
LOAD DATA LOCAL INPATH '/lost+found/test1_hive' OVERWRITE INTO TABLE t_hive ;
4.查看表数据
查看表
正则表达式匹配表名
查看表数据
查看表结构
5.修改表
增加字段
ALTER TABLE t_hive ADD COLUMNS (d String);
修改表名
ALTER TABLE t_hive RENAME TO t_wang;
6.删除表
7.hive交互式模式
quit,exit: 退出交互式shell
reset: 重置配置为默认值
set <key>=<value> : 修改特定变量的值(如果变量名拼写错误,不会报错)
set: 输出用户覆盖的hive配置变量
set -v : 输出所有Hadoop和Hive的配置变量
add FILE[S] *, add JAR[S] *, add ARCHIVE[S] * : 添加 一个或多个 file, jar, archives到分布式缓存
list FILE[S], list JAR[S], list ARCHIVE[S] : 输出已经添加到分布式缓存的资源
list FILE[S] *, list JAR[S] *,list ARCHIVE[S] * : 检查给定的资源是否添加到分布式缓存
delete FILE[S] *,delete JAR[S] *,delete ARCHIVE[S] * : 从分布式缓存删除指定的资源
! <command> : 从Hive shell执行一个shell命令
dfs <dfs command> : 从Hive shell执行一个dfs命令
<query string> : 执行一个Hive 查询,然后输出结果到标准输出
source FILE <filepath>: 在CLI里执行一个hive脚本文件
8.数据导入
之前已经导入了数据,现在HDFS中查找刚刚导入的数据
hadoop fs -cat /user/hive/warehouse/t_wang/test1_hive
从其他表导入数据
CREATE TABLE t_hive2 (a int, b int, c int) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|'; #创建表
INSERT OVERWRITE TABLE t_hive2 SELECT * FROM t_hive;
仅复制表结构不导数据
CREATE TABLE t_hive3 LIKE t_hive;
9.数据导出
从HDFS复制到HDFS其他位置
hadoop fs -cp /user/hive/warehouse/t_hive /
查看复制
hadoop fs -cat /t_hive/test1_hive
通过Hive导出到本地文件系统
INSERT OVERWRITE LOCAL DIRECTORY '/tmp/t_hive' SELECT * FROM t_hive;
查看本地操作系统
! cat /tmp/t_hive/000000_0;
10.Hive查询HiveQL
普通查询:排序,列别名,嵌套子查询
连接查询:JOIN
聚合查询1:count, distinct
聚合查询2:count, avg
聚合查询3:GROUP BY, HAVING
11.hive视图
create view v_hive as select a,b from t_hive where c>30;
删除视图
12.hive分区表
分区表是数据库的基本概念,但很多时候数据量不大,我们完全用不到分区表。Hive是一种OLAP数据仓库软件,涉及的数据量是非常大的, 所以分区表在这个场景就显得非常重要。
下面我们重新定义一个数据表结构:t_hft
创建数据
vim /lost+found/t_hft_1
000001,092023,9.76
000002,091947,8.99
000004,092002,9.79
000005,091514,2.2
000001,092008,9.70
000001,092059,9.45
vim /lost+found/t_hft_2
000001,092023,9.76
000002,091947,8.99
000004,092002,9.79
000005,091514,2.2
000001,092008,9.70
000001,092059,9.45
创建数据表
DROP TABLE IF EXISTS t_hft;
CREATE TABLE t_hft(
SecurityID STRING,
tradeTime STRING,
PreClosePx DOUBLE
) PARTITIONED BY (tradeDate INT)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';
导入数据
LOAD DATA LOCAL INPATH '/lost+found/t_hft_1' OVERWRITE INTO TABLE t_hft PARTITION (tradeDate=20160220);
LOAD DATA LOCAL INPATH '/lost+found/t_hft_2' OVERWRITE INTO TABLE t_hft PARTITION (tradeDate=20160221);
查看分区表
查询数据
select * from t_hft where securityid='000001';
select * from t_hft where tradedate=20160220 and preclosepx<9;
13.动态写入分区表
创建分区表
导入数据
批量导入新建的分区表
14.导出表中的数据到文件
export table dept_count to '/lost+found/hive_dept_count_o';
15.不需要打开命令行界面,直接执行完查询
hive -e 'use test;select * from t_hive';
16.有时候需要执行多个查询,可以通过操作文件来执行
17.hive中直接查看hdfs中的文件
18.查看已经存在的数据库
19.查看表的详细信息及注释