описать расширенную таблицу в Hive

Я сохраняю таблицу в формате SequenceFile и устанавливаю приведенные ниже команды, чтобы включить последовательность с сжатием BLOCK:

set mapred.output.compress=true;
set mapred.output.compression.type=BLOCK;
set mapred.output.compression.codec=org.apache.hadoop.io.compress.LzoCodec;

Но когда я попытался просмотреть таблицы вот так-

describe extended lip_table

Я получил ниже информацию, в которой есть поле с именем compressed, которое установлено как false. Значит, мои данные не сжимаются при установке трех вышеуказанных команд?

Detailed Table Information      Table(tableName:lip_table, dbName:default, owner:uname, 
createTime:1343931235, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:
[FieldSchema(name:buyer_id, type:bigint, comment:null), FieldSchema(name:total_chkout, 
type:bigint, comment:null), FieldSchema(name:total_errpds, type:bigint, comment:null)], 
location:hdfs://ares-nn/apps/hdmi/uname/lip-data, 
inputFormat:org.apache.hadoop.mapred.SequenceFileInputFormat, 
outputFormat:org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat, 
**compressed:false**, numBuckets:-1, serdeInfo:SerDeInfo(name:null, 
serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:
{serialization.format=   , field.delim=

person arsenal    schedule 02.08.2012    source источник
comment
попробуйте describe formatted для красивой печати describe extended   -  person Idr    schedule 12.08.2012
comment
Я использую Hive 0.6, и он не поддерживает describe formatted. :(   -  person arsenal    schedule 13.08.2012


Ответы (2)


Я нашел эту статью, которую я думаю дает решение вашей проблемы. Лучше попытаться указать использование вашего кодека сжатия на уровне определения вашей таблицы либо при создании таблицы, либо с помощью инструкции ALTER.

Во время создания:

 CREATE EXTERNAL TABLE lip_table (
                                    column1 string
                                  , column2 string 
                                 )
PARTITIONED BY (date string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY "\t"
STORED AS INPUTFORMAT "com.hadoop.mapred.DeprecatedLzoTextInputFormat"
          OUTPUTFORMAT "org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat"
LOCATION '/path/to/hive/tables/lip';

Использование ALTER (влияет только на разделы, созданные впоследствии):

ALTER TABLE lip_table
SET FILEFORMAT
    INPUTFORMAT "com.hadoop.mapred.DeprecatedLzoTextInputFormat"
    OUTPUTFORMAT "org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat";

http://www.mrbalky.com/2011/02/24/hive-tables-partitions-and-lzo-compression/

person Samuel Kerrien    schedule 03.08.2012
comment
Я использую вышеуказанный sql, но выдает следующую ошибку FAILED: строка ParseException 4:73 не соответствует входным данным '‹EOF›', ожидая SERDE рядом с ''org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'' в спецификации формата файла - person wgzhao; 08.10.2015

Чтобы избежать исключения serde, используйте также класс serde.

ALTER TABLE <<table name>>
SET FILEFORMAT
INPUTFORMAT "<<Input format class>>"
OUTPUTFORMAT
"<<Output format class>>" SERDE "<<Serde class>>";
person Ragesh Kumar    schedule 25.10.2016