`
bnmnba
  • 浏览: 293589 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

java客户端连接操作Hbase示例代码

 
阅读更多

 

前提是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. 

 

 

分享到:
评论

相关推荐

    java代码使用thrift2操作hbase示例

    你需要配置HBase的环境变量,并且需要编译Thrift2生成的HBase IDL文件,生成对应的Java客户端代码。 2. **建立连接**:使用`HBaseConfiguration.create()`创建一个配置对象,然后通过`ConnectionFactory.create...

    hbase的java客户端api操作示例代码.zip

    HBase是一款分布式、高性能、基于列族的NoSQL数据库,主要设计用于...以上就是针对“hbase的java客户端api操作示例代码”的主要知识点。通过这些示例,开发者可以更好地理解和实践如何在Java环境中与HBase进行交互。

    java链接hbase数据示例代码

    本示例代码主要展示了如何使用Java API连接HBase数据库,并执行基本的CRUD(创建、读取、更新、删除)操作,同时也包括了批量操作的支持。下面我们将详细探讨这些知识点。 首先,连接HBase需要引入HBase的客户端库...

    经过测试,总结出可运行成功的C#For HBase示例代码

    标题"经过测试,总结出可运行成功的C# For HBase示例代码"表明,这里包含的是一系列已经经过验证的C#代码片段,它们能够成功地与HBase进行交互,执行常见的数据操作。这些示例代码对于初学者和有经验的开发者都极具...

    java 连接远程hbase 数据库

    2. **配置连接**: 在Java代码中,你需要配置HBase的连接参数。这通常包括Zookeeper的地址(用于发现HBase集群),可能还有用户名和密码(如果启用了安全性)。以下是一个基本配置示例: ```java Configuration ...

    java操作Hbase之从Hbase中读取数据写入hdfs中源码

    在Java中操作HBase,我们需要使用HBase的Java客户端API。首先,确保引入了所有必要的jar包,这些包通常包括hbase-client、hbase-common、hadoop-client等。这些依赖可以使用Maven或Gradle等构建工具管理,或者直接在...

    spark streamming消费kafka数据存入hbase示例代码

    这个示例代码是用 Scala 编写的,用于演示如何使用 Spark Streaming 消费来自 Kafka 的数据,并将这些数据存储到 HBase 数据库中。Kafka 是一个分布式流处理平台,而 HBase 是一个基于 Hadoop 的非关系型数据库,...

    Java通过thrift连接hbase.docx

    【Java通过Thrift连接HBase】\n\n在Java中,连接HBase通常涉及使用Thrift...这个过程涉及到安装Thrift,生成Java客户端,以及编写Java代码来调用Thrift接口。在实际应用中,还要考虑性能优化、错误处理和安全性等问题。

    java 通过thrift-0.9.1读取hbase表数据

    3. **编写Java代码**:使用生成的Java客户端代码,创建HBase连接,实例化Thrift客户端,然后调用其提供的方法来访问HBase表。通常包括以下步骤: - 连接Thrift服务器:通过`TSocket`或`TFramedTransport`建立与...

    hbase- java开发连接工具类

    例如,一个简单的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常用JAVA API

    可以通过HBase Shell命令来查看是否成功执行了Java API的操作,例如,`hbase hbasetest.jar hbase.java.txt` 可能是一个运行包含上述操作的Java程序,并输出结果到`hbase.java.txt`的命令。 以上就是HBase常用Java...

    java链接并对hbase进行增删改查操作的实例代码(含批量插入,范围查询等,并包含所需jar包)

    在`lib`目录下,你应该能找到这些JAR包,它们是运行示例代码所必需的。 接下来,我们关注实际的编程接口。在`src`目录下的Java源代码中,可以找到如下关键操作的实现: 1. **连接HBase**:通过`Configuration`对象...

    Java代码通过API操作HBase的最佳实践.pdf

    在Java编程中,操作HBase数据库通常涉及到使用HBase的客户端API。为了实现高效和可靠的HBase操作,这里介绍一些最佳实践。 首先,避免直接使用`HTable`实例化。通常,开发人员可能会直接通过`new HTable(config, ...

    封装hbase以便java调用

    Apache HBase提供了Java API供开发者使用,包括HBase客户端库,允许开发者通过Java代码来创建表、插入数据、查询数据以及执行其他操作。例如,`HTable`类用于与特定的表进行交互,`Put`和`Get`对象分别用于写入和...

    Hbase的安装过程及基本操作

    接下来,编写一个简单的Java程序,如`ExampleForHBase`,它展示了如何连接到Hbase,创建表,插入数据,以及获取数据。代码示例中,我们创建了一个名为"student"的表,包含一个列族"score",并插入了张三的各科成绩...

    hbase-echarts.zip

    在Java中,我们可以使用HBase的Java客户端API来建立与HBase集群的连接,执行CRUD(创建、读取、更新、删除)操作。描述还指出,HBase的参数配置已经写在了YAML文件中,这通常是指应用的配置文件,如`application.yml...

    java大数据作业_3HBase

    以下是一个简单的示例代码: ```java import java.util.*; public class HBaseTableStructure { public static void main(String[] args) { // 表名称 String tableName = "notes"; // 表结构 Map, List...

    Hbase操作Hadoop分布式数据库java工程实例(含测试用例)

    这些包包括HBase的客户端API、Hadoop的依赖等,它们提供了连接HBase、创建表、插入数据、查询数据等一系列功能。在描述中提到,这个工程实例包含了所有必要的HBase相关Jar包,这使得开发者可以直接进行编程实践,...

    博客《分布式数据库HBase实践指南》案例代码

    总之,这个压缩包提供了使用Java进行HBase实践的代码示例,涵盖了HBase的基本操作,包括连接配置、表操作、数据插入和查询。通过学习和运行这些代码,你可以更深入地理解HBase的工作原理及其在大数据场景下的应用。...

Global site tag (gtag.js) - Google Analytics