5
我在hdfs中有一個由yyyymm分區的表pos.pos_inv。下面是查詢:即使分區謂詞出現在查詢中,也沒有找到針對別名的分區謂詞
select DATE_ADD(to_date(from_unixtime(unix_timestamp(Inv.actvydt, 'MM/dd/yyyy'))),5),
to_date(from_unixtime(unix_timestamp(Inv.actvydt, 'MM/dd/yyyy'))),yyyymm
from pos.pos_inv inv
INNER JOIN pos.POSActvyBrdg Brdg ON Brdg.EIS_POSActvyBrdgId = Inv.EIS_POSActvyBrdgId
where to_date(from_unixtime(unix_timestamp(Inv.nrmlzdwkenddt, 'MM/dd/yyyy')))
BETWEEN DATE_SUB(to_date(from_unixtime(unix_timestamp(Inv.actvydt, 'MM/dd/yyyy'))),6)
and DATE_ADD(to_date(from_unixtime(unix_timestamp(Inv.actvydt, 'MM/dd/yyyy'))),6)
and inv.yyyymm=201501
我已經提供了查詢爲201501的分區值,但我仍然得到錯誤」
Error while compiling statement: FAILED: SemanticException [Error 10041]: No partition predicate found for Alias "inv" Table "pos_inv"
(架構)的分區,YYYYMM爲int類型和actvydt日期被存儲爲串類型。
jeff,你正在使用哪個版本的配置單元,我認爲有一些開放的jira問題(https://issues.apache.org/jira/browse/HIVE-4905,https://issues.apache.org/jira/browse/HIVE-10454 )當分區謂詞列用於Join組合時,如果您使用的是舊版本的配置單元,請嘗試將mapred模式設置爲nonstrict並運行查詢'set hive.mapred。 mode = nonstrict' – Aditya
如果我使用set hive.mapred.mode = nonstrict,那麼將掃描整個數據集而不是特定的分區值。 – jeff
jeff,我認爲它的解決方法就是暫時的,可能是這個補丁在最新版本中更新,哪個版本的配置單元是你的,它可以在更高版本中嘗試嗎? – Aditya