Hive中的建表方式

hive中的建表方式

1 创建表语法

语法:
create [external] table 表名(
   列名1 数据类型,
   列名2 数据类型,
   ......
)
[row format delimited
fields terminated by '分隔符'  --设置列之间的分隔符
collection items termimnated by '分隔符'  --设置集合中元素之间的分隔符
map keys terminated by '分隔符'  --设置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 创建表示例

创建一张学生表,学号,姓名,年龄,性别,生日,爱好,考试分数

  create table 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
  fields terminated by ','
  collection items terminated by '_'
  map keys terminated by ':';

数据示例:

1001,小明,19,男,2000-10-18,打篮球_踢足球_看书,语文:70_数学:80_英语:90,广东省_深圳市_龙岗区
1002,小白,18,女,2001-10-11,学习_吃饭_睡觉,语文:75_数学:85_英语:95,湖南省_长沙市_天心区
1003,小红,19,女,2000-6-7,玩游戏_看书,语文:80_数学:90_英语:100,湖北省_武汉市_洪山区
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值