實踐hplsql時,遇到的問題總結一下,若有不對的地方,歡迎交流。
一、Hplsql簡介
hplsql的介紹詳見:http://lxw1234.com/archives/2015/09/492.htm
二、hpsql的配置文件為hplsql-site.xml
2.1 常見的選項列表:
hplsql.conn.default | 指定默認的連接配置文件,默認值為hive2conn |
hplsql.conn.hive2conn | 指定HiveServer2JDBC連接 |
hplsql.conn.init.hive2conn | 定義執行SQL語句連接后執行hive2conn 的一些默認設置,如:set system:user.name=mr; set hive.execution.engine=mr(mr為MapReduce,也可以設置為spark); |
hplsql.conn.convert.hive2conn | 定義是否對即時SQL轉換已啟用hive2conn,默認為true |
hplsql.conn.mysqlconn | 指定MySQL數據庫的連接配置文件 |
2.2 對hplsql-site.xml配置
編輯hplsql-site.xml 修改或添加以下變量: <property> <name>hplsql.conn.default</name> <value>hive2conn</value> <description>The default connection profile</description> </property> <property> <name>hplsql.conn.init.hive2conn</name> <value>set system:user.name=mr;set hive.execution.engine=mr</value> </property> <property> <name>hplsql.conn.hive2conn</name> <value>org.apache.hive.jdbc.HiveDriver;jdbc:hive2://IPAddress:10000;username;password</value> <description>HiveServer2 JDBC connection</description> </property> |
三、執行報錯
1)使用hplsql執行HPL/SQL語句,如下:
./hplsql -e "CURRENT_DATE+1"
正確顯示時間;
2)運行 bin/beeline.sh,然后輸入 !connect jdbc:hive2://IPAddress:10000;username;password;
發現連接成功。
3)執行的命令:
./hplsql -e "SELECT * FROM default.test LIMIT 10"
3.1 報錯信息:...HiveSQLExpection:Error while compiling statement:No privilege 'Select' found for inputs {.....}
顯示對表沒有select權限。
分析過程:
1)使用命令vim hplsql腳本發現,該腳本主要是調用hive腳本;
2)查看hive腳本,發現腳本使用環境變量HIVE_CONF_DIR;
3)使用命令env|grep hive發現,環境變量HIVE_CONF_DIR未設置;
4)在/etc/profile中加入export HIVE_CONF_DIR=/etc/hive/conf(根據hplsql-site.xml路徑指定)
3.2 報錯信息:java.sql.SQLExpection:Could not open client transport with JDBC Uri:jdbc:hive2://localhost:10000:java.net.ConnetcExpection:拒絕連接
一般為hive-site.xml文件配置問題
分析過程:
1)檢查端口10000是否啟動
netstat -anp|grep 10000
2)檢查hive-site.xml配置
<configuration> |
注:IPAddress為hive服務對應的IP地址。