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

9rygscc1  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(547)

我的第一次尝试是:

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
2fjabf4q

2fjabf4q1#

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

相关问题