When running below command to load data into bucketed tables it is not loading into specified partition instead loaded into default partition.
LOAD DATA INPATH '/tmp/files/000000_0' OVERWRITE INTO TABLE call PARTITION(year_partition=2012, month=12);
SELECT * FROM call WHERE year_partition=2012 AND month=12; --> returns 0 rows.
If set hive.exec.dynamic.partition to false, it fails with below error.
When we "set hive.strict.checks.bucketing=false;", the load works fine.
This is a behaviour imposed by
HIVE-15148 to avoid incorrectly named data files being loaded to the bucketed tables. In customer use case, if the files are named properly with bucket_id (00000_0, 00000_1 etc), then it is safe to set this flag to false.
However, current behaviour of loading into default partitions when hive.strict.checks.bucketing=true and partitions specified, was a bug injected by
HIVE-19311 where the given query is re-written into a insert query (to handle incorrect file names and Orc versions) but missed to incorporate the partitions specs to it.