嗨,我在一个大表上运行phoenix count查询时收到下面的错误消息。
0: jdbc:phoenix:hadoopm1:2181> select Count(*) from PJM_DATASET;
+------------+
| COUNT(1) |
+------------+
java.lang.RuntimeException: org.apache.phoenix.exception.PhoenixIOException: org.apache.phoenix.exception.PhoenixIOException: Failed after attempts=36, exceptions:
Fri Jan 09 02:18:10 CST 2015, null, java.net.SocketTimeoutException: callTimeout=60000, callDuration=62365: row '' on table 'PJM_DATASET' at region=PJM_DATASET,,1420633295836.4394a3aa2721f87f3e6216d20ebeec44., hostname=hadoopctrl,60020,1420790733247, seqNum=27753
at sqlline.SqlLine$IncrementalRows.hasNext(SqlLine.java:2440)
at sqlline.SqlLine$TableOutputFormat.print(SqlLine.java:2074)
at sqlline.SqlLine.print(SqlLine.java:1735)
at sqlline.SqlLine$Commands.execute(SqlLine.java:3683)
at sqlline.SqlLine$Commands.sql(SqlLine.java:3584)
at sqlline.SqlLine.dispatch(SqlLine.java:821)
at sqlline.SqlLine.begin(SqlLine.java:699)
at sqlline.SqlLine.mainWithInputRedirection(SqlLine.java:441)
at sqlline.SqlLine.main(SqlLine.java:424)
0: jdbc:phoenix:hadoopm1:2181>
请帮忙。
3条答案
按热度按时间qyuhtwio1#
(原题三年后)
我们今天遇到了非常类似的例外:
在跟踪异常的调用跟踪之后,我们发现正确的配置变量是
hbase.client.scanner.timeout.period
. 可以在课堂上找到org.apache.hadoop.hbase.HConstants
以他的名义HBASE_CLIENT_SCANNER_TIMEOUT_PERIOD
.请注意,如果要传递
hbase.client.scanner.timeout.period
作为财产PhoenixDriver
使用原始jdbc,值必须String
,不是int
.比如:
作为记录,我们在hbase 1.1上使用phoenix 4.7
mbyulnm02#
您需要在hbase服务器和客户端配置中将下面的hbase配置属性增加到更高的值,默认值为1分钟(60000毫秒)
最重要的是,下面的命令应该返回正确的hbase config目录,其中hbase-site.xml文件包含上述属性。如果hbase\u conf\u path的值为空或,则执行命令
export HADOOP_CONF_DIR=<correct_hbase_dir>;
用于在执行命令之前指向正确的hbase配置sqlline.py
.gxwragnw3#
calltimeout=60000,callduration=62365。
看起来您的通话持续时间超过10分钟,这是超时持续时间。尝试将hbase-default.xml(或您的自定义)配置文件中的“hbase.master.catalog.timeout”设置为更高的值