心得体会之Hive细节总结

在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/

你可能感兴趣的:(心得体会之Hive细节总结)