hbasethrift2java_hBase-thrift实践(java)参考官⽹:
环境:hbase-0.98.1-cdh5.1.0,hadoop-2.3.0-cdh5.1.0,centos6.5 x64,thrift2
1.引⼊maven依赖
hbase已整合了thrift,如果是java不⽤再安装thrift产⽣服务端代码,只引⼊下⾯依赖:
org.apache.hbase
hbase-thrift
0.98.1-cdh5.1.0
2.开启hbase-thrift服务
这⾥采⽤thrift2,thrift2是thrift的升级版。
[hbase-root]/bin/hbase thrift2 start
默认端⼝是9090
3.编写客户端⽰例程序
实现了新增⼀条记录,查询⼀条记录
/**
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.jamesfen.hbase;
import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.List;
import org.apache.hadoop.ated.TColumnValue;
import org.apache.hadoop.ated.TGet;
import org.apache.hadoop.ated.THBaseService;
import org.apache.hadoop.ated.TIOError;
import org.apache.hadoop.ated.TPut;
import org.apache.hadoop.ated.TResult;
import org.apache.thrift.TException;
import org.apache.thrift.protocol.TBinaryProtocol;
import org.apache.thrift.protocol.TProtocol;
import org.ansport.TFramedTransport;
import org.ansport.TSocket;
import org.ansport.TTransport;
public class DemoClient {
public static void main(String[] args) throws TIOError, TException {
System.out.println("Thrift2 Demo");
System.out.println("Usage: DemoClient [host=localhost] [port=9090]");
System.out.println("This demo assumes you have a table called \"example\" with a column family called \"family1\""); String host = "192.168.58.101";
int port = 9090;
// use passed in arguments instead of defaults
if (args.length >= 1) {
host = args[0];
}
if (args.length >= 2) {
port = Integer.parseInt(args[1]);
}
int timeout = 10000;
boolean framed = false;
TTransport transport = new TSocket(host, port, timeout);
if (framed) {
transport = new TFramedTransport(transport);
}
TProtocol protocol = new TBinaryProtocol(transport);
/
/ This is our thrift client.
THBaseService.Iface client = new THBaseService.Client(protocol);
// open the transport
transport.open();
ByteBuffer table = ByteBuffer.wrap("blog".getBytes());
TPut put = new TPut();
put.setRow("103".getBytes());
TColumnValue columnValue = new TColumnValue();
columnValue.setFamily("article".getBytes());
columnValue.setQualifier("title,".getBytes());
columnValue.setValue("change thirft".getBytes());
List columnValues = new ArrayList();
columnValues.add(columnValue);
put.setColumnValues(columnValues);
client.put(table, put);
thriftTGet get = new TGet();
get.setRow("102".getBytes());
TResult result = (table, get);
System.out.print("row = " + new Row()));
for (TColumnValue resultColumnValue : ColumnValues()) {
System.out.print(",family = " + new Family()));
System.out.print(",qualifier = " + new Family()));
System.out.print(",value = " + new Value()));
System.out.print(",timestamp = " + Timestamp());
}
transport.close();
}
}
4.运⾏结果
row = 102,family = article,qualifier = article,value = change thirft,timestamp = 1423496756997
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论