配置单元:选择*无结果

ecbunoof  于 2021-06-26  发布在  Hive
关注(0)|答案(2)|浏览(224)

我有一个lzo格式的外部配置单元表存储。这个表中有一些行,但我不能通过“select*”来获取数据。我的表格格式肯定有问题,但我不知道怎么解决。

CREATE EXTERNAL TABLE tableName(
    column1 string
)
PARTITIONED BY ( 
    column2 string
)
ROW FORMAT DELIMITED 
    FIELDS TERMINATED BY '\t' 
STORED AS INPUTFORMAT 
    'com.hadoop.mapred.DeprecatedLzoTextInputFormat' 
OUTPUTFORMAT 
    'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
    'hdfs://.../tableName'

select count(*) from tableName; //return 1
select * from tableName; //return nothing
select column1, column2 from tableName group by column1,column2; //return data1 data2
select * from tableName where column2='data2'; //return nothing

仅“select*”不返回任何内容。也许“select*”不是通过map reduce执行的?

j1dl9f46

j1dl9f461#

我真的很抱歉。我忘记了lzo的参数,因此hdfs文件是textfile格式:(

set hive.exec.compress.output=true;
set mapred.output.compression.codec=com.hadoop.compression.lzo.LzopCodec;
cs7cruho

cs7cruho2#

我发现简单的sql(没有count、sum、groupby等)不会被map reduce执行,它将通过fetch作业(直接读取hdfs文件)执行。但是,我的hdfs文件是以lzo格式存储的,读取它会有一些问题。
一种解决方案是强制simple sql转到map reduce。

set hive.fetch.task.conversion=none;

相关问题