在hive中与数据库的两种连接方式
(1)jdbc连接
命令:bin/hiveserver2
bin/beeline
!connect jdbc:hive2:/hadoop102:10000 回车
输入用户名 回车
回车 即可连接到数据库
(2)clin(命令行参数的连接)
命令:bin/hive
即可连接到数据库
查看数据库的信息
eg:
desc database hive_db---->查看基本信息
desc database extended hive_db2—>查看扩展信息
desc database like hive* —>可显示所有信息 (表示模糊查询)
drop database_name 删除数据库
cascade 强制删除数据库
内部表和外部表
(1)正常建表建的是内部表
特点:删除表时表内数据和元数据同时删除
(2)外部表:企业主要用的是外部表
特点:删除表时只删除表内数据,元数据依然会保留
建外部表的方法:
eg:create [external]table;
内部表外部表的转换(严格区分大小写)
‘EXTERNAL’=‘TRUE’ 内部表(默认内部表)
‘EXTERNAL’='FALSE’ 外部表
关于分区表的细节问题:
在建立分区表时,分区关键字不可以与 建表字段名相同
eg; create table stu_ex(in int, name string)
partitioned by(id int) ----------------->错误
分区字段表示伪列
查看分区:show partitions stu_ex;
分区表比较重要* 较分桶表还用的多
插入数据时 ,关于overwrite
eg; insert overwrite into table +表明
此时 table不可省略 否则会报错
where 子句后面不可以使用字段别名
创建完整表的格式
建表语法
CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name
[(col_name data_type [COMMENT col_comment], …)]
[COMMENT table_comment]
[PARTITIONED BY (col_name data_type [COMMENT col_comment], …)]
[CLUSTERED BY (col_name, col_name, …)
[SORTED BY (col_name [ASC|DESC], …)] INTO num_buckets BUCKETS]
[ROW FORMAT row_format]
[STORED AS file_format]
[LOCATION hdfs_path]
[TBLPROPERTIES (property_name=property_value, …)]
[AS select_statement]
select [id] group by id; 这个两个位置需相同
distribute by 分区排序
distribute by:的分区规则是根据分区字段的hash码与reduce的个数进行模除后,余数相同的分在一个区, 生成分区文件编号即为其余数
**Hive 要求 Distribute By 语句写在 sort by 语句的前面
**
分桶表
主要用大数据的分桶抽样查询
分桶表默认关闭
开启分桶表方法
set hive enforce bucketing =true
创建分桶表
clustered by (id) 排序时只能是升序排序
分区针对的是数据的存储路径,分桶针对的是数据文件
沈阳性病医院哪家好:http://yyk.39.net/sy/zhuanke/fc844.html
沈阳治疗湿疣正规医院:http://yyk.familydoctor.com.cn/20631/