问题标签 [hbase-client]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Hbase 客户端 API 未连接到 Hbase 抛出 SocketTimeoutException
我正在尝试在Cloudera 集群Hbase
中使用 Hbase 客户端 API进行连接。kerborized
示例代码:
我尝试在 maven 项目资源中设置hbase-site.xml ,也使用--jars在 spark-submit 命令中作为 jar 文件传递,但没有任何效果。
错误日志:
java - hbase中特定列的前缀搜索在java中不起作用
有一列可以说 hbase 中的国家,我想在此列上添加前缀(这不是行键)然后我将使用 ColumnPrefixFilter 并执行类似的操作
但在这里我有两个问题:-
- 我没有任何选项来指定列族和命名空间名称,以便它只能在国家列中搜索。
其次,这个过滤器不起作用并且没有响应,而具有印度值的条目存在。这些是我用于 hbase 的依赖项。
/li>
google-cloud-platform - 1.3 亿行的 Bigtable 扫描抛出 java.lang.IllegalStateException: Not started
尝试使用 HBase java 客户端扫描具有 1.3 亿行的 Bigtable。扫描几个小时后,它会抛出:
有一些这样的例外,重试恢复但最终导致:
java - 尽管超时时间较短,但稳定数量的 HBase 请求几乎需要 5000 毫秒才能完成(成功)。不知道为什么
我的客户端正在使用org.apache.hbase:hbase-client:2.1.0"
并且服务器正在运行 1.2.0-cdh5.11.1
(1.2.0-cdh5.11.0
在另一个测试集群中)。
我的客户端非常简单,它Connection
在启动时实例化一个类(这个类 - 正如 Apache 推荐的那样 - 因为它很重且线程安全,所以跨线程共享)。然后对于每个请求,它都会创建一个Table
类并执行一个.exists(new Get(rowKey))
操作。
所以像这样:
和
大多数情况下,到 HBase 和返回的请求延迟最多为 40 毫秒。通常它在 10 毫秒左右完成。
但是,我们注意到偶尔的请求大约需要 5000 毫秒(5 秒) - 但仍然成功完成!
偶尔我的意思是每分钟大约 1 个请求(每分钟总共 600 个请求,所以速度很小)。但它是稳定的。
这些几乎正好在 5 秒左右(+/- 100-200 毫秒)。这是奇怪的部分。这不是一个尖峰。
起初我怀疑这是客户端的错误配置,我需要设置更严格的超时,所以我设置了以下内容:
换句话说,5000 毫秒远远超过了全局超时(如 中设置的HConstants.HBASE_CLIENT_OPERATION_TIMEOUT
)。
然而,我的请求需要大约 5 秒才能完成 - 并且成功地完成了。
除了这些超时,我从 using 更改AsyncConnection
为Connection
(无论如何都不需要它是异步的)并且正在考虑只进行GET
调用而不是exists
.
但在这一点上,我被难住了。我没有看到任何财产以及 5s 的来源。它甚至不是超时,它实际上成功了!
有没有人遇到过这个?有没有办法让 hbase-client 发出指标?服务器端指标显示延迟没有增加(扫描指标)。
hbase - Hbase rest api 多次插入
我们计划使用 hbase rest api 对 hbase 表执行插入操作,并想知道是否有办法将多个列插入单个列族,甚至在一次调用中插入多个列族。
如果不是,因为我们计划为特定记录(行)插入大约 100+ 列,这将导致我们对单个行条目进行 100+ 次调用
docker - 从 docker 内运行的 HBase 读取数据时出现 ConnectionClosedException
我在 docker 中运行 HBase。我可以使用阴影客户端连接并执行 getClusterMetrics() 并获取表描述符。但是,当我尝试使用 get 或 scan 从表中读取数据时,我得到了这个异常
主日志包含这些警告:(编辑:这些似乎无关紧要)
HBase 版本是 2.2.2,Shaded 客户端也是 2.2.2。
编辑: 在 HBase 容器内执行客户端程序工作正常,这意味着这是某种连接问题。在我的 etc/hosts 中,我确实将 hbase 和 hadoop 都指向了 127.0.0.1
google-cloud-bigtable - 使用 Hbase 客户端扫描 bigtable 时出现 DEADLINE_EXCEEDED
基于前缀扫描大量行(约 100 万行)时出现以下错误
状态{code=DEADLINE_EXCEEDED, description=deadline exceeded: -646391190127 ns from now, cause=null}
有人可以建议BigtableOptions
我应该配置什么,以便我看不到 DEADLINE_EXCEEDED 错误。我尝试设置BIGTABLE_RPC_TIMEOUT_MS_KEY
和设置BIGTABLE_LONG_RPC_TIMEOUT_MS_KEY
较大的值,但仍然出现此错误。
java - HBase 客户端 - java.lang.ClassNotFoundException: org.apache.hadoop.crypto.key.KeyProviderTokenIssuer
我正在尝试运行一个连接到 HBase 的遗留项目。
它具有(在其他依赖项中):
当应用程序启动并createConnection
在类的方法中到达此代码时org.apache.hadoop.hbase.client.ConnectionFactory
:
抛出并捕获了一个异常,说:
所以我在谷歌中寻找这个类,KeyProviderTokenIssuer
但没有找到它应该来自哪里。
为什么系统试图使用这个类,我应该从哪里得到它?Crypto
包不是hbase-client
依赖项的一部分,我在https://mvnrepository.com/中看不到
这里是否可能存在一些库不匹配?
我在 Windows 上运行。可以相关吗?
java - 在每个 Apache Spark 工作节点上创建一个 java hbase 客户端实例
使用 Spark 结构化流。
我正在编写一个需要对数据进行大量查找的代码。查找非常复杂,只是不能很好地转换为连接。
例如,在表 B 中查找字段 A 并获取一个值,如果找到则在另一个表中查找该值。如果未找到,则在表 D 中查找其他值 C,然后依此类推。
我设法使用 HBase 编写了这些查找,它在功能上运行良好。我为这些查找中的每一个都编写了 udfs,例如一个非常简单的可能是:
由于 java hbase 客户端是不可序列化的。我正在像这样传递 Hbase 对象
HbaseUtilities 是我为简化查找而编写的一个类。它只是创建了一个 java HBase 客户端,并为我需要的那种 get 命令提供了一个包装器。
这使我的代码太慢了,这也没关系。令我困惑的是,增加或减少执行器或核心的数量对我的代码速度没有影响。无论是 1 个执行程序还是 30 个执行程序,它都以完全相同的速度运行。这让我相信缺乏并行性。所以我所有的工人都必须共享同一个 Hbase 对象。他们是我可以在每个工作人员开始执行之前在每个工作人员上实例化一个这样的对象的一种方式吗?我已经尝试过使用lazy val,它没有任何效果
我什至尝试创建一个 sharedSingleton ,如此处所示https://www.nicolaferraro.me/2016/02/22/using-non-serializable-objects-in-apache-spark/,它为我解决了一些问题,但不是并行度的损失。
我知道可能有更好的方法来解决问题,并且非常欢迎所有建议,但现在我陷入了一些限制和紧迫的时间表。
java - 在JAVA中异步放置数据期间捕获Hbase异常
我用表table-A
和table-B
.
put
之后,我使用 JAVA(带有HBaseClient
in )编写了将数据写入 HBase 的代码,org.hbase.async
如下所示。
当我放置具有表名table-C
(尚未创建)的数据时,它不会出现错误,ERROR: Unknown table
但只会重新尝试放置数据直到成功。
我想做的是捕获特定的异常ERROR: Unknown table
或其他异常以防止重试。我希望CloseErrCallback
可以捕获这些异常,但它不会帮助我。
异步将数据放入 HBase 时如何知道是否有异常?