如何通过JAVA客户端访问Hbase

用Java访问带有Kerberos认证的HBase 用Java访问带有Kerberos认证的HBase 开始之前    因为HBase的存储系统是基于Hadoop的存储,现在Hadoop已经增加了Kerberos认证机制,这样HBase的客户端访问HBase数据库的时候也需要进行身份的认证。    Kerberos是一个认证中心,客户端在访问HBase前必须通过认证才能访问,下图是Kerberos的认证图: 阅读详情

直接上代码

代码块

package com.raiyi.app.dao;
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.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.client.ResultScanner;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.util.Bytes;
/**
 * @author Administrator
 *
 */
public class BaseOperation
{

    private static final String TABLE_NAME = "userInfo";

    public static Configuration conf = null;

    public HTable table = null;

    public HBaseAdmin admin = null;

    static
    {
        conf = HBaseConfiguration.create();
        conf.set("hbase.zookeeper.quorum","localhost");
        conf.set("hbase.zookeeper.property.clientPort", "2181"); 
        conf.set("zookeeper.session.timeout", "2000");
    }

    /**
     * 创建表
     */
    public static void creatTable(String tableName, String[] familys)
        throws Exception
    {

        HBaseAdmin admin = new HBaseAdmin(conf);
        if (admin.tableExists(tableName))
        {
            System.out.println("table already exists!");
        }
        else
        {
            HTableDescriptor tableDesc = new HTableDescriptor(tableName);
            for (int i = 0; i < familys.length; i++)
            {
                tableDesc.addFamily(new HColumnDescriptor(familys[i]));
            }
            admin.createTable(tableDesc);
            System.out.println("create table " + tableName + " ok.");
        }
    }

    /**
     * 删除表
     */
    public static void deleteTable(String tableName)
        throws Exception
    {

        try
        {
            HBaseAdmin admin = new HBaseAdmin(conf);
            admin.disableTable(tableName);
            admin.deleteTable(tableName);
            System.out.println("delete table " + tableName + " ok.");
        }
        catch (MasterNotRunningException e)
        {
            e.printStackTrace();
        }
        catch (ZooKeeperConnectionException e)
        {
            e.printStackTrace();
        }
    }

    /**
     * 添加记录
     */
    public static void addRecord(String tableName, String rowKey, String family, String qualifier,
        String value)
        throws Exception
    {

        try
        {
            HTable table = new HTable(conf, tableName);
            Put put = new Put(Bytes.toBytes(rowKey));
            put.add(Bytes.toBytes(family), Bytes.toBytes(qualifier), Bytes.toBytes(value));
            table.put(put);
            System.out.println("insert recored " + rowKey + " to table " + tableName + " ok.");
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
    }

    /**
     * 删除记录
     */
    public static void delRecord(String tableName, String rowKey)
        throws IOException
    {

        HTable table = new HTable(conf, tableName);
        List list = new ArrayList();
        Delete del = new Delete(rowKey.getBytes());
        list.add(del);
        table.delete(list);
        System.out.println("del recored " + rowKey + " ok.");
    }

    /**
     * 获取某条记录
     */
    public static void getOneRecord(String tableName, String rowKey)
        throws IOException
    {

        HTable table = new HTable(conf, tableName);
        Get get = new Get(rowKey.getBytes());
        Result rs = table.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(kv.getTimestamp() + " ");
            System.out.println(new String(kv.getValue()));
        }
    }

    /**
     * 获取所有记录
     */
    public static void getAllRecord(String tableName)
    {

        try
        {
            HTable table = new HTable(conf, tableName);
            Scan s = new Scan();
            ResultScanner ss = table.getScanner(s);
            for (Result r : ss)
            {
                for (KeyValue kv : r.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(kv.getTimestamp() + " ");
                    System.out.println(new String(kv.getValue()));
                }
            }
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
    }

    public static void main(String[] agrs)
    {

        try
        {
            String tablename = "scores";
            String[] familys =
            {
                "grade", "course"
            };
            Long start = System.currentTimeMillis();
//          BaseOperation.creatTable(tablename, familys);

            BaseOperation.getOneRecord(tablename, "155226015632015-11");
//
//          System.out.println("===========show all record========");
//          BaseOperation.getAllRecord(tablename);
//
//          System.out.println("===========del one record========");
//          BaseOperation.delRecord(tablename, "baoniu");
//          BaseOperation.getAllRecord(tablename);
//
//          System.out.println("===========show all record========");
//          BaseOperation.getAllRecord(tablename);
            System.out.println(System.currentTimeMillis()-start);
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }

}
集群外访问Hbase – access Hbase use a java client program <br /><br />集群外访问Hbase – access Hbase use a java client program<br /> <br />集群环境:<br />Master - <br />10.123.122.151          test-Master<br /> <br />Slave   - <br />10.123.122.163          test-DATA01<br />10.123.122.162          test-DATA02<br />10.123. 阅读详情

相关推荐

java连接hbase的jar包

java连接hbase的jar包,java连接hbase的jar包,java连接hbase的jar包,java连接hbase的jar包

Java连接Hbase

java连接hbase 如何使用java连接hbase? 底层如何操作,我们并不关心;只期望提供以下几个方法 方法1:连接hbase;输入参数:hbase的ip,端口号; 方法2:namespace的crud 方法3:table的crud 方法4:记录的crud; 添加jar包 把%hbase_home%\lib\所有的jar包都加进来 添加工具包:junit和log4j2 添加配置文件 参...

Li_Jian_Hui_的博客 6030

java链接及操作hbase实例代码

本代码是java链接并操作hbase的实例代码,原本供同事参考所用,引用的jar包并没有经过详细分析,可能有冗余。

HBase 2.4.17 同步客户端代码示例

HBase 2.4.17 同步客户端代码示例

猫猫爱吃小鱼粮 413

hbase数据可视化系统

springboot搭建的hbase可视化界面 支持hbase的建表与删除 支持根据rowkey查询数据

inferCNV包安装问题及解决办法

InferCNV是一个由broad研究所开发的,利用单细胞转录组数据分析肿瘤细胞拷贝数变异(CNV)的工具。基本思路是在整个基因组范围内,通过计算肿瘤细胞关于参考的“正常”细胞的相对表达,利用滑窗思想对邻近的基因相对表达,计算拷贝数。 先贴一个官方安装说明: 官方infercnv安装说明 安装infercnv包: if (!requireNamespace("BiocManager", quietly = TRUE)) install.packages("BiocManager") BiocManager:

m0_51042606的博客 6804

HBase 使用JDK21

export JAVA_HOME=/opt/soft/jdk-21 export HBASE_CLASSPATH=/opt/soft/hadoop-3/etc/hadoop export HBASE_MANAGES_ZK=false export HBASE_HEAPSIZE=1G export HBASE_DISABLE_HADOOP_CLASSPATH_LOOKUP=true export HBASE_JSHELL_ARGS="--startup DEFAULT --startup PRINTING -

桃李不言下自成蹊 3万+

银河麒麟v10离线安装docker二进制包

因为工作需要在银河麒麟v10系统上离线部署k8s集群,k8s部署的前提是具有docker环境,因此离线安装docker成为必然。 1.下载docker包:Index of linux/static/stable/x86_64/ 选择自己合适的版本,我下载的是20.10.7 选择自己放置docker包的路径进行解压: cd /home/huawei/zq tar -zxvf docker-20.10.7.tgz 2. 给docker包解压出来的docker文件夹下的二进制文件赋..

q_hsolucky的博客 7686

HBase 开发:使用Java操作HBase

的版本,那么两种方式你都可以使用(本实训使用的。为了完成本关任务,你需要掌握:1.如何使用。的那么你只能使用第一种方式来创建表,如果是。好了,到你啦,使用本关知识,在右侧编辑器。之后的版本中这些被弃用了,新的客户端。(连接工厂)的方法我们就能获取到。版本(18年10月发布)的,对象,这个对象我们需要通过。值得咱们注意的是,如果你的。开始你的任务吧,祝你成功!注意:在1.0之前的版本。更加干净简洁,本文使用的。的版本中创建表使用了新的。对象被弃用,取而代之的是。版本,所以两种都可用)。

m0_63514931的博客 1156

车辆动力学仿真模型的可信度评估方法

以转向工况测试为例,实车采集的方向盘转角作为车辆动力学模型的输入,记录车辆动力学模型的横摆角速度的输出结果,计算横摆角速度的幅频特性,根据《GB/T 6323-2014 转向盘角脉冲试验》的方法,获取横摆角速度峰值、横摆角速度谐振峰频率、横摆角速度谐振峰水平,与采集的实车结果对比,并计算车辆动力学模型和实车对于关键对比参数的相对误差。由公式(2)计算可得,在制动工况和转向工况测试下,车辆动力学模型和实车的纵向车速、制动减速度、制动距离、横摆角速度基本一致,精度> 85%,具有较好的精度。

wangchen900705的博客 1961

pi/4QPSK调制解调原理

文章目录1. π/4\pi/4π/4QPSK 信号的调制原理2. 匹配滤波器与成形滤波器 1. π/4\pi/4π/4QPSK 信号的调制原理 减小相位突变量的QPSK由偏置键控QPSK(OK-QPSK)和 π/4\pi/4π/4偏置的QPSK( π/4\pi/4π/4QPSK)。由于 π/4\pi/4π/4QPSK是用差分相位编码产生的(因此也叫做 π/4\pi/4π/4DQPSK),能有效地进行差分解调和鉴频器解调,在一些不易提取相干载波的场合很有用。 在常规的QPSK中,输入数据经过串/并变换后,分成

gemengxia的博客 2万+

Java 操作 hbase

本文介绍了如何使用Java客户端操作HBase,主要包括:1.引入hbase-client依赖;2.获取HBase连接的方法;3.命名空间操作,包括创建命名空间、查看所有命名空间和查看指定命名空间。代码示例展示了如何通过ConnectionFactory建立连接,使用Admin接口管理命名空间,以及NamespaceDescriptor的操作方法。

纯洁的小魔鬼 5592

Unity嵌套ScrollView滑动冲突解决方案:ExecuteEvents.Execute事件透传

在Unity UGUI中,竖向与横向ScrollView嵌套时出现滑动失效,本质是EventSystem事件分发机制的拦截限制。其原理在于PointerDown被外层捕获后,后续PointerMove默认不向下透传;ExecuteEvents.Execute提供了一条绕过常规冒泡流程的官方事件旁路,支持低延迟、方向自适应的精准透传。该技术具备高兼容性与零侵入特性,广泛应用于电商商品页、内容流卡片组、多级导航等需‘列表中嵌套轮播/标签’的真实场景,是解决UGUI嵌套滚动问题的核心工程实践方案。

weixin_33164198的博客 634

Java客户端访问HBase集群解决方案(优化)

Java客户端访问HBase集群解决方案(优化)

10年职场两茫茫,35岁凄凉奈若何 139

ROS2入门到精通—— 2-9 ROS2实战:Nav2常见的工程问题(参考3D视觉工坊)

本文介绍了Nav2常见的工程问题,还有调试DWB的一些经验,以及DWB的一些缺点

BigDavid123的博客 1073

【WRF-GHG 教程第一期】概述(Overview)

概述(Overview)

WW、forever的博客 513

java客户端访问hbase

hbase的安装和配置请看 [url]http://hunray.iteye.com/admin/blogs/1774583[/url] 使用shell建表 create 'gpsinfo','gpsdata' gpsinfo为表名 gpsdata为columnfamily [code="java"] import java.io.IOException; import ja...

冰洞 352

GEE 案例:利用多源遥感数据计算RUSLE(Revised Universal Soil Loss Equation)土壤侵蚀

该数据集提供了全球范围内以250至500米的空间分辨率获取的多光谱图像数据,用于监测地表覆盖和变化。RUSLE模型的基本原理是通过考虑土壤侵蚀的主要驱动因素,来估计土壤侵蚀的速率。该数据集提供了全球范围内以10至60米的空间分辨率获取的多光谱图像数据,用于监测地表覆盖和变化。它对农业和土地资源管理者提供了一种评估和预测土壤侵蚀风险的工具,以制定适当的土壤保护措施和决策。2. soil(土壤)是来自OpenLandMap的土壤纹理分类数据,使用了USDA(美国农业部)土壤纹理分类系统。

此星光明博客 806

HBase 客户端通过Java访问集群

Hive有客户端,HBase也有客户端咯 hBase如何通过客户端连接呢?  简单的程序帮助你连接你的Hbase,很简单,很实用。 public class App { private static HBaseAdmin admin = null; public static Configuration configuration; public App() throws Maste

u010651137的博客 3246

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

hbase 单机 java api,HBase学习(一)hbase安装(单机模式)和javaapi客户端访问hbase例子...

平时习惯了window下开发,而Hbase只能在linux环境下运行,所以决定把hbase安装一台虚拟机上,在windows下运行eclipse连接虚拟机里的hbase因为对linux命令了解不多,所以很多时候都是编码baidu边安装的。安装Hbase单机模式(虚拟机安装的是CentOS)1、下载Hbase版本在http://apache.claz.org/hbase/选择一个需要下载的hbase...

weixin_42442019的博客 348

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

上一篇: Java客户端操作HBase代码
下一篇: JAVA安全客户端连接到Hbase
王树民
博客等级 码龄10年 912粉丝 560原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值