在hive表

时间:2015-08-07 00:30:41

标签: hive compression hiveql avro snappy

我有一个基于avro架构的hive表。该表是使用以下查询

创建的

CREATE EXTERNAL TABLE datatbl PARTITIONED BY (date String, int time) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe' WITH SERDEPROPERTIES ( 'avro.schema.url'='path to schema file on HDFS') STORED as INPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat' LOCATION '<path on hdfs>'

到目前为止,我们通过设置以下属性

将数据插入到表中

hive> set hive.exec.compress.output=true; hive> set avro.output.codec=snappy;

但是,如果有人忘记设置上述两个属性,则无法实现压缩。 我想知道是否有办法对表本身强制执行压缩,以便即使未设置上述两个属性,数据也始终被压缩?

1 个答案:

答案 0 :(得分:2)

是的,您可以在表格中设置属性。 请尝试以下方法:

 CREATE EXTERNAL TABLE datatbl PARTITIONED BY (date String, int time)  
 ROW FORMAT SERDE   'org.apache.hadoop.hive.serde2.avro.AvroSerDe'  
 WITH SERDEPROPERTIES (   'avro.schema.url'='path to schema file on
 HDFS')   STORED as INPUTFORMAT  
 'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat'  
 OUTPUTFORMAT  
 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat' LOCATION
 '<path on hdfs>'
 TBLPROPERTIES ( "orc.compress"="SNAPPY" );