HBase1.0.0 实现数据增删查

HBase1.0.0 即Hadoop 2.6 采用maven 的方式实现HBase数据简单操作

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.MasterNotRunningException;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.ZooKeeperConnectionException;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;
import org.apache.hadoop.hbase.client.HBaseAdmin;
import org.apache.hadoop.hbase.client.HConnection;
import org.apache.hadoop.hbase.client.HTableInterface;
import org.apache.hadoop.hbase.client.HTablePool;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Table;
import org.apache.hadoop.hbase.util.Bytes;/*** @author 作者 E-mail:* @version 创建时间:2015年12月28日 下午11:31:31 类说明*/
public class HBaseUtils {/** static { HBaseDaoPool.getInstance(); }*/private static Configuration conf;private static HBaseAdmin admin;
   private static HTable hTable = null;
static {conf = new Configuration();String filePath = "hbase-site.xml";Path path = new Path(filePath);conf.addResource(path);conf = HBaseConfiguration.create(conf);}/*** 创建表并判断表是否存在,如果存在则退出* @param name* @param cf* @throws Exception*/@SuppressWarnings("deprecation")public static void create_table(String name, String cf) throws Exception {admin = new HBaseAdmin(conf);// 先检查表是否存在if (admin.tableExists(name)) {System.out.println("table is exit" + name);System.exit(0);}HTableDescriptor tableDesc = new HTableDescriptor(name);HColumnDescriptor hd = new HColumnDescriptor(cf);/* hd.setMaxVersions(version); */tableDesc.addFamily(hd);admin.createTable(tableDesc);admin.close();}/*** 获得HBase里面所有Table* @return* @throws Exception* @throws ZooKeeperConnectionException* @throws MasterNotRunningException*/@SuppressWarnings({ "unused", "deprecation" })private static List<String> getAllTable() throws MasterNotRunningException,ZooKeeperConnectionException, Exception {List<String> table = null;admin = new HBaseAdmin(conf);try {HTableDescriptor[] listTables = admin.listTables();if (listTables.length > 0) {table = new ArrayList<String>();for (HTableDescriptor tableDes : listTables) {table.add(tableDes.getNameAsString());System.out.println("table list:" + tableDes.getNameAsString());}}} catch (Exception e) {e.printStackTrace();}return table;}/*** 添加一条记录* @param tableName* @param rowKey* @param cloumnFianly* @param column* @param values* @return*/@SuppressWarnings({ "unused", "deprecation", "resource" })private static boolean addOneRows(String tableName, String rowKey,String cloumnFianly, String column, byte[] values) {HTablePool hTablePool = new HTablePool(conf, 1000);HTableInterface table = hTablePool.getTable(tableName);Put put = new Put(rowKey.getBytes());put.add(cloumnFianly.getBytes(), column.getBytes(), values);try {table.put(put);System.out.println("add success:" + rowKey + "....end");return true;} catch (IOException e) {e.printStackTrace();System.out.println("add false :" + rowKey + " error ...end");return false;}}/*** 根据表名插入一条数据,rowkey 做了简单处理,前面加了7位随机数* @param hConnection* @param tableName*/@SuppressWarnings("deprecation")public static void insertData(String tableName) {try {TableName table = TableName.valueOf(tableName);System.out.println(table + "table");Connection connection = ConnectionFactory.createConnection(conf);Table tb1 = connection.getTable(table);Random random = new Random();int sum = random.nextInt(9999999);String.format("%07d", sum);String rowKkey = String.format("%07d", sum);Put put = new Put(Bytes.toBytes(rowKkey));put.add(Bytes.toBytes("cf1"), Bytes.toBytes("address"), Bytes.toBytes("zz"));tb1.put(put);tb1.close();System.out.println("insert end....");} catch (IOException e) {e.printStackTrace();}}
 /*** 根据rowKey 获得一条记录* @param tableName* @param rowKey*/public void getOneRowsByKey(String tableName, String rowKey){try {hTable = new HTable(conf, tableName);Get get = new Get(Bytes.toBytes(rowKey));Result result = hTable.get( get );KeyValue[] rows = result.raw();for (int i = 0; i < rows.length; i++){String rowname = new String(rows[i].getQualifier());String rowValue = new String(rows[i].getValue());System.out.println("rowname:" + rowname + "--value--" +rowValue);}}catch ( IOException e ) {e.printStackTrace();}}
 

 

public static void main(String[] args) throws Exception {// addOneRows("test", "row7", "cf", "g", "value7".getBytes());// String table = "ps";String table = "a1";String cf = "cf";// create_table(table, cf);// getAllTable();
        insertData(table);System.out.println("success");}
}

maven 配置:

    <dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-common</artifactId><version>2.6.0</version></dependency><!-- hbase --><dependency><groupId>org.apache.hbase</groupId><artifactId>hbase-client</artifactId><version>1.0.0</version></dependency><dependency><groupId>org.apache.hbase</groupId><artifactId>hbase-server</artifactId><version>1.0.0</version></dependency>
hbase-site.xml 配置
<?xml version="1.0" encoding="UTF-8"?><!--Autogenerated by Cloudera Manager-->
<configuration><property><name>hbase.rootdir</name><value>hdfs://HMaster/hbase</value></property><property><name>hbase.client.write.buffer</name><value>2097152</value></property><property><name>hbase.client.pause</name><value>100</value></property><property><name>hbase.client.retries.number</name><value>35</value></property><property><name>hbase.client.scanner.caching</name><value>100</value></property><property><name>hbase.client.keyvalue.maxsize</name><value>10485760</value></property><property><name>hbase.regionserver.thrift.http</name><value>false</value></property><property><name>hbase.thrift.support.proxyuser</name><value>false</value></property><property><name>hbase.rpc.timeout</name><value>60000</value></property><property><name>hbase.snapshot.enabled</name><value>true</value></property><property><name>hbase.snapshot.master.timeoutMillis</name><value>60000</value></property><property><name>hbase.snapshot.region.timeout</name><value>60000</value></property><property><name>hbase.snapshot.master.timeout.millis</name><value>60000</value></property><property><name>hbase.security.authentication</name><value>simple</value></property><property><name>zookeeper.session.timeout</name><value>60000</value></property><property><name>zookeeper.znode.parent</name><value>/hbase</value></property><property><name>zookeeper.znode.rootserver</name><value>root-region-server</value></property><property><name>hbase.zookeeper.quorum</name><value>node5,node2,node3,node4,node1</value></property><property><name>hbase.zookeeper.property.clientPort</name><value>2181</value></property>
</configuration>

 

转载于:https://www.cnblogs.com/zhanggl/p/5091757.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/272516.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux 写结构体到文件

将整数写入到文件 #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include<stdio.h> #include <unistd.h> #include <string.h>#include <stdlib.h> int main() {int fd;int data100;int data20;fdopen("…

程序员常访问的国外技术交流网站

技术人员经常会在各种技术交流社区游逛&#xff0c;大家互相学习、交流、分享、帮助。互联网拉近了地球人的距离&#xff0c;让全世界的技术人员可以聚集在一起分享交流。当然因为多方面原因&#xff0c;通常最新最权威的技术知识传到国内存在一定“时差”。本文将给大家分享技…

标准C库对文件操作的引入

modeopen和fopen的区别 fopen、fread、fwrite的使用 &#xff08;1&#xff09;fopen FILE *fopen(const char *path, const char *mode);path&#xff1a;文件路径 mode&#xff1a;以什么权限打开&#xff0c;要用双引号 它的返回值并不是文件描述符 若失败返回NULL 若操作成…

转载爱哥自定义View系列--Paint详解

上图是paint中的各种set方法 这些属性大多我们都可以见名知意&#xff0c;很好理解&#xff0c;即便如此&#xff0c;哥还是带大家过一遍逐个剖析其用法&#xff0c;其中会不定穿插各种绘图类比如Canvas、Xfermode、ColorFilter等等的用法。 set(Paint src) 顾名思义为当前画笔…

只有程序员才懂这些黑色幽默!

也是机缘巧合&#xff0c;让我一个之前工作从未接触过程序员的人&#xff0c;现在成天和程序员打交道&#xff0c;要知道&#xff0c;不懂技术&#xff0c;往往他们想和你幽默的搞笑一下&#xff0c;未必能读懂。都说程序员情商低&#xff0c;不爱说话&#xff0c;比较闷骚。可…

tiny4412 linux+qtopia nfs网络文件系统的挂载

1,首先确定uboot启动内核的bootargs参数 Linux-CommandLine root/dev/nfs nfsroot192.168.1.131:/home/tiny4412/rootfs_qtopia_qt4 ip192.168.1.230:192.168.1.131:192.168.1.1:255.255.255.0::eth0:off rootfstypenfs consolettySAC0,115200 init/linuxrc ctp2 skipcaliy uh…

Linux 进程、父进程、子进程

进程和程序的区别 一、 进程是动态的&#xff0c;程序是静态的&#xff1a;程序是有序代码的集合&#xff0c;进程是程序的执行。进程有核心态/用户态。 二、 进程是暂时的&#xff0c;程序是永久的&#xff1b;进程是一个状态变化的过程&#xff0c;程序可以长久保存 三、进…

几款开源富文本编辑器优缺点比较

1、百度UEditor 优点&#xff1a;插件多&#xff0c;基本满足各种需求&#xff0c;类似贴吧中的回复界面。缺点&#xff1a;不再维护&#xff0c;文档极少&#xff0c;使用并不普遍&#xff0c;图片只能上传到本地服务器&#xff0c;如果需要上传到其他服务器需要改动源码&…

C程序的储存空间是如何分配?

可执行程序包括BSS段、数据段、代码段。 在类UNIX系统下可使用size命令查看可执行文件的段大小信息。如size a.out&#xff1a; ~/Desktop/MyC$ size a.outtext data bss dec hex filename1672 600 8 2280 8e8 a.out1.数据段存放已初始化的全…

详细讲解Android的网络通信(HttpUrlConnection和HttpClient)

前言&#xff0c;Android的网络通信的方式有两种&#xff1a;使用Socket或者HTTP&#xff0c;今天这一篇我们详细讲解使用HTTP实现的网络通信&#xff0c;HTTP又包括两种方式编程方式&#xff1a; &#xff08;1&#xff09;HttpUrlConnection&#xff1b; &#xff08;2&#…

常见通信协议HTTP、TCP、UDP的简单介绍

TCP HTTP UDP:都是通信协议&#xff0c;也就是通信时所遵守的规则&#xff0c;只有双方按照这个规则“说话”&#xff0c;对方才能理解或为之服务。TCP HTTP UDP三者的关系:TCP/IP是个协议组&#xff0c;可分为四个层次&#xff1a;网络接口层、网络层、传输层和应用层…

创建进程相关函数

fork函数 pid_t fork(void); fork函数调用成功&#xff0c; 返回两次 在fork函数执行完毕后 如果创建新进程成功&#xff0c;则出现两个进程 一个是子进程&#xff0c;一个是父进程 在子进程中&#xff0c;fork函数返回0 在父进程中&#xff0c;fork返回新创建子进程的进程ID…

实现Windows和Linux之间的文件共享

一、windows 向linux共享文件(这里都是以win10和ubuntu为例)首先&#xff0c;打开网络共享中心。如图1图1打开更改高级共享设置&#xff08;图2&#xff09;图 2选择启用网络发现以及启用文件和打印机共享&#xff0c;然后点击保存更改。接着&#xff0c;选择你要共享的文件夹&…

鸡啄米MFC教程笔记之七:对话框:为控件添加消息处理函数

MFC为对话框和控件等定义了诸多消息&#xff0c;我们对它们操作时会触发消息&#xff0c;这些消息最终由消息处理函数处理。比如我们点击按钮时就会产生BN_CLICKED消息&#xff0c;修改编辑框内容时会产生EN_CHANGE消息等。一般为了让某种操作达到效果&#xff0c;我们只需要实…

进程的退出方式以及僵尸进程和孤儿进程

&#xff08;1&#xff09;正常退出 &#xff08;2&#xff09;异常退出 检查wait和waitpid所返回的终止状态的宏 宏说明WIFEXITED(status)若为正常终止子进程返回的状态&#xff0c;则为真。对于这种情况可执行WEXITSTATUS(status)&#xff0c;取子进程传送给exit、_exit或_…

java中的动态代理----自己手动实现

代码使用了common-io&#xff0c;需要其jar 1 接口 Java代码 public interface Pruduct { void selling(); } 2 书籍类 Java代码 public class Book implements Pruduct { Override public void selling() { try { Thread.sleep(1000…

Code Project精彩系列(1)

ApplicationsCrafting a C# forms Editor From scratchhttp://www.codeproject.com/csharp/SharpFormEditorDemo.asp建立一个类似C#的环境, 实现控件拖拉&#xff0c;属性Packet Capture and Analayzer网络封包截获http://www.codeproject.com/csharp/pacanal.aspA tool to cha…

linux进程---exec族函数(execl, execlp, execv, execvp, )解释和配合fork的使用

exec族函数函数的作用&#xff1a; exec函数族的作用是根据指定的文件名找到可执行文件&#xff0c;并用它来取代调用进程的内容&#xff0c;换句话说&#xff0c;就是在调用进程内部执行一个可执行文件。这里的可执行文件既可以是二进制文件&#xff0c;也可以是任何L…

Code Project精彩系列(2)

Windows FormsFireball Resourcer把各种资源嵌入应用程序资源Window Hiding with C#隐藏窗体, 似乎是其它运行的窗体 JProper Threading in Winforms .NETWindows Forms User Settings in C#使用VS设置设定forms, coolA Pretty Good Splash Screen in C#一个自绘可爱屏幕A curt…

python bool值要注意的一些地方

1、像(),[],{}这三个是可以通过bool(()),bool([]),bool({})转化为bool值的&#xff1b;且它们转化后的结果为False。但是这三个值它本身并不等于False、切记不可以与False 直接进行比较。 #!/usr/bin/python #!coding:utf-8 import sysif __name__ "__main__":falseL…