5

avro スキーマに基づくハイブ テーブルがあります。テーブルは次のクエリで作成されました

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;

ただし、誰かが上記の 2 つのプロパティを設定するのを忘れた場合、圧縮は達成されません。上記の2つのプロパティが設定されていなくても、データが常に圧縮されるように、テーブル自体に圧縮を適用する方法があるかどうか疑問に思っていましたか?

4

1 に答える 1

3

はい、テーブルでプロパティを設定できます。次のことを試してください。

 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" );
于 2015-08-07T00:50:48.180 に答える