SPARK SQL计数在更改案例上的变化



我有一个具有数据分布的表格:

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'

可能导致这种不一致的是什么?

这是一个案例敏感问题。由于Hive Meta商店模式的局限性,表总是小写。Parquet应该解决问题

相关内容

  • 没有找到相关文章

最新更新