我有一个数据分布如下的表:
sqlContext.sql( """ SELECT
count(to_Date(PERIOD_DT)), to_date(PERIOD_DT)
from dbname.tablename group by to_date(PERIOD_DT) """).show
+-------+----------+
| _c0| _c1|
+-------+----------+
|1067177|2016-09-30|
|1042566|2017-07-07|
|1034333|2017-07-31|
+-------+----------+
但是,当我运行如下查询时:
sqlContext.sql(""" SELECT COUNT(*)
from dbname.tablename
where PERIOD_DT = '2017-07-07' """).show
令人惊讶的是,它返回:
+-------+
| _c0|
+-------+
|3144076|
+-------+
但如果我改变了 PERIOD_DT
改为小写,即。, period_dt
,它返回正确的结果
sqlContext.sql("""
SELECT COUNT(*)
from dbname.table
where period_dt='2017-07-07' """).show
+-------+
| _c0|
+-------+
|1042566|
+-------+
``` `period_dt` 表的分区列,其类型为 `char(10)` 表数据存储为parquet:
ROW FORMAT SERDE
'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
STORED AS INPUTFORMAT
'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat'
是什么导致了这种不一致?
1条答案
按热度按时间6ju8rftf1#
这是一个区分大小写的问题。由于配置单元元存储模式的限制,表总是小写的。Parquet地板应该能解决这个问题