赞
踩
可以有多个分区字段,一般以时间维度来建立分区,也可以再加其他字段。以业务场景为提前条件,来设定分区的字段。
从业务角度理解,分区字段可理解为业务数据的一部分,作为业务查询的一个条件。
从技术角度理解,分区字段是表外字段,不作为源表数据结构的字段【但也可以源表的业务字段,抽取出来作为分区字段,方便业务数据处理】,这是个人的理解,如果不对请联系本人。
- PARTITIONED BY (
- `plant_time` string COMMENT '工厂时间')
建立使用 \u0001
hive默认的列分割类型为org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe,这其实就是^A分隔符。hive中默认使用^A(ctrl+A)作为列分割符,如果用户需要指定的话,等同于row format delimited fields terminated by '\001',因为^A八进制编码体现为'\001'。如果使用默认的分隔符,在建表时,可以不指定分割符,什么都不加;也可以按照上面的指定加‘\001’为列分隔符,效果一样。
hive默认使用的行分隔符是'\n'分隔符 ,也可以加一句:LINES TERMINATED BY '\n' 。如果在建表时,加不加效果一样。但是区别是hive可以通过row format delimited fields terminated by '\t'这个语句来指定不同的分隔符。但是hive不能够通过LINES TERMINATED BY '$$'来指定行分隔符,目前Hive的默认行分隔符仅支持‘\n’字符, 否则执行会报错。
如下所示:一些特殊字符
查看隐藏字符的方法:
cat -A filename
vim
使用vim进入编辑文件的命令模式,使用以下命令:
set list #显示隐藏字符
set nolist #取消显示隐藏字符
本人建议使用 ORC 存储格式
Hive支持的存储数据的格式主要有 | 存储形式 |
---|---|
TEXTFILE | 行式存储 |
SEQUENCEFILE | 行式存储 |
ORC | 列式存储 |
PARQUET | 列式存储 |
行存储的特点: 查询满足条件的一整行数据的时候,行存储只需要找到其中一个值,其余的值都在相邻地方。列存储则需要去每个聚集的字段找到对应的每个列的值,所以此时行存储查询的速度更快。
列存储的特点: 因为每个字段的数据聚集存储,在查询只需要少数几个字段的时候,能大大减少读取的数据量;每个字段的数据类型一定是相同的,列式存储可以针对性的设计更好的设计压缩算法。
TEXTFILE和SEQUENCEFILE的存储格式都是基于行存储的;
ORC和PARQUET是基于列式存储的。
使用如下命令
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\u0001' STORED AS ORC ;
- -- dwd.dwd_sap_mm_coois_history definition
-
- CREATE TABLE `dwd.dwd_sap_mm_coois_history`(
- `charg` string COMMENT '批次',
- `matnr` string COMMENT '物料',
- `maktx` string COMMENT '物料描述',
- `lgort` string COMMENT '库存地点',
- `bwart` string COMMENT '移动类型',
- `einheit` string COMMENT '未清数量 (EINHEIT)',
- `aufnr` string COMMENT '订单',
- `bdter` string COMMENT '需求日期',
- `werks` string COMMENT '工厂',
- `lmeng` string COMMENT '需求数量',
- `zzline` string COMMENT '线别',
- `baugr` string COMMENT '追溯需求',
- `bdmng` string COMMENT '需求数量 (EINHEIT)',
- `enmng` string COMMENT '撤回数量 (EINHEIT)',
- `txt04` string COMMENT '系统状态',
- `flmng` string COMMENT '短缺 (EINHEIT)',
- `ktext` string COMMENT '工作中心说明',
- `arbpl` string COMMENT '工作中心',
- `udate` string COMMENT '在制天数',
- create_by string comment '建立者',
- create_time timestamp comment '建立时间',
- update_by string comment '最后更新者',
- update_time timestamp comment '最后更新时间',
- remark string comment '备注'
- )
- COMMENT '工单领料基本表 '
- PARTITIONED BY (
- `plant_time` string COMMENT '工厂时间')
- ROW FORMAT DELIMITED FIELDS TERMINATED BY '\u0001' STORED AS ORC ;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。