ConnectionLossException
可能發生了一萬個理由。其中最可能的是查詢超時。
不幸的是,鳳凰有一個陡峭的學習曲線,就像HBase。你不能像在MySQL中那樣查詢你想要的任何內容,並讓它返回結果。這項工作在查詢編寫器上編寫非常非常高效的查詢。
嘗試使用ROWKEY作爲表以及時返回您的查詢。例如,在我們的表格中,我們的ROWKEY在開始時包含了一個非常熟悉的結構ID。所以我知道,如果我運行這樣的查詢:
select count(*) from "table" where ROWKEY like '0%' and "bla" = '123';
,在我的特定的表,我要得到表的結果早在我數的10%。於是我就加倍重視自己的計數由10
要啓動,請嘗試以下查詢:
select ROWKEY from "table" limit 1;
如果返回,那麼你知道我是對的,你的工作,從有到非常寫,很高效的,有限的結果查詢。
你可以嘗試的另一件事:通過你的hbase-site.xml擴展超時。以下是我使用phoenix的客戶端hbase-site.xml:
<configuration>
<property>
<name>hbase.regionserver.wal.codec</name>
<value>org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec</value>
</property>
<property>
<name>hbase.client.scanner.caching</name>
<value>1000</value>
</property>
<property>
<name>hbase.client.scanner.timeout.period</name>
<value>600000</value>
</property>
<property>
<name>hbase.rpc.timeout</name>
<value>1800000</value>
</property>
<property>
<name>phoenix.query.threadPoolSize</name>
<value>768</value>
</property>
<property>
<name>phoenix.query.queueSize</name>
<value>15000</value>
</property>
<property>
<name>phoenix.query.keepAliveMs</name>
<value>300000</value>
</property>
<property>
<name>phoenix.connection.autoCommit</name>
<value>true</value>
</property>
<property>
<name>phoenix.schema.dropMetaData</name>
<value>false</value>
</property>
<property>
<name>phoenix.sequence.saltBuckets</name>
<value>0</value>
</property>
</configuration>
這些設置將允許您編寫效率稍低的查詢。