基础建表语句:
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]
小demo:
create external table transaction1(id int,sex string,age int,date string,role string,region string) row format delimited fields terminated by ' ' stored as textfile location '/user/hdfs/source/hive_test' ;
1、创建表指定的路径
hadoop fs -mkdir /user/hdfs/source/hive_test
2、建表:包括是否外部表、表名、表字段、表属性。
a.指定分隔符:其中,FIELDS TERMINATED BY ‘\t’ 是指定字段分隔符也可用用其他符号如“,”,“|”等等,LINES TERMINATED BY '\n’是指定行分隔符(一般不写,默认是换行符)。
b.指定文件格式:上面语句就是创建文本格式的表格,一般如果集群的hdfs没有设置文件格式,hive表格默认的便是txt文本格式的,可通过命令Hadoop fs -cat /表格目录/* (*或者文件名)查看到文件的内容。hive表格也可以设置其他格式,STORED AS SEQUENCEFILE 设置为sqquencefile格式;STORED AS RCFILE 设置为rcfile格式。
c.指定文件存储位置:上面语句中location '/user/hdfs/source/hive_test’便是指定了表格在hdfs存储的目录,建表完成可在/data/下看到已创建hive_test目录,指定目录一般在大型集群上比较常用的,因为集群的规模越大,使用者就越多,集群管理者便会对用户做权限管理,权限管理中必定会涉及对hdfs的目录进行管理,这个时候用户可能没有默认warehouse目录的权限了,建表便需要指定表格目录了。
d.指定分区:partitioned by ()语句便是指定某字段为分区字段
3、将数据文件丢到指定位置
4、select * from xxx;查询校验
5、drop table xxx;删除表
6、查看HDFS中文件是否存在