Hive 在配置单元表上设置压缩

Hive 在配置单元表上设置压缩,hive,compression,hiveql,avro,snappy,Hive,Compression,Hiveql,Avro,Snappy,我有一个基于avro模式的配置单元表。该表是使用以下查询创建的 创建外部表数据TBL 分区依据(日期字符串,整数时间) 行格式SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe' 具有serdeproperty( 'avro.schema.url'='HDFS上架构文件的路径') 以输入格式存储 'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat' 输出格式 'org.apac

我有一个基于avro模式的配置单元表。该表是使用以下查询创建的

创建外部表数据TBL
分区依据(日期字符串,整数时间)
行格式SERDE
'org.apache.hadoop.hive.serde2.avro.AvroSerDe'
具有serdeproperty(
'avro.schema.url'='HDFS上架构文件的路径')
以输入格式存储
'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat'
输出格式
'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat'
位置“”

到目前为止,我们已经通过设置以下属性将数据插入到表中

hive>set-hive.exec.compress.output=true;
配置单元>设置avro.output.codec=snappy

但是,如果有人忘记设置上述两个属性,则无法实现压缩。
我想知道是否有一种方法可以对表本身强制压缩,这样即使没有设置上述两个属性,数据也会一直被压缩?

是的,您可以在表中设置属性。 请尝试以下操作:

 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" );
创建外部表datatbl分区依据(日期字符串,int-time)
行格式SERDE'org.apache.hadoop.hive.serde2.avro.AvroSerDe'
使用SerdeProperty('avro.schema.url'='上架构文件的路径
HDFS')存储为INPUTFORMAT
'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat'
输出格式
'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat'位置
''
TBLProperty(“orc.compress”=“SNAPPY”);

@VikasSaxena是的!您可以使用相同的设置:存储为ORC TBLProperty(“ORC.compress”=“ZLIB”),即使它是ORC表。看看这个: