1. 程式人生 > >ParseException line 20:7 Failed to recognize predicate 'timestamp'. Failed rule: 'identifier' in tab

ParseException line 20:7 Failed to recognize predicate 'timestamp'. Failed rule: 'identifier' in tab

      今天在執行 hive ql 時,突然出現了這個錯誤,之前沒遇到過。就自己在網上找原因,看了幾篇回覆都是不搭邊的,都不想繼續了,不過也給自己了個思路,有一篇英文貼是有效的。

        就嘗試了修改操作,SET hive.support.sql11.reserved.keywords=false; 

      這個設定就是表明: 建表的欄位名,最好不要使用保留字。如果已經使用了,執行sql前設定棄用,只對當前會話有效; 

     注意:   hive.support.sql11.reserved.keywords=true;   Hive 1.2 後預設是開啟的; 為了避免不必要的麻煩,最好是關閉這個選項或者使用別名,不是關鍵字來做欄位。

       2. 還遇到另外一個Hive 異常錯誤;

        Unable to acquire IMPLICIT, EXCLUSIVE lock   [email protected]_sales_order after 100 attempts

FAILED: Error in acquiring locks: Locks on the underlying objects cannot be acquired. retry after some time;

       在執行 hive QL 時,停留了很長時間不能往下執行,最後就報了這個異常;

       網上回復的是Hive 鎖表的問題; 

      解決辦法:  

     關閉鎖機制: set hive.support.concurrency=false; 預設為true