更改大小写时触发sql计数更改

klsxnrf1  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(301)

我有一个数据分布如下的表:

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'

是什么导致了这种不一致?
6ju8rftf

6ju8rftf1#

这是一个区分大小写的问题。由于配置单元元存储模式的限制,表总是小写的。Parquet地板应该能解决这个问题

相关问题