Hive操作方式
1、命令行方式cli:
A)执行SQL:
hive> select * from psn;
OK
1 zhang3 ["sing","tennis","running"] {"beijing":"daxing"} 10
2 li4 ["sing","pingpong","swim"] {"shanghai":"baoshan"} 10
3 wang5 ["read","joke","football"] {"guangzou":"baiyun"} 10
Time taken: 1.848 seconds, Fetched: 3 row(s)
B)执行hdfs命令:
hive> dfs -ls /;
Found 3 items
drwxr-xr-x - root supergroup 0 2019-04-24 17:03 /jars
drwx-wx-wx - root supergroup 0 2019-04-24 19:35 /tmp
drwxr-xr-x - root supergroup 0 2019-04-24 16:59 /user
#####执行hdfs命令比直接在linux本地访问hdfs更多,因为Linux本地每次都要连接hdfs,而进入hive客户端就已经和hdfs建立了连接。
C)执行linux命令:
hive> !pwd;
/root
hive> !cat /root/a.txt;
1 zhang3 sing-tennis-running beijing:daxing
2 li4 sing-pingpong-swim shanghai:baoshan
3 wang5 read-joke-football guangzou:baiyun
2、脚本操作方式
查看cli命令:[root@Linux005 ~]# hive --service cli --help
执行SQL命令:[root@Linux005 ~]# hive -e "SQL语句1;SQL语句2.。。"
执行SQL,结果打印到文件:[root@Linux005 ~]# hive -e "SQL语句1;SQL语句2.。。" >>a.txt
读取文件中的命令并执行:[root@Linux005 ~]# hive -f 文件名
静默模式:[root@Linux005 ~]# hive -S -e "sql语句" 很多乱七八糟的东西不打印
3、java代码
4、web GUI接口 (hwi、hue等)
hive View视图
hive View视图
和关系型数据库中的普通视图一样,hive也支持视图
特点:
不支持物化视图
只能查询,不能做加载数据操作
视图的创建,只是保存一份元数据,查询视图时才执行对应的子查询
view定义中若包含了ORDER BY/LIMIT语句,当查询视图时也进行ORDER BY/LIMIT语句操作,view当中定义的优先级更高
view支持迭代视图,视图套视图
创建视图:
CREATE VIEW [IF NOT EXISTS] [db_name.]view_name
[(column_name [COMMENT column_comment], ...) ]
[COMMENT view_comment]
[TBLPROPERTIES (property_name = property_value, ...)]
AS SELECT ... ;
查询视图:
select colums from view;
删除视图:
DROP VIEW [IF EXISTS] [db_name.]view_name;
Hive 索引
Hive 索引
目的:优化查询以及检索性能
创建索引:
create index t1_index on table psn2(name)
as 'org.apache.hadoop.hive.ql.index.compact.CompactIndexHandler'
with deferred rebuild [in table t1_index_table];
as:指定索引器;
in table:指定索引表,若不指定默认生成在default__数据表名_索引名__表中
#####创建索引后其实索表是空的,要重建索引才行。
查询索引
show index on psn2;
重建索引(建立索引之后必须重建索引才能生效)
ALTER INDEX t1_index ON psn2 REBUILD;
#####每次更新数据后都需要重建索引。
删除索引
DROP INDEX IF EXISTS t1_index ON psn2;