前提是hbase已经可以正常使用了。
maven依赖:
<dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-client</artifactId> <version>1.2.0</version> </dependency> <dependency> <groupId>jdk.tools</groupId> <artifactId>jdk.tools</artifactId> <version>1.6</version> <scope>system</scope> <systemPath>${JAVA_HOME}/lib/tools.jar</systemPath> </dependency>
main class
package hbase; import java.io.File; import java.io.IOException; import java.util.List; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.Cell; import org.apache.hadoop.hbase.CellUtil; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.client.Connection; import org.apache.hadoop.hbase.client.ConnectionFactory; import org.apache.hadoop.hbase.client.Delete; import org.apache.hadoop.hbase.client.Get; import org.apache.hadoop.hbase.client.Put; import org.apache.hadoop.hbase.client.Result; import org.apache.hadoop.hbase.client.Table; import org.apache.hadoop.hbase.util.Bytes; public class HBaseClientTest extends ConnectionFactory { public static void main(String[] args) throws IOException { /* * 这个并没有什么用处,只是可以避免日志里出现一个错误(winutil.exe找不到)。而那个错误并不影响正常的hbase操作。 */ String hadoopHome=System.getenv("HADOOP_HOME"); String devDefault=new File("client/").getAbsolutePath(); System.setProperty("hadoop.home.dir", hadoopHome==null?devDefault:hadoopHome); long a=System.currentTimeMillis(); /* *hbase-site.xml放置到classpath里。 */ Configuration config = HBaseConfiguration.create(); System.out.println("get config ed:"+(System.currentTimeMillis()-a)/1000.0); a=System.currentTimeMillis(); // config.set("hbase.zookeeper.quorum","host10.ticloud"); // config.set("hbase.zookeeper.property.clientPort", "2222"); // config.addResource(new Path("D:\\hadoop\\hadoop_cfg\\", "hbase-site.xml")); // config.addResource(new Path("D:\\hadoop\\hbase_cfg\\", "core-site.xml")); Connection connection = ConnectionFactory.createConnection(config); System.out.println("get cnn ed:"+(System.currentTimeMillis()-a)/1000.0); a=System.currentTimeMillis(); Table table=null; try { table = connection.getTable(TableName.valueOf("t2")); System.out.println("get table ed:"+(System.currentTimeMillis()-a)/1000.0); a=System.currentTimeMillis(); // Use the table as needed, for a single operation and a single thread Put put=new Put(Bytes.toBytes("rowjava")); put.addColumn(Bytes.toBytes("c2"),Bytes.toBytes("col1"),Bytes.toBytes("value3_6")); // put.addColumn(Bytes.toBytes("c2"),Bytes.toBytes("col2"),Bytes.toBytes("value3_2")); // put.addColumn(Bytes.toBytes("c2"),Bytes.toBytes("col3"),Bytes.toBytes("value3_3")); // put.addColumn(Bytes.toBytes("c2"),Bytes.toBytes("col4"),Bytes.toBytes("value3_4")); System.out.println("get add ed:"+(System.currentTimeMillis()-a)/1000.0); a=System.currentTimeMillis(); table.put(put); System.out.println("get put ed:"+(System.currentTimeMillis()-a)/1000.0); a=System.currentTimeMillis(); long v=table.incrementColumnValue(Bytes.toBytes("rowjava"),Bytes.toBytes("c2"),Bytes.toBytes("cnt1"),1);//put incr不可混用 System.out.println(v); System.out.println("get incr ed:"+(System.currentTimeMillis()-a)/1000.0); a=System.currentTimeMillis(); Get get=new Get(Bytes.toBytes("rowjava")); Result r=table.get(get); Cell c=r.getColumnLatestCell(Bytes.toBytes("c2"),Bytes.toBytes("cnt1")); byte[] bs=CellUtil.cloneValue(c); System.out.println(Bytes.toLong(bs)); c=r.getColumnLatestCell(Bytes.toBytes("c2"),Bytes.toBytes("col1")); bs=CellUtil.cloneValue(c); System.out.println(Bytes.toString(bs)); Put p=new Put(Bytes.toBytes("rowjava")); p.addColumn(Bytes.toBytes("c2"),Bytes.toBytes("colCheck"),Bytes.toBytes("1")); boolean suc=table.checkAndPut(Bytes.toBytes("rowjava"), Bytes.toBytes("c2"),Bytes.toBytes("colCheck"),null, p); System.out.println("checkPut:"+suc);//true ,因为之前colCheck是不存在的 suc=table.checkAndPut(Bytes.toBytes("rowjava"), Bytes.toBytes("c2"),Bytes.toBytes("colCheck"),null, p); System.out.println("checkPut:"+suc);//false ,因为之前colCheck是存在的 Put p2=new Put(Bytes.toBytes("rowjava")); p2.addColumn(Bytes.toBytes("c2"),Bytes.toBytes("colCheck"),Bytes.toBytes("2")); suc=table.checkAndPut(Bytes.toBytes("rowjava"), Bytes.toBytes("c2"),Bytes.toBytes("colCheck"),Bytes.toBytes("1"), p2); System.out.println("checkPut:"+suc);//true ,因为之前colCheck是1 Delete del=new Delete(Bytes.toBytes("rowjava")); del.addColumn(Bytes.toBytes("c2"),Bytes.toBytes("colCheck"));//删除最新版本,删除后colCheck值2变成了1. table.delete(del); p2=new Put(Bytes.toBytes("rowjava")); p2.addColumn(Bytes.toBytes("c2"),Bytes.toBytes("colCheck"),Bytes.toBytes("2")); suc=table.checkAndPut(Bytes.toBytes("rowjava"), Bytes.toBytes("c2"),Bytes.toBytes("colCheck"),Bytes.toBytes("1"), p2); System.out.println("checkPut:"+suc);//true ,因为之前colCheck 2被删了 p2=new Put(Bytes.toBytes("rowjava")); p2.addColumn(Bytes.toBytes("c2"),Bytes.toBytes("colCheck"),Bytes.toBytes("3")); suc=table.checkAndPut(Bytes.toBytes("rowjava"), Bytes.toBytes("c2"),Bytes.toBytes("colCheck"),Bytes.toBytes("1"), p2); System.out.println("checkPut:"+suc);//false ,因为之前colCheck又是2了 del=new Delete(Bytes.toBytes("rowjava")); //不进行add,就是删除整行,全部单元格的全部版本。 del.addColumns(Bytes.toBytes("c2"),Bytes.toBytes("colCheck"));//删除colCheck单元格。全部的版本都删除 table.delete(del); } finally { if(table!=null)table.close();//逻辑处理完毕即可关闭 connection.close();//程序关闭时关闭,此对象可多线程共享使用 } } }
附件是没什么用的winutil.exe,可以避免一个日志提示:
Could not locate executable null\bin\winutils.exe in the Hadoop binaries.
相关推荐
你需要配置HBase的环境变量,并且需要编译Thrift2生成的HBase IDL文件,生成对应的Java客户端代码。 2. **建立连接**:使用`HBaseConfiguration.create()`创建一个配置对象,然后通过`ConnectionFactory.create...
HBase是一款分布式、高性能、基于列族的NoSQL数据库,主要设计用于...以上就是针对“hbase的java客户端api操作示例代码”的主要知识点。通过这些示例,开发者可以更好地理解和实践如何在Java环境中与HBase进行交互。
本示例代码主要展示了如何使用Java API连接HBase数据库,并执行基本的CRUD(创建、读取、更新、删除)操作,同时也包括了批量操作的支持。下面我们将详细探讨这些知识点。 首先,连接HBase需要引入HBase的客户端库...
标题"经过测试,总结出可运行成功的C# For HBase示例代码"表明,这里包含的是一系列已经经过验证的C#代码片段,它们能够成功地与HBase进行交互,执行常见的数据操作。这些示例代码对于初学者和有经验的开发者都极具...
2. **配置连接**: 在Java代码中,你需要配置HBase的连接参数。这通常包括Zookeeper的地址(用于发现HBase集群),可能还有用户名和密码(如果启用了安全性)。以下是一个基本配置示例: ```java Configuration ...
在Java中操作HBase,我们需要使用HBase的Java客户端API。首先,确保引入了所有必要的jar包,这些包通常包括hbase-client、hbase-common、hadoop-client等。这些依赖可以使用Maven或Gradle等构建工具管理,或者直接在...
这个示例代码是用 Scala 编写的,用于演示如何使用 Spark Streaming 消费来自 Kafka 的数据,并将这些数据存储到 HBase 数据库中。Kafka 是一个分布式流处理平台,而 HBase 是一个基于 Hadoop 的非关系型数据库,...
【Java通过Thrift连接HBase】\n\n在Java中,连接HBase通常涉及使用Thrift...这个过程涉及到安装Thrift,生成Java客户端,以及编写Java代码来调用Thrift接口。在实际应用中,还要考虑性能优化、错误处理和安全性等问题。
3. **编写Java代码**:使用生成的Java客户端代码,创建HBase连接,实例化Thrift客户端,然后调用其提供的方法来访问HBase表。通常包括以下步骤: - 连接Thrift服务器:通过`TSocket`或`TFramedTransport`建立与...
例如,一个简单的HBase Java连接示例: ```java import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.client.Connection; import org....
可以通过HBase Shell命令来查看是否成功执行了Java API的操作,例如,`hbase hbasetest.jar hbase.java.txt` 可能是一个运行包含上述操作的Java程序,并输出结果到`hbase.java.txt`的命令。 以上就是HBase常用Java...
在`lib`目录下,你应该能找到这些JAR包,它们是运行示例代码所必需的。 接下来,我们关注实际的编程接口。在`src`目录下的Java源代码中,可以找到如下关键操作的实现: 1. **连接HBase**:通过`Configuration`对象...
在Java编程中,操作HBase数据库通常涉及到使用HBase的客户端API。为了实现高效和可靠的HBase操作,这里介绍一些最佳实践。 首先,避免直接使用`HTable`实例化。通常,开发人员可能会直接通过`new HTable(config, ...
Apache HBase提供了Java API供开发者使用,包括HBase客户端库,允许开发者通过Java代码来创建表、插入数据、查询数据以及执行其他操作。例如,`HTable`类用于与特定的表进行交互,`Put`和`Get`对象分别用于写入和...
接下来,编写一个简单的Java程序,如`ExampleForHBase`,它展示了如何连接到Hbase,创建表,插入数据,以及获取数据。代码示例中,我们创建了一个名为"student"的表,包含一个列族"score",并插入了张三的各科成绩...
在Java中,我们可以使用HBase的Java客户端API来建立与HBase集群的连接,执行CRUD(创建、读取、更新、删除)操作。描述还指出,HBase的参数配置已经写在了YAML文件中,这通常是指应用的配置文件,如`application.yml...
以下是一个简单的示例代码: ```java import java.util.*; public class HBaseTableStructure { public static void main(String[] args) { // 表名称 String tableName = "notes"; // 表结构 Map, List...
这些包包括HBase的客户端API、Hadoop的依赖等,它们提供了连接HBase、创建表、插入数据、查询数据等一系列功能。在描述中提到,这个工程实例包含了所有必要的HBase相关Jar包,这使得开发者可以直接进行编程实践,...
总之,这个压缩包提供了使用Java进行HBase实践的代码示例,涵盖了HBase的基本操作,包括连接配置、表操作、数据插入和查询。通过学习和运行这些代码,你可以更深入地理解HBase的工作原理及其在大数据场景下的应用。...