【问题标题】:Is it possible to create a hive table with text output format?是否可以创建具有文本输出格式的配置单元表?
【发布时间】:2018-03-29 23:07:59
【问题描述】:

我的第一次尝试是:

CREATE TABLE t1 ( 
  a string )       
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE ;

但这样做的结果是:

CREATE TABLE t1 ( 
  a string )                                            
ROW FORMAT DELIMITED                                            
  FIELDS TERMINATED BY ','                                      
STORED AS INPUTFORMAT                                           
  'org.apache.hadoop.mapred.TextInputFormat'                    
OUTPUTFORMAT                                                    
  'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'  ;

这似乎会生成二进制文件而不是文本文件。

我将数据插入到 t1:

insert into t1 values ( "hello");
INFO  : Loading data to t1 
INFO  : Table t1 stats: [numFiles=1, numRows=1, totalSize=14, rawDataSize=5]
No rows affected (86.403 seconds)

生成的 hdfs 文件是:

14 2017-10-18 17:20 t1/000000_0.deflate

而且内容是二进制的。我真正需要的是一个文本文件。

那么,有没有可能得到一个 hdfs 输出格式,即文本?

顺便说一句,我正在使用 hortonworks 大数据分发。 HDP 2.5.0。

$ hdp-select | grep hive
hive-metastore - 2.5.0.0-1245
hive-server2 - 2.5.0.0-1245
hive-server2-hive2 - 2.5.0.0-1245
hive-webhcat - 2.5.0.0-1245

【问题讨论】:

    标签: hadoop hive bigdata hiveql hadoop2


    【解决方案1】:

    zlib/deflate 压缩格式 - 这是默认的数据压缩格式。这种压缩格式的文件扩展名为.deflate。以下配置用于设置此格式:

    SET hive.exec.compress.output=true;
    SET mapred.output.compression.codec=org.apache.hadoop.io.compress.DefaultCodec;
    

    要关闭压缩,请使用:

    SET hive.exec.compress.output=false;
    

    而不是指定INPUTFORMATOUTPUTFORMAT 你可以简单地写STORED AS TEXTFILE 看到这个答案:https://stackoverflow.com/a/44454578/2700344

    【讨论】:

      猜你喜欢
      • 2020-05-20
      • 2017-09-15
      • 1970-01-01
      • 2016-12-28
      • 1970-01-01
      • 1970-01-01
      • 2016-08-26
      • 2011-07-14
      • 1970-01-01
      相关资源
      最近更新 更多