一、 建表規範:
Hiive分爲內部表和外部表,一般情況,只允許建外部表,不建議使用內部表。
LZO標準建表模板如下所示:
create EXTERNAL table app_sku_pur_attrib (
stat_dt string comment ‘統計日期’ ,
ord_item_units double comment ‘下單商品件數’,
valid_ord_qtty bigint comment ‘有效訂單量’ )
comment ‘商品採銷屬性’
PARTITIONED BY ( dt string )
ROW FORMAT SERDE ‘org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe’
WITH SERDEPROPERTIES ( ‘field.delim’=’\t’ )
STORED AS INPUTFORMAT “com.hadoop.mapred.DeprecatedLzoTextInputFormat”
OUTPUTFORMAT “org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat”;
建表時需要加上表註釋、字段註釋;
ORC標準建表模板如下所示:
create external table app_jdw_jmart_zbinfo_test_test(
capacity_all float comment ‘數據總容量PB’,
deal_data_dt float comment ‘日處理數據量PB’,
add_data_dt float comment ‘日新增數據量PB’,
add_job_dt float comment ‘日運行job數W’,
machine_num int comment ‘平臺總機器數’,
corejob_avgtime string comment ‘核心任務平均運行時長’)
PARTITIONED BY ( week_nm string,dt string )
ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘\t’ (列分隔符)
NULL DEFINED AS ‘’ (空值展示爲’’)
STORED AS ORC (存儲格式爲ORC,不可少)
LOCATION ‘*************’ (指定表的location)
tblproperties (‘orc.compress’=‘SNAPPY’); (ORC壓縮格式爲SNAPPY)
字段類型使用hive標準字段
原生類型:
TINYINT
SMALLINT
INT
BIGINT
BOOLEAN
FLOAT
DOUBLE
STRING
BINARY (Hive 0.8.0以上纔可用)
TIMESTAMP (Hive 0.8.0以上纔可用)
複合類型:
arrays: ARRAY<data_type>
maps: MAP<primitive_type, data_type>
structs: STRUCT<col_name : data_type [COMMENT col_comment], ...>
union: UNIONTYPE<data_type, data_type, …>
舉例:錯誤表:app_business_m_dyrec_rank_apply,字段類型void
#col_name data_type comment
target_tag void
user_id string
item_sku_id string
sku_list void
exp_time void
rectype void
model_id void
traffic string
media string
site_id void
adpos_id void
二、 數據類型標準
1、爲了提高通用性,代碼字段儘量不用數字型,建議多采用STRING類型;
2、日期類型字段由於格式多樣,造成在信息加工處理過程中的格式轉換複雜且易出錯,因此對日期類型字段統一制定如下規範
以“2013-01-01 13:35:23.71”爲例說明日期字段類型規範內容: