我有一个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执行的?
2条答案
按热度按时间j1dl9f461#
我真的很抱歉。我忘记了lzo的参数,因此hdfs文件是textfile格式:(
cs7cruho2#
我发现简单的sql(没有count、sum、groupby等)不会被map reduce执行,它将通过fetch作业(直接读取hdfs文件)执行。但是,我的hdfs文件是以lzo格式存储的,读取它会有一些问题。
一种解决方案是强制simple sql转到map reduce。