c语言sscanf函数的用法是什么
274
2022-11-25
Hadoop学习笔记之HBase客户端程序开发
先说一下今天的学习目标:
今天我们将使用Java在Window7客户端上对HBase进行调用,进行创建表,插入行,读取行,读取所有表记录,删除表等基础操作。
下面开始今天的学习
1.开启hadoop,并测试是否可用
2.开启HBase
3.开始Eclipse 连接HDFS
连接成功
4.创建项目Hadoop_5_HBase开始编程
我们将要创建HBaseHelper.java和HBaseInvoke.java两个类。
HBaseHelper:主要实现对HBase的连接和对数据库的构建、创建表、删除表、插入记录、删除记录、获取一条记录、获取所有记录等功能。
HBaseInvoke :主要实现通过对HBaseHelper的调用实现对HBase的基础操作的测试。
HBaseHelper.java 代码如下:
package com.hugy.hadoop;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.client.Delete;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.HBaseAdmin;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.ResultScanner;
import org.apache.hadoop.hbase.client.Scan;
public class HBaseHelper {
private Configuration conf;// 配置器
private HBaseAdmin admin;// HBase管理员
/**
* 获取HBase配置器
*
* @param conf
* Hadoop配置器
* @throws IOException
*/
public HBaseHelper(Configuration conf) throws IOException {
this.conf = HBaseConfiguration.create(conf);
this.admin = new HBaseAdmin(this.conf);
System.out.println("创建HBase配置成功!");
}
/**
* 获取HBase配置器
*
* @throws IOException
*/
public HBaseHelper() throws IOException {
Configuration cnf = new Configuration();
this.conf = HBaseConfiguration.create(cnf);
this.admin = new HBaseAdmin(this.conf);
System.out.println("创建HBase配置成功!");
}
/**
* 创建HBase表
*
* @param tableName
* 表名
* @param colFamilies
* 列簇
* @throws IOException
*/
public void createTable(String tableName, String colFamilies[])
throws IOException {
if (this.admin.tableExists(tableName)) {
System.out.println("Table: " + tableName + " already exists !");
} else {
HTableDescriptor dsc = new HTableDescriptor(tableName);
int len = colFamilies.length;
for (int i = 0; i < len; i++) {
HColumnDescriptor family = new HColumnDescriptor(colFamilies[i]);
dsc.addFamily(family);
}
admin.createTable(dsc);
System.out.println("创建表" + tableName + "成功");
}
}
/**
* 删除表
*
* @param tableName
* 表名
* @throws IOException
*/
public void deleteTable(String tableName) throws IOException {
if (this.admin.tableExists(tableName)) {
admin.disableTable(tableName);
System.out.println("禁用表" + tableName + "!");
admin.deleteTable(tableName);
System.out.println("删除表成功!");
} else {
System.out.println(tableName + "表不存在 !");
}
}
/**
* 插入记录
*
* @param tableName
* 表名
* @param rowkey
* 键
* @param family
* 簇
* @param qualifier
* @param value
* 值
* @throws IOException
*/
public void insertRecord(String tableName, String rowkey, String family,
String qualifier, String value) throws IOException {
HTable table = new HTable(this.conf, tableName);
Put put = new Put(rowkey.getBytes());
put.add(family.getBytes(), qualifier.getBytes(), value.getBytes());
table.put(put);
System.out.println(tableName + "插入key:" + rowkey + "行成功!");
}
/**
* 删除一行记录
*
* @param tableName
* 表名
* @param rowkey
* 主键
* @throws IOException
*/
public void deleteRecord(String tableName, String rowkey)
throws IOException {
HTable table = new HTable(this.conf, tableName);
Delete del = new Delete(rowkey.getBytes());
table.delete(del);
System.out.println(tableName + "删除行" + rowkey + "成功!");
}
/**
* 获取一条记录
*
* @param tableName
* 表名
* @param rowkey
* 主键
* @return
* @throws IOException
*/
public Result getOneRecord(String tableName, String rowkey)
throws IOException {
HTable table = new HTable(this.conf, tableName);
Get get = new Get(rowkey.getBytes());
Result rs = table.get(get);
return rs;
}
/**
* 获取所有数据
* @param tableName 表名
* @return
* @throws IOException
*/
public List
HBaseInvoke.java代码如下:
package com.hugy.hadoop;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.KeyValue;
import org.apache.hadoop.hbase.client.Result;
public class HBaseInvoke {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
System.out.println("HBase 操作开始...");
// 1.初始化HBaseOperation
Configuration conf = new Configuration();
// 与hbase/conf/hbase-site.xml中hbase.zookeeper.quorum配置的值相同
conf.set("hbase.zookeeper.quorum", "hadoop");
// 与hbase/conf/hbase-site.xml中hbase.zookeeper.property.clientPort配置的值相同
conf.set("hbase.zookeeper.property.clientPort", "2181");
HBaseHelper hbase = new HBaseHelper(conf);
// 2.测试相应操作
// 2.1创建表
String tableName = "blog";
hbase.deleteTable(tableName);
String colFamilies[] = { "article", "author" };
hbase.createTable(tableName, colFamilies);
// 2.2插入一条记录
hbase.insertRecord(tableName, "1", "article", "title", "Hadoop学习资料");
hbase.insertRecord(tableName, "1", "author", "name", "hugengyong");
hbase.insertRecord(tableName, "1", "article", "content", "Hadoop学习,HBase学习-http://blog.csdn.net/hugengyong");
// 2.3查询一条记录
Result rs1 = hbase.getOneRecord(tableName, "1");
for (KeyValue kv : rs1.raw()) {
System.out.println(new String(kv.getRow()));
System.out.println(new String(kv.getFamily()));
System.out.println(new String(kv.getQualifier()));
System.out.println(new String(kv.getValue()));
}
// 2.4查询整个Table
List
执行结果如下:
HBase 操作开始...
14/07/26 19:44:54 INFO zookeeper.ZooKeeper: Client environment:zookeeper.version=3.4.5-1392090, built on 09/30/2012 17:52 GMT
14/07/26 19:44:54 INFO zookeeper.ZooKeeper: Client environment:host.name=hugengyong-PC
14/07/26 19:44:54 INFO zookeeper.ZooKeeper: Client environment:java.version=1.6.0_13
14/07/26 19:44:54 INFO zookeeper.ZooKeeper: Client environment:java.vendor=Sun Microsystems Inc.
14/07/26 19:44:54 INFO zookeeper.ZooKeeper: Client environment:java.home=D:\JavaJDK\jdk\jre
14/07/26 19:44:54 INFO zookeeper.ZooKeeper: Client environment:java.class.path=D:\AndroidWork\Hadoop_5_HBase\bin;F:\Hadoop\HadoopTools\hbase-0.94.20\hbase-0.94.20\lib\activation-1.1.jar;F:\Hadoop\HadoopTools\hbase-0.94.20\hbase-0.94.20\lib\asm-3.1.jar;F:\Hadoop\HadoopTools\hbase-0.94.20\hbase-0.94.20\lib\avro-1.5.3.jar;F:\Hadoop\HadoopTools\hbase-0.94.20\hbase-0.94.20\lib\avro-ipc-1.5.3.jar;F:\Hadoop\HadoopTools\hbase-0.94.20\hbase-0.94.20\lib\commons-beanutils-1.7.0.jar;F:\Hadoop\HadoopTools\hbase-0.94.20\hbase-0.94.20\lib\commons-beanutils-core-1.8.0.jar;F:\Hadoop\HadoopTools\hbase-0.94.20\hbase-0.94.20\lib\commons-cli-1.2.jar;F:\Hadoop\HadoopTools\hbase-0.94.20\hbase-0.94.20\lib\commons-codec-1.4.jar;F:\Hadoop\HadoopTools\hbase-0.94.20\hbase-0.94.20\lib\commons-collections-3.2.1.jar;F:\Hadoop\HadoopTools\hbase-0.94.20\hbase-0.94.20\lib\commons-configuration-1.6.jar;F:\Hadoop\HadoopTools\hbase-0.94.20\hbase-0.94.20\lib\commons-digester-1.8.jar;F:\Hadoop\HadoopTools\hbase-0.94.20\hbase-0.94.20\lib\commons-el-1.0.jar;F:\Hadoop\HadoopTools\hbase-0.94.20\hbase-0.94.20\lib\commons-httpclient-3.1.jar;F:\Hadoop\HadoopTools\hbase-0.94.20\hbase-0.94.20\lib\commons-io-2.1.jar;F:\Hadoop\HadoopTools\hbase-0.94.20\hbase-0.94.20\lib\commons-lang-2.5.jar;F:\Hadoop\HadoopTools\hbase-0.94.20\hbase-0.94.20\lib\commons-logging-1.1.1.jar;F:\Hadoop\HadoopTools\hbase-0.94.20\hbase-0.94.20\lib\commons-math-2.1.jar;F:\Hadoop\HadoopTools\hbase-0.94.20\hbase-0.94.20\lib\commons-net-1.4.1.jar;F:\Hadoop\HadoopTools\hbase-0.94.20\hbase-0.94.20\lib\core-3.1.1.jar;F:\Hadoop\HadoopTools\hbase-0.94.20\hbase-0.94.20\lib\guava-11.0.2.jar;F:\Hadoop\HadoopTools\hbase-0.94.20\hbase-0.94.20\lib\hadoop-core-1.0.4.jar;F:\Hadoop\HadoopTools\hbase-0.94.20\hbase-0.94.20\lib\hamcrest-core-1.3.jar;F:\Hadoop\HadoopTools\hbase-0.94.20\hbase-0.94.20\lib\high-scale-lib-1.1.1.jar;F:\Hadoop\HadoopTools\hbase-0.94.20\hbase-0.94.20\lib\httpclient-4.1.2.jar;F:\Hadoop\HadoopTools\hbase-0.94.20\hbase-0.94.20\lib\httpcore-4.1.3.jar;F:\Hadoop\HadoopTools\hbase-0.94.20\hbase-0.94.20\lib\jackson-core-asl-1.8.8.jar;F:\Hadoop\HadoopTools\hbase-0.94.20\hbase-0.94.20\lib\jackson-jaxrs-1.8.8.jar;F:\Hadoop\HadoopTools\hbase-0.94.20\hbase-0.94.20\lib\jackson-mapper-asl-1.8.8.jar;F:\Hadoop\HadoopTools\hbase-0.94.20\hbase-0.94.20\lib\jackson-xc-1.8.8.jar;F:\Hadoop\HadoopTools\hbase-0.94.20\hbase-0.94.20\lib\jamon-runtime-2.3.1.jar;F:\Hadoop\HadoopTools\hbase-0.94.20\hbase-0.94.20\lib\jasper-compiler-5.5.23.jar;F:\Hadoop\HadoopTools\hbase-0.94.20\hbase-0.94.20\lib\jasper-runtime-5.5.23.jar;F:\Hadoop\HadoopTools\hbase-0.94.20\hbase-0.94.20\lib\jaxb-api-2.1.jar;F:\Hadoop\HadoopTools\hbase-0.94.20\hbase-0.94.20\lib\jaxb-impl-2.2.3-1.jar;F:\Hadoop\HadoopTools\hbase-0.94.20\hbase-0.94.20\lib\jersey-core-1.8.jar;F:\Hadoop\HadoopTools\hbase-0.94.20\hbase-0.94.20\lib\jersey-json-1.8.jar;F:\Hadoop\HadoopTools\hbase-0.94.20\hbase-0.94.20\lib\jersey-server-1.8.jar;F:\Hadoop\HadoopTools\hbase-0.94.20\hbase-0.94.20\lib\jettison-1.1.jar;F:\Hadoop\HadoopTools\hbase-0.94.20\hbase-0.94.20\lib\jetty-6.1.26.jar;F:\Hadoop\HadoopTools\hbase-0.94.20\hbase-0.94.20\lib\jetty-util-6.1.26.jar;F:\Hadoop\HadoopTools\hbase-0.94.20\hbase-0.94.20\lib\jruby-complete-1.6.5.jar;F:\Hadoop\HadoopTools\hbase-0.94.20\hbase-0.94.20\lib\jsp-2.1-6.1.14.jar;F:\Hadoop\HadoopTools\hbase-0.94.20\hbase-0.94.20\lib\jsp-api-2.1-6.1.14.jar;F:\Hadoop\HadoopTools\hbase-0.94.20\hbase-0.94.20\lib\jsr305-1.3.9.jar;F:\Hadoop\HadoopTools\hbase-0.94.20\hbase-0.94.20\lib\junit-4.11.jar;F:\Hadoop\HadoopTools\hbase-0.94.20\hbase-0.94.20\lib\libthrift-0.8.0.jar;F:\Hadoop\HadoopTools\hbase-0.94.20\hbase-0.94.20\lib\log4j-1.2.16.jar;F:\Hadoop\HadoopTools\hbase-0.94.20\hbase-0.94.20\lib\metrics-core-2.1.2.jar;F:\Hadoop\HadoopTools\hbase-0.94.20\hbase-0.94.20\lib\netty-3.2.4.Final.jar;F:\Hadoop\HadoopTools\hbase-0.94.20\hbase-0.94.20\lib\protobuf-java-2.4.0a.jar;F:\Hadoop\HadoopTools\hbase-0.94.20\hbase-0.94.20\lib\servlet-api-2.5-6.1.14.jar;F:\Hadoop\HadoopTools\hbase-0.94.20\hbase-0.94.20\lib\slf4j-api-1.4.3.jar;F:\Hadoop\HadoopTools\hbase-0.94.20\hbase-0.94.20\lib\slf4j-log4j12-1.4.3.jar;F:\Hadoop\HadoopTools\hbase-0.94.20\hbase-0.94.20\lib\snappy-java-1.0.3.2.jar;F:\Hadoop\HadoopTools\hbase-0.94.20\hbase-0.94.20\lib\stax-api-1.0.1.jar;F:\Hadoop\HadoopTools\hbase-0.94.20\hbase-0.94.20\lib\velocity-1.7.jar;F:\Hadoop\HadoopTools\hbase-0.94.20\hbase-0.94.20\lib\xmlenc-0.52.jar;F:\Hadoop\HadoopTools\hbase-0.94.20\hbase-0.94.20\lib\zookeeper-3.4.5.jar;F:\Hadoop\HadoopTools\hbase-0.94.20\hbase-0.94.20\hbase-0.94.20.jar;F:\Hadoop\HadoopTools\hbase-0.94.20\hbase-0.94.20\hbase-0.94.20-tests.jar
14/07/26 19:44:54 INFO zookeeper.ZooKeeper: Client environment:java.library.path=D:\JavaJDK\jdk\bin;.;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;D:/JavaJDK/jdk/bin/../jre/bin/client;D:/JavaJDK/jdk/bin/../jre/bin;D:/JavaJDK/jdk/bin/../jre/lib/i386;D:\JavaJDK\jdk\bin;D:\JavaJDK\jdk\jre\bin;C:\Program Files\Common Files\NetSarang;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;D:\JavaJDK\eclipse-jee-juno-SR1-win32\eclipse;
14/07/26 19:44:54 INFO zookeeper.ZooKeeper: Client environment:java.io.tmpdir=C:\Users\ADMINI~1\AppData\Local\Temp\
14/07/26 19:44:54 INFO zookeeper.ZooKeeper: Client environment:java.compiler=
HBase数据库操作代码编写完成测试成功。
5.查看HBase目录结构如下图所示
今天的学习笔记就记录到这里。
下一节我们来分析一下HBase的用途,什么样的需求适合使用HBase数据库。
以及HBase的真实应用场景。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~