/*
<div>
<span style="font-size:10pt;color:#3f7f5f;font-family:'Consolas';"> *版權:王安琪</span> </div>
<div>
<span style="font-size:10pt;color:#3f7f5f;font-family:'Consolas';"> *描述:監視HBase,一有數據postPut就向<span style="text-decoration:underline;">Solr</span>發送,本類要作為觸發器添加到HBase</span> </div>
<div>
<span style="font-size:10pt;color:#3f7f5f;font-family:'Consolas';"> *修改時間:2014-05-27</span> </div>
<div>
<span style="font-size:10pt;color:#3f7f5f;font-family:'Consolas';"> *修改內容:新增</span> </div>
<div>
<span style="font-size:10pt;color:#3f7f5f;font-family:'Consolas';"> */</span> </div>
<div>
<span style="font-size:10pt;color:#7f0055;font-family:'Consolas';">package<span style="color:windowtext;"> solrHbase.test;</span></span> </div>
<div>
</div>
<div>
<span style="font-size:10pt;color:#7f0055;font-family:'Consolas';">import<span style="color:windowtext;"> java.io.UnsupportedEncodingException;</span></span> </div>
<div>
</div>
<div>
<span style="font-size:10pt;color:#7f0055;font-family:'Consolas';">import<span style="color:windowtext;"> ***;</span></span> </div>
<div>
</div>
<div>
<span style="font-size:10pt;color:#7f0055;font-family:'Consolas';">public<span style="color:windowtext;"> </span>class<span style="color:windowtext;"> SorlIndexCoprocessorObserver </span>extends<span style="color:windowtext;"> BaseRegionObserver {</span></span> </div>
<div>
</div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> <span style="color:#7f0055;">private</span> <span style="color:#7f0055;">static</span> <span style="color:#7f0055;">final</span> Logger <span style="color:#0000c0;">LOG</span> = LoggerFactory</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> .<span style="font-style:italic;">getLogger</span>(SorlIndexCoprocessorObserver.<span style="color:#7f0055;">class</span>);</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> <span style="color:#7f0055;">private</span> <span style="color:#7f0055;">static</span> <span style="color:#7f0055;">final</span> String <span style="color:#0000c0;">solrUrl</span> = <span style="color:#2a00ff;">"http://192.1.11.108:80/solr/core1"</span>;</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> <span style="color:#7f0055;">private</span> <span style="color:#7f0055;">static</span> <span style="color:#7f0055;">final</span> SolrServer <span style="color:#0000c0;">solrServer</span> = <span style="color:#7f0055;">new</span> ConcurrentUpdateSolrServer(</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> <span style="color:#0000c0;">solrUrl</span>, 10000, 20);</span> </div>
<div>
</div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> <span style="color:#3f5fbf;">/**</span></span> </div>
<div>
<span style="font-size:10pt;color:#3f5fbf;font-family:'Consolas';"> * 建立<span style="text-decoration:underline;">solr</span>索引</span> </div>
<div>
<span style="font-size:10pt;color:#3f5fbf;font-family:'Consolas';"> * </span> </div>
<div>
<span style="font-size:10pt;color:#3f5fbf;font-family:'Consolas';"> * <span style="color:#7f9fbf;">@throws</span> UnsupportedEncodingException</span> </div>
<div>
<span style="font-size:10pt;color:#3f5fbf;font-family:'Consolas';"> */</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> <span style="color:#646464;">@Override</span></span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> <span style="color:#7f0055;">public</span> <span style="color:#7f0055;">void</span> postPut(<span style="color:#7f0055;">final</span> ObserverContext<regioncoprocessorenvironment> e,</regioncoprocessorenvironment></span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> <span style="color:#7f0055;">final</span> Put put, <span style="color:#7f0055;">final</span> WALEdit edit, <span style="color:#7f0055;">final</span> <span style="color:#7f0055;">boolean</span> writeToWAL)</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> <span style="color:#7f0055;">throws</span> UnsupportedEncodingException {</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> inputSolr(put);</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> }</span> </div>
<div>
</div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> <span style="color:#7f0055;">public</span> <span style="color:#7f0055;">void</span> inputSolr(Put put) {</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> <span style="color:#7f0055;">try</span> {</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> <span style="color:#0000c0;">solrServer</span>.add(TestSolrMain.<span style="font-style:italic;">getInputDoc</span>(put));</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> } <span style="color:#7f0055;">catch</span> (Exception ex) {</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> <span style="color:#0000c0;">LOG</span>.error(ex.getMessage());</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> }</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> }</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';">}</span> </div>
</td>
</tr>
</tbody>
</table>
</div>
注意:getInputDoc是這個HBase協處理器Coprocessor的精髓所在,它可以把HBase內的Put里的內容轉化成Solr需要的值。其中 String fieldName = key.substring(key.indexOf( columnFamily ) + 3, key.indexOf( "我在這" )).trim(); 這里有一個亂碼字符,在這里看不到,請大家注意一下。
public static SolrInputDocument getInputDoc(Put put) {
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> SolrInputDocument doc = <span style="color:#7f0055;">new</span> SolrInputDocument();</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> doc.addField(<span style="color:#2a00ff;">"test_ID"</span>, Bytes.<span style="font-style:italic;">toString</span>(put.getRow()));</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> <span style="color:#7f0055;">for</span> (KeyValue c : put.getFamilyMap().get(Bytes.<span style="font-style:italic;">toBytes</span>(<span style="color:#0000c0;">columnFamily</span>))) {</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> String key = Bytes.<span style="font-style:italic;">toString</span>(c.getKey());</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> String value = Bytes.<span style="font-style:italic;">toString</span>(c.getValue());</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> <span style="color:#7f0055;">if</span> (value.isEmpty()) {</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> <span style="color:#7f0055;">continue</span>;</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> }</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> String fieldName = key.substring(key.indexOf(<span style="color:#0000c0;">columnFamily</span>) + 3,</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> key.indexOf(<span style="color:#2a00ff;">""</span>)).trim();</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> doc.addField(fieldName, value);</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> }</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> <span style="color:#7f0055;">return</span> doc;</span> </div>
}</td>
</tr>
</tbody>
</table>
</div>
二、編寫測試程序入口代碼main
?這段代碼向HBase請求建了一張表,并將模擬的數據,向HBase連續地提交數據內容,在HBase中不斷地插入數據,同時記錄時間,測試插入性能。 </div>
/*
<div>
<span style="font-size:10pt;color:#3f7f5f;font-family:'Consolas';"> *版權:王安琪</span> </div>
<div>
<span style="font-size:10pt;color:#3f7f5f;font-family:'Consolas';"> *描述:測試HBaseInsert,HBase插入性能</span> </div>
<div>
<span style="font-size:10pt;color:#3f7f5f;font-family:'Consolas';"> *修改時間:2014-05-27</span> </div>
<div>
<span style="font-size:10pt;color:#3f7f5f;font-family:'Consolas';"> *修改內容:新增</span> </div>
<div>
<span style="font-size:10pt;color:#3f7f5f;font-family:'Consolas';"> */</span> </div>
<div>
<span style="font-size:10pt;color:#7f0055;font-family:'Consolas';">package<span style="color:windowtext;"> solrHbase.test;</span></span> </div>
<div>
</div>
<div>
<span style="font-size:10pt;color:#7f0055;font-family:'Consolas';">import<span style="color:windowtext;"> hbaseInput.HbaseInsert;</span></span> </div>
<div>
</div>
<div>
<span style="font-size:10pt;color:#7f0055;font-family:'Consolas';">import<span style="color:windowtext;"> ***;</span></span> </div>
<div>
</div>
<div>
<span style="font-size:10pt;color:#7f0055;font-family:'Consolas';">public<span style="color:windowtext;"> </span>class<span style="color:windowtext;"> TestHBaseMain {</span></span> </div>
<div>
</div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> <span style="color:#7f0055;">private</span> <span style="color:#7f0055;">static</span> Configuration <span style="color:#0000c0;">config</span>;</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> <span style="color:#7f0055;">private</span> <span style="color:#7f0055;">static</span> String <span style="color:#0000c0;">tableName</span> = <span style="color:#2a00ff;">"angelHbase"</span>;</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> <span style="color:#7f0055;">private</span> <span style="color:#7f0055;">static</span> HTable <span style="color:#0000c0;">table</span> = <span style="color:#7f0055;">null</span>;</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> <span style="color:#7f0055;">private</span> <span style="color:#7f0055;">static</span> <span style="color:#7f0055;">final</span> String <span style="color:#0000c0;">columnFamily</span> = <span style="color:#2a00ff;">"wanganqi"</span>;</span> </div>
<div>
</div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> <span style="color:#3f5fbf;">/**</span></span> </div>
<div>
<span style="font-size:10pt;color:#3f5fbf;font-family:'Consolas';"> * <span style="color:#7f9fbf;">@param</span> args</span> </div>
<div>
<span style="font-size:10pt;color:#3f5fbf;font-family:'Consolas';"> */</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> <span style="color:#7f0055;">public</span> <span style="color:#7f0055;">static</span> <span style="color:#7f0055;">void</span> main(String[] args) {</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> <span style="color:#0000c0;">config</span> = HBaseConfiguration.<span style="font-style:italic;">create</span>();</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> <span style="color:#0000c0;">config</span>.set(<span style="color:#2a00ff;">"hbase.zookeeper.quorum"</span>, <span style="color:#2a00ff;">"192.103.101.104"</span>);</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> HbaseInsert.<span style="font-style:italic;">createTable</span>(<span style="color:#0000c0;">config</span>, <span style="color:#0000c0;">tableName</span>, <span style="color:#0000c0;">columnFamily</span>);</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> <span style="color:#7f0055;">try</span> {</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> <span style="color:#0000c0;">table</span> = <span style="color:#7f0055;">new</span> HTable(<span style="color:#0000c0;">config</span>, Bytes.<span style="font-style:italic;">toBytes</span>(<span style="color:#0000c0;">tableName</span>));</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> <span style="color:#7f0055;">for</span> (<span style="color:#7f0055;">int</span> k = 0; k < 1; k++) {</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> Thread t = <span style="color:#7f0055;">new</span> Thread() {</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> <span style="color:#7f0055;">public</span> <span style="color:#7f0055;">void</span> run() {</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> <span style="color:#7f0055;">for</span> (<span style="color:#7f0055;">int</span> i = 0; i < 100000; i++) {</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> HbaseInsert.<span style="font-style:italic;">inputData</span>(<span style="color:#0000c0;">table</span>,</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> PutCreater.<span style="font-style:italic;">createPuts</span>(1000, <span style="color:#0000c0;">columnFamily</span>));</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> Calendar c = Calendar.<span style="font-style:italic;">getInstance</span>();</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> String dateTime = c.get(Calendar.<span style="color:#0000c0;">YEAR</span>) + <span style="color:#2a00ff;">"-"</span></span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> + c.get(Calendar.<span style="color:#0000c0;">MONTH</span>) + <span style="color:#2a00ff;">"-"</span></span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> + c.get(Calendar.<span style="color:#0000c0;">DATE</span>) + <span style="color:#2a00ff;">"T"</span></span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> + c.get(Calendar.<span style="color:#0000c0;">HOUR</span>) + <span style="color:#2a00ff;">":"</span></span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> + c.get(Calendar.<span style="color:#0000c0;">MINUTE</span>) + <span style="color:#2a00ff;">":"</span></span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> + c.get(Calendar.<span style="color:#0000c0;">SECOND</span>) + <span style="color:#2a00ff;">":"</span></span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> + c.get(Calendar.<span style="color:#0000c0;">MILLISECOND</span>) + <span style="color:#2a00ff;">"Z 寫入: "</span></span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> + i * 1000;</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> System.<span style="color:#0000c0;">out</span>.println(dateTime);</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> }</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> }</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> };</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> t.start();</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> }</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> } <span style="color:#7f0055;">catch</span> (IOException e1) {</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> e1.printStackTrace();</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> }</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> }</span> </div>
<div>
</div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';">}</span> </div>
</td>
</tr>
</tbody>
</table>
</div>
?下面的是與HBase相關的操作,把它封裝到一個類中,這里就只有建表與插入數據的相關代碼。
/*
<div>
<span style="font-size:10pt;color:#3f7f5f;font-family:'Consolas';"> *版權:王安琪</span> </div>
<div>
<span style="font-size:10pt;color:#3f7f5f;font-family:'Consolas';"> *描述:與HBase相關操作,建表與插入數據</span> </div>
<div>
<span style="font-size:10pt;color:#3f7f5f;font-family:'Consolas';"> *修改時間:2014-05-27</span> </div>
<div>
<span style="font-size:10pt;color:#3f7f5f;font-family:'Consolas';"> *修改內容:新增</span> </div>
<div>
<span style="font-size:10pt;color:#3f7f5f;font-family:'Consolas';"> */</span> </div>
<div>
<span style="font-size:10pt;color:#7f0055;font-family:'Consolas';">package<span style="color:windowtext;"> hbaseInput;</span></span> </div>
<div>
<span style="font-size:10pt;color:#7f0055;font-family:'Consolas';">import<span style="color:windowtext;"> ***;</span></span> </div>
<div>
<span style="font-size:10pt;color:#7f0055;font-family:'Consolas';">import<span style="color:windowtext;"> org.apache.hadoop.hbase.client.Put;</span></span> </div>
<div>
</div>
<div>
<span style="font-size:10pt;color:#7f0055;font-family:'Consolas';">public<span style="color:windowtext;"> </span>class<span style="color:windowtext;"> HbaseInsert {</span></span> </div>
<div>
</div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> <span style="color:#7f0055;">public</span> <span style="color:#7f0055;">static</span> <span style="color:#7f0055;">void</span> createTable(Configuration config, String tableName,</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> String columnFamily) {</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> HBaseAdmin hBaseAdmin;</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> <span style="color:#7f0055;">try</span> {</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> hBaseAdmin = <span style="color:#7f0055;">new</span> HBaseAdmin(config);</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> <span style="color:#7f0055;">if</span> (hBaseAdmin.tableExists(tableName)) {</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> <span style="text-decoration:underline;color:#7f0055;">return<span style="color:windowtext;">;</span></span></span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> }</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> HTableDescriptor tableDescriptor = <span style="color:#7f0055;">new</span> HTableDescriptor(tableName);</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> tableDescriptor.addFamily(<span style="color:#7f0055;">new</span> HColumnDescriptor(columnFamily));</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> hBaseAdmin.createTable(tableDescriptor);</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> hBaseAdmin.close();</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> } <span style="color:#7f0055;">catch</span> (MasterNotRunningException e) {</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> e.printStackTrace();</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> } <span style="color:#7f0055;">catch</span> (ZooKeeperConnectionException e) {</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> e.printStackTrace();</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> } <span style="color:#7f0055;">catch</span> (IOException e) {</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> e.printStackTrace();</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> }</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> }</span> </div>
<div>
</div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> <span style="color:#7f0055;">public</span> <span style="color:#7f0055;">static</span> <span style="color:#7f0055;">void</span> inputData(HTable table, ArrayList<put> puts) {</put></span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> <span style="color:#7f0055;">try</span> {</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> table.put(puts);</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> table.flushCommits();</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> puts.clear();</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> } <span style="color:#7f0055;">catch</span> (IOException e) {</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> e.printStackTrace();</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> }</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> }</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';">}</span> </div>
</td>
</tr>
</tbody>
</table>
</div>
三、編寫模擬數據Put
向HBase中寫入數據需要構造Put,下面是我構造模擬數據Put的方式,有字符串的生成,我是由mmseg提供的詞典 words.dic 中隨機讀取一些詞語連接起來,生成一句字符串的,下面的代碼沒有體現,不過很easy,你自己造你自己想要的數據就OK了。
public static Put createPut(String columnFamily) {
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> String ss = <span style="font-style:italic;">getSentence</span>();</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> </span> <span style="font-family:Consolas;font-size:10pt;color:#7f0055;">byte</span> <span style="color:windowtext;font-family:Consolas;font-size:10pt;">[] family = Bytes.</span> <span style="color:windowtext;font-family:Consolas;font-size:10pt;">toBytes</span> <span style="color:windowtext;font-family:Consolas;font-size:10pt;">(columnFamily);</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> <span style="color:#7f0055;">byte</span>[] rowKey = Bytes.<span style="font-style:italic;">toBytes</span>(<span style="color:#2a00ff;">""</span> + Math.<span style="font-style:italic;">abs</span>(<span style="color:#0000c0;">r</span>.nextLong()));</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> Put put = <span style="color:#7f0055;">new</span> Put(rowKey);</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> put.add(family, Bytes.<span style="font-style:italic;">toBytes</span>(<span style="color:#2a00ff;">"DeviceID"</span>),</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> Bytes.<span style="font-style:italic;">toBytes</span>(<span style="color:#2a00ff;">""</span> + Math.<span style="font-style:italic;">abs</span>(<span style="color:#0000c0;">r</span>.nextInt())));</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> ******</span> </div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> put.add(family, Bytes.<span style="font-style:italic;">toBytes</span>(<span style="color:#2a00ff;">"</span></span> <span style="color:#2a00ff;font-family:Consolas;">Company_mmsegsm</span> <span style="font-size:10pt;color:windowtext;font-family:'Consolas';"><span style="color:#2a00ff;">"</span>), Bytes.<span style="font-style:italic;">toBytes</span>(<span style="color:#2a00ff;">"ss"</span>));</span> </div>
<div>
</div>
<div>
<span style="font-size:10pt;color:windowtext;font-family:'Consolas';"> <span style="color:#7f0055;">return</span> put;</span> </div>
}</td>
</tr>
</tbody>
</table>
</div>
當然在運行上面這個程序之前,需要先在Solr里面配置好你需要的列信息,HBase、Solr安裝與配置,它們的基礎使用方法將會在之后的文章中介紹 。在這里,Solr的列配置就跟你使用createPut生成的Put搞成一樣的列名就行了,當然也可以使用動態列的形式。
四、直接對Solr性能測試
如果你不想對HBase與Solr的相結合進行測試,只想單獨對Solr的性能進行測試,這就更簡單了,完全可以利用上面的代碼段來測試,稍微組裝一下就可以了。
| | | | |