這個坑肯可能是在java操作hive 和 python操作hive都會遇到的配置問題
如下解決方法:
1.配置 hive-site.xml
<property> <name>javax.jdo.option.ConnectionUserName</name> <value>hadoop</value> <description>username to use against metastore database</description> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>passwd</value> </property>
# 這里用戶名為什么是hadoop,因為我用用戶“hadoop”啟動的集群,
# passwd是用戶設定的密碼, 具體原理(“即你用哪個linux用戶啟動hadoop,對應的用戶也就成為hadoop的內部用戶,如下圖我的linux用戶為root,對應的hadoop中用戶也就是root”,詳細參考源:https://blog.csdn.net/qq_16633405/article/details/82190440)
<property> <name>hive.server2.thrift.port</name> <value>10000</value> </property> <property> <name>hive.server2.thrift.bind.host</name> <value>localhost</value> </property> <property> <name>hive.server2.enable.doAs</name> <value>false</value>
# 這應該是設置hiverserver2 綁定的host和port, 通過dbeaver通過jdbc driver訪問hive, url模板:jdbc:hive2://{host}[:{port}][/{database}] 最后的:hive.server2.enable.doAs,忘了啥意思了,卡了好久病急亂投醫了。。。
2. 配置 hadoop的 core-site.xml
配置 hadoop/etc/hadoop/ 目錄下的core-site.xml:
添加如下xml代碼,紅色的hadoop對應的就是 上面 hive-site.xml配置的 username, 我看網上大部分都是root,估計是hadoop是在root下啟動的,我hadoop所屬都是用戶hadoop(作為一個菜雞只能這么猜測了)
<property> <name>hadoop.proxyuser.hadoop.hosts</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.hadoop.groups</name> <value>*</value> </property>
3. 啟動hiveserver2
hive --service hiveserver2 -hiveconf hive.server2.thrift.port=10000
# 這個hive.server2.thrift.port=10000 在 hive-site.xml中配置了,這應該不用代參數了
4. 啟動 hadoop
cd /hadoop/sbin/
start-all.sh
5. dbeaver測試連接 hive
下載對應hive版本的jdbc jar包(我的hive是3.1.1, 網上找的3.1.1 , hive jdbc下載鏈接在這, 如何看hive版本? 參照這),以及推薦的jdbc jar包,配置主機、用戶名和密碼,模式/數據庫可以不填, 測試完成(沃尼瑪,終於解決了)

在此感謝 :https://blog.csdn.net/qq_16633405/article/details/82190440 博主:春雨里de太陽
