hive中的建表方式
1 创建表语法
语法:
create[external]table 表名(
列名1 数据类型,
列名2 数据类型,......)[row format delimited
fieldsterminatedby'分隔符'--设置列之间的分隔符
collection items termimnated by'分隔符'--设置集合中元素之间的分隔符
map keysterminatedby'分隔符'--设置map字段中键和值之间的分隔符
stored as 设置文件的存储格式
location '设置数据文件的地址'];
2 个别参数解释
2.1 location
用来设置创建的表映射的数据文件路径。如果在创建表的时候没有指定
location
,则系统会自动创建一个文件夹,文件夹名称和表名一致,用来保存该表所对应的数据文件。如果在创建表的时候指定了
location
,则系统不会按照默认的路径来创建文件夹了,会将表和指定的路径文件进行映射,如果指定的路径文件夹不存在,则系统仍然会创建一个和表名同样的文件夹作为表的数据文件。
2.2 stored as:设置文件的存储格式
1.textfile:hive中默认的存储格式
是一种行式存储,存储的时候并不会对数据进行压缩操作,该种方式磁盘开销会比较大。也可以配合其他的一些压缩格式对数据进行压缩,例如:
Gzip
或者
Bzip2
等等。不支持切片,效率比较低。
2.sequencefile:
也是一种行式存储方式,主要是进行二进制文件存储,支持切片和切块,并且也会对数据进行压缩,效率比较高。
3.rcfile:
是一种行列存储方式,会先按照行对数据进行切片,然后每一片中的数据再按照列进行存储,并会对数据进行压缩。这样在查询数据的时候可以保证同一行的数据肯定在同一个数据块中,这样就可以避免跨数据库进行查询。
4.orcfile:
是
rcfile
的升级版,存储的方式和
rcfile
一样,但是效率会更高。是
hive
中比较常用的一种存储格式。
5.parquet:
也是一种行列存储格式,和
orcfile
类似,在
spark
中进行过特别优化,所以在
spark
中使用率比较高。
在
hive
中遇到无权限问题时,授予权限:
hdfs dfs -chmod -R 777 /
3 查看hive中的表结构
简单查看:
desc 表名;
比较全面的查看:
desc formatted 表名
4 创建表示例
创建一张学生表,学号,姓名,年龄,性别,生日,爱好,考试分数
createtable stu_t1(
sno int,
sname string,
age int,
sex string,
birthday date,
hobby array<string>,
scores map<string,double>
address struct<sheng:string, shi:string, xian:string>)row format delimited
fieldsterminatedby','
collection items terminatedby'_'
map keysterminatedby':';
数据示例:
1001,小明,19,男,2000-10-18,打篮球_踢足球_看书,语文:70_数学:80_英语:90,广东省_深圳市_龙岗区
1002,小白,18,女,2001-10-11,学习_吃饭_睡觉,语文:75_数学:85_英语:95,湖南省_长沙市_天心区
1003,小红,19,女,2000-6-7,玩游戏_看书,语文:80_数学:90_英语:100,湖北省_武汉市_洪山区
版权归原作者 紫川PY 所有, 如有侵权,请联系我们删除。