标签:tput 建表 记录 实用 避免 des ems items 不能
查询字段,假设是array类型能够通过下标
select subordinates[1] from employees;
查询假设是map,使用col_name[‘key‘]
查询假设是struct。使用col_name.steet
show tables 显示当前数据库中的表
desc [extended | formatted] table_name 显示表的结构
show create table tablename 显示创建表的语句
drop table tablename 删除表
create table test1 like test2 复制表结构,可是表中数据并没有载入过来
create table test4 as select name,addr from test5 依据test5的name和addr创建test4表。而且将test5中name和addr数据内容载入到test4中(select中不能查*)
hive不同文件读取:
stored as testfile
直接查看HDFS
通过hdfs dfs -test查看
stored as sequencefile
通过hdfs dfs -test查看
stored as rcfile
hive -service rcfilecat path
stored as inputformat ‘class‘ outputformat ‘class‘
四种基本的差别是inputformat 和 outputformat不同
hive中载入jar包(当次会话实用,假设多次须要加到lib文件夹下)
add jar path/..jar
Hive使用SerDe
SerDe是Serializer和Deserializer的缩写即序列化与反序列化
Hive读写数据的顺序
HDFS->inputfileformat-> <key,vlaue> -> deserializer -> row对象
row对象 -> serializer -> <key,value> ->outputFileFormat -> HDFS文件
Hive分区
为了避免查询过程中消耗非常长时间进行查找整个表,能够使用分区。查找特定分区中的内容,从而节省时间。
分区语句
create table tablename(
name string
....
)
partitioned by(col_name type,...) 这个分区字段和上面定义的字段不同。定义分区字段能够有多个用于分区后在对内容进行分区,相当于一级分区二级分区,注意和顺序有关的
事实上分区就是在HDFS下相应表中创建文件夹,这样以后查询的时候直接去相应文件夹下进行查找
加入分区语法:
alter table table_name add [if not exists] partition(col_name=par_con)
注意这样的加入分区方法前提是在创建表的时候已经创建了col_name分区
删除分区
alter table table_name drop [if exists] partition(col_name=par_com)
查看分区
show partitions table_name
数据载入到分区:
LOAD DATA [LOCAL] INPATH ‘filepath‘ [OVERWRITE] INTO TABLE table_name [partition(dt=..,hour=..)]
Hive分桶
对于某个表或者某个分区。hive进一步的组织成桶,也就是说桶是更细粒度范围的划分
hive针对某一列进行分桶
hive採用对列进行hash取值。然后使用该值对桶的个数取余的方式决定该条记录放在哪个桶中
与分区一样都是为了提高查询的效率
查找
select [ALL|DISTINCT] col_name frwom table_name [where col_name=..]
标签:tput 建表 记录 实用 避免 des ems items 不能
原文地址:http://www.cnblogs.com/lytwajue/p/6917770.html