热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

JAVA操作Hbase基础例子

packagecom.cma.hbase.test;importjava.io.BufferedInputStream;importjava.io.BufferedReader;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.FileReader;importjava.io.IOException

package com.cma.hbase.test; import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException

package com.cma.hbase.test;

import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.util.ArrayList;
import java.util.List;

import org.apache.commons.io.FileUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.KeyValue;
import org.apache.hadoop.hbase.MasterNotRunningException;
import org.apache.hadoop.hbase.ZooKeeperConnectionException;
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.util.Bytes;

import com.cma.hbase.Constants;
import com.cma.hbase.entity.DataModel;
import com.cma.hbase.tools.HbaseUtils;

public class HbaseTest {

?? ?public static void main(String[] args) {
?? ??? ?创建一张表
?? ??? ?createTable("hello_baby",new String[]{"code","ws","wd","t","ps","rh","vis","r"});
?? ??? ?写入一条数据
?? ??? ?writeRecord("hello_baby","row1","code","","code");
?? ??? ?writeRecord("hello_baby","row1","ws","","ws");
?? ??? ?writeRecord("hello_baby","row1","wd","","wd");
?? ??? ?writeRecord("hello_baby","row1","t","","t");
?? ??? ?writeRecord("hello_baby","row1","ps","","ps");
?? ??? ?writeRecord("hello_baby","row1","rh","","rh");
?? ??? ?writeRecord("hello_baby","row1","vis","","vis");
?? ??? ?writeRecord("hello_baby","row1","r","","r");
?? ??? ?写入一组数据
?? ??? ?writeRecordList("hello_baby");
?? ??? ?//查询出一条数据
?? ??? ?getRecord("hello_baby","row1");
?? ??? ?删除一行
?? ??? ?deleteRecord("hello_baby","row1");
?? ??? ?删除一张表
?? ??? ?dropTable("hello_baby");
?? ??? ?清空一张表
?? ??? ?clearTable("hello_baby");
?? ?}

?? ?/**
?? ? * 清空一张表
?? ? * @param string
?? ? */
?? ?private static void clearTable(String tableName) {
?? ??? ?Configuration cfg = HbaseUtils.getCfg();
?? ??? ?
?? ??? ?try {
?? ??? ??? ?HBaseAdmin admin = new HBaseAdmin(cfg);
?? ??? ??? ?
?? ??? ?} catch (MasterNotRunningException e) {
?? ??? ??? ?e.printStackTrace();
?? ??? ?} catch (ZooKeeperConnectionException e) {
?? ??? ??? ?e.printStackTrace();
?? ??? ?} catch (IOException e) {
?? ??? ??? ?e.printStackTrace();
?? ??? ?}finally{
?? ??? ??? ?System.out.println("tableName: "+tableName+" drop over!");
?? ??? ?}
?? ?}

?? ?/**
?? ? * 写入一组数据
?? ? * @param tableName
?? ? */
?? ?private static void writeRecordList(String tableName) {
?? ??? ?Long start = System.currentTimeMillis();
?? ??? ?Configuration cfg = HbaseUtils.getCfg();
?? ??? ?try {
?? ??? ??? ?HTable htable = new HTable(cfg,tableName);
?? ??? ??? ?List puts = getPuts();
?? ??? ??? ?System.out.println(puts.size());
?? ??? ??? ?htable.put(puts);
?? ??? ?} catch (IOException e) {
?? ??? ??? ?e.printStackTrace();
?? ??? ?}finally{
?? ??? ??? ?System.out.println("tableName:"+tableName+" write over!");
?? ??? ?}
?? ??? ?Long end = System.currentTimeMillis();
?? ??? ?System.out.println("cost time: "+(end -start));
?? ?}

?? ?private static List getPuts() {
?? ??? ?List putList = new ArrayList();
?? ??? ?List putRecord = null;
?? ??? ?try {
?? ??? ??? ?List lines = FileUtils.readLines(new File("/home/guest/data/201307310800.csv"));
?? ??? ??? ?for(int i = 1 ;i ?? ??? ??? ??? ?putRecord = getPutsByLine(lines.get(i));
?? ??? ??? ??? ?putList.addAll(putRecord);
?? ??? ??? ?}
?? ??? ?} catch (IOException e) {
?? ??? ??? ?e.printStackTrace();
?? ??? ?}
?? ??? ?return putList;
?? ?}

?? ?/**
?? ? * 获得一组Put
?? ? * @param line
?? ? * @return
?? ? */
?? ?private static List getPutsByLine(String line) {
?? ??? ?List puts = new ArrayList();
?? ??? ?Put put = null;
?? ??? ?
?? ??? ?if(StringUtils.isNotBlank(line)){
?? ??? ??? ?String[] columns = line.split(",");
?? ??? ??? ?String[] families = Constants.FAMILIES;
?? ??? ??? ?String rowKey = "201307310800"+columns[0];
?? ??? ??? ?for(int i = 0;i ?? ??? ??? ??? ?String family = families[i];
?? ??? ??? ??? ?String qualifier = "";
?? ??? ??? ??? ?String value = columns[i];
?? ??? ??? ??? ?put = getPut(rowKey,family,qualifier,value);
?? ??? ??? ??? ?puts.add(put);
?? ??? ??? ?}
?? ??? ?}
?? ??? ?return puts;
?? ?}

?? ?/**
?? ? * 组装一个Put
?? ? * @param rowKey
?? ? * @param family
?? ? * @param qualifier
?? ? * @param value
?? ? * @return
?? ? */
?? ?private static Put getPut(String rowKey, String family, String qualifier,
?? ??? ??? ?String value) {
?? ??? ?Put put = new Put(Bytes.toBytes(rowKey));
?? ??? ?put.add(Bytes.toBytes(family), Bytes.toBytes(qualifier), Bytes.toBytes(value));
?? ??? ?return put;
?? ?}

?? ?/**
?? ? * 查询出一条数据
?? ? * @param tableName
?? ? * @param rowKey
?? ? */
?? ?private static void getRecord(String tableName, String rowKey) {
?? ??? ?Configuration cfg = HbaseUtils.getCfg();
?? ??? ?try {
?? ??? ??? ?HTable htable = new HTable(cfg,tableName);
?? ??? ??? ?Get get = new Get(Bytes.toBytes(rowKey));
?? ??? ??? ?Result rs = htable.get(get);
?? ??? ??? ?
?? ??? ??? ?for(KeyValue kv : rs.raw()){
?? ??? ??? ??? ?System.out.print(new String(kv.getRow())+" *** ");
?? ??? ??? ??? ?System.out.print(new String(kv.getFamily())+" *** ");
?? ??? ??? ??? ?System.out.print(new String(kv.getQualifier())+" *** ");
?? ??? ??? ??? ?System.out.print(new String(kv.getValue()));
?? ??? ??? ??? ?System.out.println();
?? ??? ??? ?}
?? ??? ??? ?
?? ??? ?} catch (IOException e) {
?? ??? ??? ?e.printStackTrace();
?? ??? ?}
?? ?}

?? ?/**
?? ? * 删除一张表
?? ? * @param tableName
?? ? */
?? ?private static void dropTable(String tableName) {
?? ??? ?Configuration cfg = HbaseUtils.getCfg();
?? ??? ?
?? ??? ?try {
?? ??? ??? ?HBaseAdmin admin = new HBaseAdmin(cfg);
?? ??? ??? ?admin.disableTable(tableName);
?? ??? ??? ?admin.deleteTable(tableName);
?? ??? ?} catch (MasterNotRunningException e) {
?? ??? ??? ?e.printStackTrace();
?? ??? ?} catch (ZooKeeperConnectionException e) {
?? ??? ??? ?e.printStackTrace();
?? ??? ?} catch (IOException e) {
?? ??? ??? ?e.printStackTrace();
?? ??? ?}finally{
?? ??? ??? ?System.out.println("tableName: "+tableName+" drop over!");
?? ??? ?}
?? ?}

?? ?/**
?? ? * 删除一行
?? ? * @param tableName
?? ? * @param rowKey
?? ? */
?? ?private static void deleteRecord(String tableName, String rowKey) {
?? ??? ?Configuration cfg = HbaseUtils.getCfg();
?? ??? ?
?? ??? ?try {
?? ??? ??? ?HTable htable = new HTable(cfg,tableName);
?? ??? ??? ?Delete del = new Delete(Bytes.toBytes(rowKey));
?? ??? ??? ?htable.delete(del);
?? ??? ?} catch (IOException e) {
?? ??? ??? ?e.printStackTrace();
?? ??? ?}finally{
?? ??? ??? ?System.out.println("rowKey: "+rowKey+" delete over!");
?? ??? ?}
?? ?}

?? ?/**
?? ? * 存储一列
?? ? * @param tableName
?? ? * @param rowKey
?? ? * @param family
?? ? * @param qualifier
?? ? * @param value
?? ? */
?? ?private static void writeRecord(String tableName,String rowKey,String family,String qualifier,String value) {
?? ??? ?Configuration cfg = HbaseUtils.getCfg();
?? ??? ?try {
?? ??? ??? ?HTable htable = new HTable(cfg,tableName);
?? ??? ??? ?Put put = new Put(Bytes.toBytes(rowKey));
?? ??? ??? ?put.add(Bytes.toBytes(family), Bytes.toBytes(qualifier), Bytes.toBytes(value));
?? ??? ??? ?htable.put(put);
?? ??? ??? ?
?? ??? ?} catch (IOException e) {
?? ??? ??? ?e.printStackTrace();
?? ??? ?}finally{
?? ??? ??? ?System.out.println("family: "+family+" put over!");
?? ??? ?}
?? ?}

?? ?/**
?? ? * 创建一张表
?? ? * @param tableName
?? ? * @param families
?? ? */
?? ?private static void createTable(String tableName,String[] families) {
?? ??? ?HBaseAdmin admin = null;
?? ??? ?try {
?? ??? ??? ?Configuration cfg = HbaseUtils.getCfg();
?? ??? ??? ?System.out.println(cfg);
?? ??? ??? ?admin = new HBaseAdmin(cfg);
?? ??? ??? ?if(admin.tableExists(tableName)){
?? ??? ??? ??? ?System.out.println("表:"+tableName+" 已经存在!");
?? ??? ??? ?}else{
?? ??? ??? ??? ?HTableDescriptor tableDesc = new HTableDescriptor(tableName);
?? ??? ??? ??? ?for(String column : families){
?? ??? ??? ??? ??? ?tableDesc.addFamily(new HColumnDescriptor(column));
?? ??? ??? ??? ?}
?? ??? ??? ??? ?admin.createTable(tableDesc);
?? ??? ??? ?}
?? ??? ?} catch (MasterNotRunningException e) {
?? ??? ??? ?e.printStackTrace();
?? ??? ?} catch (ZooKeeperConnectionException e) {
?? ??? ??? ?e.printStackTrace();
?? ??? ?} catch (IOException e) {
?? ??? ??? ?e.printStackTrace();
?? ??? ?}finally{
?? ??? ??? ?System.out.println("over!");
?? ??? ?}
?? ?}
?? ?

}


作者:lovemelovemycode 发表于2013-8-25 20:35:24 原文链接

阅读:97 评论:0 查看评论

推荐阅读
  • HBase运维工具全解析
    本文深入探讨了HBase常用的运维工具,详细介绍了每种工具的功能、使用场景及操作示例。对于HBase的开发人员和运维工程师来说,这些工具是日常管理和故障排查的重要手段。 ... [详细]
  • 本文详细介绍了 Java 中的 org.apache.hadoop.registry.client.impl.zk.ZKPathDumper 类,提供了丰富的代码示例和使用指南。通过这些示例,读者可以更好地理解如何在实际项目中利用 ZKPathDumper 类进行注册表树的转储操作。 ... [详细]
  • Hadoop发行版本选择指南:技术解析与应用实践
    本文详细介绍了Hadoop的不同发行版本及其特点,帮助读者根据实际需求选择最合适的Hadoop版本。内容涵盖Apache Hadoop、Cloudera CDH等主流版本的特性及应用场景。 ... [详细]
  • 本文详细分析了Hive在启动过程中遇到的权限拒绝错误,并提供了多种解决方案,包括调整文件权限、用户组设置以及环境变量配置等。 ... [详细]
  • 本文详细介绍了 Flink 和 YARN 的交互机制。YARN 是 Hadoop 生态系统中的资源管理组件,类似于 Spark on YARN 的配置方式。我们将基于官方文档,深入探讨如何在 YARN 上部署和运行 Flink 任务。 ... [详细]
  • 本文详细探讨了 org.apache.hadoop.ha.HAServiceTarget 类中的 checkFencingConfigured 方法,包括其功能、应用场景及代码示例。通过实际代码片段,帮助开发者更好地理解和使用该方法。 ... [详细]
  • 全面解析运维监控:白盒与黑盒监控及四大黄金指标
    本文深入探讨了白盒和黑盒监控的概念,以及它们在系统监控中的应用。通过详细分析基础监控和业务监控的不同采集方法,结合四个黄金指标的解读,帮助读者更好地理解和实施有效的监控策略。 ... [详细]
  • 简化报表生成:EasyReport工具的全面解析
    本文详细介绍了EasyReport,一个易于使用的开源Web报表工具。该工具支持Hadoop、HBase及多种关系型数据库,能够将SQL查询结果转换为HTML表格,并提供Excel导出、图表显示和表头冻结等功能。 ... [详细]
  • 本文探讨了如何在Hive(基于Hadoop)环境中编写类似SQL的语句,以去除字段中的空格。特别是在处理邮政编码等数据时,去除特定位置的空格是常见的需求。 ... [详细]
  • 本文详细介绍如何使用 Apache Spark 执行基本任务,包括启动 Spark Shell、运行示例程序以及编写简单的 WordCount 程序。同时提供了参数配置的注意事项和优化建议。 ... [详细]
  • 本文详细介绍了如何搭建和配置ZooKeeper集群,包括环境变量设置、配置文件调整、主机映射关系配置及启动验证等关键步骤。 ... [详细]
  • window下kafka的安装以及测试
    目录一、安装JDK(需要安装依赖javaJDK)二、安装Kafka三、测试参考在Windows系统上安装消息队列kafka一、安装JDKÿ ... [详细]
  • 本文详细介绍了使用ZooKeeper构建高可用集群的方法,包括必要的软件环境准备、配置文件调整及集群启动等关键步骤。通常,一个ZooKeeper集群由奇数个节点组成,以确保Leader选举的有效性。 ... [详细]
  • 深入解析Spark核心架构与部署策略
    本文详细探讨了Spark的核心架构,包括其运行机制、任务调度和内存管理等方面,以及四种主要的部署模式:Standalone、Apache Mesos、Hadoop YARN和Kubernetes。通过本文,读者可以深入了解Spark的工作原理及其在不同环境下的部署方式。 ... [详细]
  • Zookeeper面试常见问题解析
    本文详细介绍了Zookeeper中的ZAB协议、节点类型、ACL权限控制机制、角色分工、工作状态、Watch机制、常用客户端、分布式锁实现、默认通信框架以及消息广播和领导选举的流程。 ... [详细]
author-avatar
六月的
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有