文章目录
hive里的存储格式
详见官网
https://cwiki.apache.org/confluence/display/Hive/Home#Home-UserDocumentation
hive里默认存储是textfile
hive (default)> set hive.default.fileformat;
hive.default.fileformat=TextFile
数据表存储方式如下指定
hive (default)> create table t_2(id int) stored as INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat';
也可以直接
hive (default)> create table t_3(id int) stored as textfile;
看下两张表的结构
hive (default)> desc formatted t_2/t_3;
InputFormat: org.apache.hadoop.mapred.TextInputFormat
OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
行式存储
优点:保证每一行在一个block里,如果是select *这种操作,行快。
缺点:如果ABCD是不同类型,只能使用一种压缩格式,压缩比不好
列式存储
优点:不同数据类型的列可以采用合适的压缩(内部自己解决,不需要手动设定),如果只要几列,列式更快,比如只要3列行式存储仍要全量读取。这里几列一组是随机的。
TextFile格式
hive存储的默认格式,行式存储。
文本格式里所有的内容都是字符串,然而hive里数据有schema(元数据信息