无法使用jdbc连接到phoenix

kx7yvsdv  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(800)

我用hbase和phoenix建立了一个hadoop集群,我正在尝试使用jdbc连接到phoenix,但是我无法获得成功的连接。
我想使用jdbc来使用Python3.x进行连接,但是出于简单的测试目的,我在eclipse中使用java设置了一个连接。
我最初使用python的第三方库(phoenixdb),但是我开始使用这个库超时(随着数据库的增长)。在此之后,我更改了hbase-site.xml设置中的一些变量,以避免超时,但由于某些原因,使用此第三方库并不能解决我的问题。
所以我试着转向jdbc和java项目,至少是为了测试。
我有以下java代码:

  1. public class PhoenixTest {
  2. static final String JDBC_DRIVER = "org.apache.phoenix.jdbc.PhoenixDriver";
  3. static final String DB_URL1 = "jdbc:phoenix:https://xx.xx.xx.xx:8765/";
  4. static final String DB_URL2 = "jdbc:phoenix:xx.xx.xx.xx:8765/";
  5. public static void main(String[] args) {
  6. Connection conn = null;
  7. Statement st = null;
  8. try {
  9. Class.forName("org.apache.phoenix.jdbc.PhoenixDriver");
  10. System.out.println("Connecting to database..");
  11. conn = DriverManager.getConnection(DB_URL);
  12. st = conn.createStatement();
  13. st.close();
  14. conn.close();
  15. } catch (SQLException se) {
  16. se.printStackTrace();
  17. } catch (Exception e) {
  18. e.printStackTrace();
  19. } finally {
  20. try {
  21. if (st != null)
  22. st.close();
  23. } catch (SQLException se2) {
  24. }
  25. try {
  26. if (conn != null)
  27. conn.close();
  28. } catch (SQLException se) {
  29. se.printStackTrace();
  30. }
  31. }
  32. }
  33. System.out.println("Finished!");
  34. }

通过这段代码和client.jar,我更改的设置似乎被识别了,因为在连接关闭之前,查询需要10分钟(600.000毫秒-这是我将其从默认的60.000毫秒更改为的时间),这与使用phoenixdb库时的情况不同,在phoenixdb库中,在使用默认值之后,连接关闭超时(60.000 ms)。
当我使用 DB_URL2 我得到以下错误:

  1. java.sql.SQLException: org.apache.hadoop.hbase.client.RetriesExhaustedException: Failed after attempts=36, exceptions:
  2. Thu Apr 06 11:13:35 CEST 2017, null, java.net.SocketTimeoutException: callTimeout=60000, callDuration=80236: row 'SYSTEM:CATALOG,,' on table 'hbase:meta' at region=hbase:meta,,1.1588230740, hostname=hadoopslave,16020,1490706604328, seqNum=0

这与我的600.000 ms超时时间不匹配。但是使用 DB_URL1 它似乎使用 client.jar 以及我在 .jar (hbase default.xml),我将其设置为300.000 ms,只是为了测试使用哪一个。使用 DB_URL1 我得到以下错误:

  1. java.sql.SQLException: org.apache.hadoop.hbase.client.RetriesExhaustedException: Can't get the locations

我想这意味着它找不到ip。
然而,我从来没有完全得到一个成功的连接,所以我希望有人会有一些建议,什么是错的?

vsaztqbk

vsaztqbk1#

多亏@paulbastide,我成功地通过以下链接建立了连接:

  1. jdbc:phoenix:thin:url=http://<query_server>:<port>;serializa‌​tion=PROTOBUF

我还使用了与phoenix发行版一起发现的瘦客户机。

相关问题