是否可以使用文本输出格式创建配置单元表?

问题描述:

我第一次尝试是:是否可以使用文本输出格式创建配置单元表?

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 

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; 

,而不是指定INPUTFORMAT而且,OUTPUTFORMAT 你可以只写简单的STORED AS TEXTFILE 看到这个答案:https://stackoverflow.com/a/44454578/2700344