1.添加依赖
新建maven项目。并添加依赖
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-client</artifactId>
<version>1.2.0</version>
</dependency>
2.Hbase核心API
2.1 获取Configuration对象
Connection代表对集群的连接对象,封装了与实际服务器的低级别单独连接以及与zookeeper的连接。
Connection可以通过ConnectionFactory类实例化。
Connection的生命周期由调用者管理,使用完毕后需要执行close()以释放资源。
Connection是线程安全的,多个Table和Admin可以共用同一个Connection对象。因此一个客户端只需要实例化一个连接即可。
反之,Table和Admin不是线程安全的!因此不建议并缓存或池化这两种对象。
public static Configuration getConf(){
//使用HBaseConfiguration的单例方法实例化
Configuration conf= HBaseConfiguration.create();
conf.addResource(new Path("/opt/hbase/conf/hbase-site.xml"));
conf.addResource(new Path("/opt/hadoop/etc/hadoop/core-site.xml"));
return conf;
}
2.2 创建表
Admin为HBase的管理类,可以通过Connection.getAdmin()获取实例,且在使用完成后调用close()关闭。
Admin可用于创建,删除,列出,启用和禁用以及以其他方式修改表,以及执行其他管理操作。
package cnkgc.hb09;
import cnkgc.hb09.until.HBaseConfs;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Admin;
import java.io.IOException;
public class CreateTable {
public static void main(String[] args){
Admin admin= HBaseConfs.getAdmin();
HTableDescriptor htd=new HTableDescriptor(TableName.valueOf(args[0]));
for (int i = 0; i < args.length; i++) {
HColumnDescriptor family=new HColumnDescriptor(args[i]);
htd.addFamily(family);
}
try {
admin.createTable(htd);
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
admin.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
2.3插入数据
package cnkgc.hb09;
import cnkgc.hb09.until.HBaseConfs;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Admin;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Table;
import java.io.IOException;
public class insertTable {
public static void main(String[] args) throws IOException {
Connection conn= HBaseConfs.getConn();
Admin admin=HBaseConfs.getAdmin();
TableName[] tableNames = admin.listTableNames();
for (TableName tableName : tableNames) {
System.out.println(tableName.getNameAsString());
}
Table table=conn.getTable(TableName.valueOf("hello"));
String[][] values={
{"1","asfwf","awff","1st White House","WDC"},
{"2","鲍sdf","asda","10th 唐宁街","London"},
{"3","jp","asd","111th sefesg","Beijing"},
{"4","sp","asfdwf","地下sdfesg基地","PingRing"}
};
for (int i = 0; i < values.length; i++) {
Put put=new Put(values[i][0].getBytes());
put.addColumn("name".getBytes(),"fname".getBytes(),values[i][1].getBytes());
put.addColumn("name".getBytes(),"lname".getBytes(),values[i][2].getBytes());
put.addColumn("addr".getBytes(),"address".getBytes(),values[i][3].getBytes());
put.addColumn("addr".getBytes(),"city".getBytes(),values[i][4].getBytes());
table.put(put);
}
admin.close();
conn.close();
}
}
2.4打jar包并使用
首先测试创建表,将其打为jar包
将打好的jar包上传到服务器
使用jar包
hadoop jar jar包路径 jar包main方法路径 变量值