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.查看表的详细信息及注释