【问题标题】:describe extended table in Hive描述 Hive 中的扩展表
【发布时间】:2012-08-02 19:54:32
【问题描述】:

我将表格存储为 SequenceFile 格式,并设置以下命令以启用带有块压缩的序列-

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=

【问题讨论】:

  • 尝试describe formatted 获得describe extended 的漂亮打印
  • 我正在运行 Hive 0.6,它不支持 describe formatted。 :(

标签: hadoop mapreduce hive lzo


【解决方案1】:

我找到了this article,我认为它可以解决您的问题。 您应该尝试在表定义级别指定压缩编解码器的使用,无论是在创建表时还是使用 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/

【讨论】:

  • 我使用上面的 sql,但它给了我以下错误 FAILED: ParseException line 4:73 mismatched input '' expecting SERDE near ''org.apache.hadoop.hive.ql.io .HiveIgnoreKeyTextOutputFormat'' 在文件格式规范中
【解决方案2】:

为了避免serde 异常,也使用serde 类。

ALTER TABLE <<table name>>
SET FILEFORMAT
INPUTFORMAT "<<Input format class>>"
OUTPUTFORMAT
"<<Output format class>>" SERDE "<<Serde class>>";

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-16
    相关资源
    最近更新 更多