hive中指定压缩编解码器:
hadoop集群启用了压缩,就需要在Hive建表的时候指定压缩时所使用的编解码器,否则Hive无法正确读取数据。
Gzip和Bzip2由于是hadoop默认支持的,所以无需指定特殊的编解码器,只要指定Text类型即可。
CREATE TABLE `adorderdata`(
`date` int COMMENT '日期eg:20160618',
`rogmv` bigint COMMENT '影响订单金额',
`aocnt` int COMMENT '全部的订单量',
`aogmv` bigint COMMENT '全部订单金额')
COMMENT 'dsporder'
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
STORED AS INPUTFORMAT
'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
'hdfs://ns3/user/ss_ad/pppp.db/ztadorderdata'
create external table cp_ad_table (
}
partitioned by(dt string)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
WITH SERDEPROPERTIES
('field.delim' = '\t',
'serialization.null.format' = ''
)STORED AS INPUTFORMAT "com.hadoop.mapred.DeprecatedLzoTextInputFormat"
OUTPUTFORMAT "org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat"
日志用lzop在本地压缩好了,直接丢到hdfs上就可以了。
-inputformat com.hadoop.mapred.DeprecatedLzoTextInputFormat -jobconf mapred.output.compress=true -jobconf mapred.output.compression.codec=com.hadoop.compression.lzo.LzopCodec