当前位置: 首页 > 知识库问答 >
问题:

无法使用sqlline将Phoenix连接到Hbase

黄弘深
2023-03-14

我在伪分布式设置中使用Hbase 1.2.6、Phoenix-4.13.1-Hbase 1.2、hadoop 2.9.0。我可以在hbase shell中创建表,我想使用phoenix来读取那些表。运行'sqlline.py localhost:2181:/hbase-unsecure'时出现以下错误:

Setting property: [incremental, false]
Setting property: [isolation, TRANSACTION_READ_COMMITTED]
issuing: !connect jdbc:phoenix:localhost:2181:/hbase-unsecure none none org.apache.phoenix.jdbc.PhoenixDriver
Connecting to jdbc:phoenix:localhost:2181:/hbase-unsecure
18/02/05 14:30:26 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Error: org.apache.hadoop.hbase.client.RetriesExhaustedException: Can't get the locations (state=,code=0)
java.sql.SQLException: org.apache.hadoop.hbase.client.RetriesExhaustedException: Can't get the locations
    at org.apache.phoenix.query.ConnectionQueryServicesImpl$12.call(ConnectionQueryServicesImpl.java:2492)
    at org.apache.phoenix.query.ConnectionQueryServicesImpl$12.call(ConnectionQueryServicesImpl.java:2384)
    at org.apache.phoenix.util.PhoenixContextExecutor.call(PhoenixContextExecutor.java:76)
    at org.apache.phoenix.query.ConnectionQueryServicesImpl.init(ConnectionQueryServicesImpl.java:2384)
    at org.apache.phoenix.jdbc.PhoenixDriver.getConnectionQueryServices(PhoenixDriver.java:255)
    at org.apache.phoenix.jdbc.PhoenixEmbeddedDriver.createConnection(PhoenixEmbeddedDriver.java:150)
    at org.apache.phoenix.jdbc.PhoenixDriver.connect(PhoenixDriver.java:221)
    at sqlline.DatabaseConnection.connect(DatabaseConnection.java:157)
    at sqlline.DatabaseConnection.getConnection(DatabaseConnection.java:203)
    at sqlline.Commands.connect(Commands.java:1064)
    at sqlline.Commands.connect(Commands.java:996)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at sqlline.ReflectiveCommandHandler.execute(ReflectiveCommandHandler.java:38)
    at sqlline.SqlLine.dispatch(SqlLine.java:809)
    at sqlline.SqlLine.initArgs(SqlLine.java:588)
    at sqlline.SqlLine.begin(SqlLine.java:661)
    at sqlline.SqlLine.start(SqlLine.java:398)
    at sqlline.SqlLine.main(SqlLine.java:291)
Caused by: org.apache.hadoop.hbase.client.RetriesExhaustedException: Can't get the locations
    at org.apache.hadoop.hbase.client.RpcRetryingCallerWithReadReplicas.getRegionLocations(RpcRetryingCallerWithReadReplicas.java:319)
    at org.apache.hadoop.hbase.client.ScannerCallableWithReplicas.call(ScannerCallableWithReplicas.java:156)
    at org.apache.hadoop.hbase.client.ScannerCallableWithReplicas.call(ScannerCallableWithReplicas.java:60)
    at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithoutRetries(RpcRetryingCaller.java:210)
    at org.apache.hadoop.hbase.client.ClientScanner.call(ClientScanner.java:327)
    at org.apache.hadoop.hbase.client.ClientScanner.nextScanner(ClientScanner.java:302)
    at org.apache.hadoop.hbase.client.ClientScanner.initializeScannerInConstruction(ClientScanner.java:167)
    at org.apache.hadoop.hbase.client.ClientScanner.<init>(ClientScanner.java:162)
    at org.apache.hadoop.hbase.client.HTable.getScanner(HTable.java:797)
    at org.apache.hadoop.hbase.MetaTableAccessor.fullScan(MetaTableAccessor.java:602)
    at org.apache.hadoop.hbase.MetaTableAccessor.tableExists(MetaTableAccessor.java:366)
    at org.apache.hadoop.hbase.client.HBaseAdmin.tableExists(HBaseAdmin.java:406)
    at org.apache.phoenix.query.ConnectionQueryServicesImpl$12.call(ConnectionQueryServicesImpl.java:2412)
    ... 20 more
sqlline version 1.2.0
0: jdbc:phoenix:localhost:2181:/hbase-unsecur> 

hbase-site.xml文件

<configuration>

  <property>
    <name>hbase.rootdir</name>
    <value>hdfs://localhost:9000/hbase</value>
  </property>
  <property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>/Users/nishanksogani/HbaseInstall/zookeeper</value>
  </property>

  <property>
    <name>hbase.zookeeper.znode.parent</name>
    <value>/hbase</value>
  </property>

    <property>
      <name>hbase.cluster.distributed</name>
      <value>true</value>
    </property>


</configuration>

共有1个答案

柯乐池
2023-03-14

问题很清楚。您的hbase zookeeper znode是/hbase,而您试图通过/HBase-unsecure连接phoenix。

我正以另一种方式面对同样的问题。在没有kerberos的HDP2.6中,hbase的znode是/hbase-unsecure。因此,在使用默认的znode(/HBase)连接jdbc:phoenix:myhost时,我也遇到了同样的错误

希望我的帖子能为像我这样的人节省半个小时。

 类似资料:
  • 当我尝试运行Phoenix的命令时,我得到 其他什么都没发生。我也无法让松鼠工作(当我单击“列表驱动程序”时,它会冻结)。 我没有将的类路径中,因为我不知道它指的是什么。 我使用的是HBase 0.98.6.1-Hadoop2、Phoenix 4.2.1和hadoop 2.2.0。

  • 所有运行在同一主机上的技术堆栈: Apache Spark 2.2.0版本 Hbase 1.2版本 18/07/30 12:28:15警告hbaseConfiguration:已不推荐配置选项“hbase.regionserver.lease.period”。而是使用“hbase.client.scanner.timeout.period” 18/07/30 12:28:54 INFO rpcre

  • 我正在尝试通过Phoenix连接HBase集群。首先,我已经将Phoenix客户端和查询服务器jars文件复制到HMaster和HRegion lib文件夹,并重新启动HBase服务。 服务器-通过/bin/queryserver.py启动Phoenix服务器。运转正常。 客户端- 它工作在伪节点集群上。但在启用HA的Hadoop集群中失败。 在高可用性集群中,我已经为文件中的属性设置了活动名称代

  • 提前感谢所有的帮助。我无法使用OCI8将我的PHP连接到ORACLE。我用的软件规格是 Windows 10版本:主64位 我使用NAVICAT作为我的mysql客户端,并且能够使用它连接到数据库。像instant client path和sqlplus这样的设置必须在这一点上进行设置,并且所有设置都可以正常工作。 现在真正的问题是使用OCI8将PHP连接到ORACLE。我已经使用这个链接下载了正

  • 我创建了一个docker compose文件,将MySql连接到SpringBoot应用程序。但我得到了这个错误: 我尝试在本地机器中使用docker默认ip运行Spring Boot应用程序,同时在这个docker-compose.yml文件中只运行MySql容器,结果运行得非常好。但当我尝试docker编写文件时。我知道这个错误。