Hive 空指針(NPE)異常


空指針NullPointerException

 

1 Hive之前的一些BUG

  • [HIVE-9430] - NullPointerException on ALTER TABLE ADD PARTITION if no value given

意思是當為分區表增加新的分區的時候必須指定分區的值

Wrong : ALTER TABLE xxx ADD PARTITION (yyy)

Right   : ALTER TABLE xxx ADD PARTITION (yyy='newPartition') 

  • [HIVE-9623] - NullPointerException in MapJoinOperator.processOp(MapJoinOperator.java:253) for TPC-DS Q75 against un-partitioned schema

 

  • [HIVE-9975] - Renaming a nonexisting partition should not throw out NullPointerException

意思是 query一張分區表的分區字段的值不存在 比如 partition_column='notExistPartition'

  • [HIVE-10437] - NullPointerException on queries where map/reduce is not involved on tables with partitions

意思是  一張分區表,當你要query這張表的時候,如果是起的mapreduce任務來讀表那么不會有任何問題,但是如果是直接從HDFS讀取數據那么就會產生NPE問題。具體原因與序列化有關。

 

2 其他經常碰到的問題主要是

  • 使用了沒有定義的非默認的函數變量, 比如row_number並非是hive的默認函數變量,hive自定義的函數是org.apache.hadoop.hive.ql.udf.generic.GenericUDAFRowNumber , 如果想使用這個函數則需要定義函數變量 create temporary function row_number as 'org.apache.hadoop.hive.ql.udf.generic.GenericUDAFRowNumber'; 當然函數變量row_number的名稱是可以隨意取,只要不是保留的關鍵字即可。
  • 一些語法錯誤

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM