【问题标题】:Unable to connect to Google Bigtable using HBase REST api无法使用 HBase REST api 连接到 Google Bigtable
【发布时间】:2015-05-08 19:26:21
【问题描述】:

this example 之后,运行测试脚本“python put_get_with_client.py”会导致 400 错误(错误请求)。

错误请求 java.lang.ClassCastException: org.apache.hadoop.hbase.client.BigtableConnection 不能转换为 org.apache.hadoop.hbase.client.ClusterConnection 在 org.apache.hadoop.hbase.client.ConnectionManager.createConnection(ConnectionManager.java:410) 在 org.apache.hadoop.hbase.client.ConnectionManager.createConnection(ConnectionManager.java:370) 在 org.apache.hadoop.hbase.client.HConnectionManager.createConnection(HConnectionManager.java:197) 在 org.apache.hadoop.hbase.util.ConnectionCache.getCurrentConnection(ConnectionCache.java:170) 在 org.apache.hadoop.hbase.util.ConnectionCache.getAdmin(ConnectionCache.java:124) 在 org.apache.hadoop.hbase.rest.RESTServlet.getAdmin(RESTServlet.java:102) 在 org.apache.hadoop.hbase.rest.RootResource.getTableList(RootResource.java:64) 在 org.apache.hadoop.hbase.rest.RootResource.get(RootResource.java:80) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:606) 在 com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60) 在 com.sun.jersey.server.impl.model.method.dispatch.Abs​​tractResourceMethodDispatchProvider$ResponseOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:205) 在 com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75) 在 com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:288) 在 com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108) 在 com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) 在 com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84) 在 com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1469) 在 com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1400) 在 com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1349) 在 com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1339) 在 com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416) 在 com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:537) 在 com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:699) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:820) 在 org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511) 在 org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1221) 在 org.apache.hadoop.hbase.rest.filter.GzipFilter.doFilter(GzipFilter.java:76) 在 org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1212) 在 org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:399) 在 org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) 在 org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) 在 org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766) 在 org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 在 org.mortbay.jetty.Server.handle(Server.java:326) 在 org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542) 在 org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:928) 在 org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:549) 在 org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212) 在 org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) 在 org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:410) 在 org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)

那么,我猜 BigtableConnection 没有实现 ClusterConnection 接口?例子正确吗?

【问题讨论】:

  • 我会在这个问题上 ping 某人 -- 尝试尽快给你答复。
  • 我们期待的 HBase 1.0.1 中的一些补丁没有成功。我们正试图找出一个工作循环。当我们了解我们可以做什么时,有人会在此发布 - 但是可能不会在星期一之前。
  • 我们对 HBase 2.x 分支的更改,但不是 1.0.x 或 1.x。我们希望开源我们的更改(希望下周),并且可能还包括一个二进制文件。

标签: python hbase google-cloud-bigtable


【解决方案1】:

如上面的 cmets 中所述,我们已向 Apache HBase 项目提交补丁以修复 ReST 和 Thrift - 它们也已被接受和集成。在我们等待包含它们的版本发布时,我们发布了temporary fork of 1.0.1 来帮助您解决此问题。合并这些更改后,我们将立即删除此分叉。

【讨论】:

    猜你喜欢
    • 2016-01-06
    • 2022-01-13
    • 2016-06-13
    • 2016-12-10
    • 1970-01-01
    • 2017-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多