1. 程式人生 > >Hive通過JDBC方式訪問時碰到的問題彙總

Hive通過JDBC方式訪問時碰到的問題彙總

1、執行hive sql時伺服器報Connection refused錯誤

解決方法:Hive沒有啟動hive server2,可以通過如下指令啟動,指令的後半段是指定日誌存放地址

hive --service hiveserver2 2>&1 >> /home/user/hive/log.log 2>&1 &

2、執行hive sql時報 xxxx is not allowed to impersonate xxxx

解決方法:這是賬戶配置問題,需修改hadoop的配置檔案core-site.xml,UserName是在hadoop的賬戶名,記得修改後要重啟hadoop

<property>
      <name>hadoop.proxyuser.UserName.hosts</name>
      <value>*</value>
</property>
<property>
      <name>hadoop.proxyuser.UserName.groups</name>
      <value>UserName</value>
</property>

3、執行hive sql時報 org.apache.hadoop.hbase.exceptions.ConnectionClosingException: Connection to xxxx/xx.xx.xx.xx:xxxx is closing,但同樣的指令在hive shell裡執行卻沒問題

解決方法:修改hive的配置檔案hive-site,將hive.exec.submitviachild設定為true

<property>
    <name>hive.exec.submitviachild</name>
    <value>true</value>
</property>
ps:這個問題相對比較難理解,這個問題僅發生在呼叫的資源跟hbase有關係的時候(外部表),如果僅僅是hive自身相關的表還不會有這個異常,而且這個錯誤出現時對應的異常資訊是socketTimeout,按這個異常去查hbase.rpc.timeout,hbase.client.operation.timeout,hbase.client.scanner.timeout.period都是徒勞的,順帶貼個
hive配置說明