|的ascII最大
ctrl+shift+t查找类  ctrl+p显示提示

HBase API操作

依赖的jar包

  1. <dependencies>
  2. <dependency>
  3. <groupId>org.apache.hbase</groupId>
  4. <artifactId>hbase-server</artifactId>
  5. <version>1.3.</version>
  6. </dependency>
  7.  
  8. <dependency>
  9. <groupId>org.apache.hbase</groupId>
  10. <artifactId>hbase-client</artifactId>
  11. <version>1.3.</version>
  12. </dependency>
  13.  
  14. </dependencies>
  1. public class TestHbase {
  2. //1.构建Configuration, Connection, Admin
  3. //Configuration 持有了zk的信息,进而hbase集群的信息可以间接获得
  4. public static Configuration conf;
  5. //Connection hbase连接 借助配置信息 获得连接
  6. public static Connection connection;
  7. public static Admin admin;
  8. static{ //为静态属性初始化,或者说辅助类初始化
  9. conf = HBaseConfiguration.create();
  10. conf.set("hbase.zookeeper.quorum", "hadoop101,hadoop102,hadoop103");
  11. try {
  12. connection = ConnectionFactory.createConnection(conf);
  13. } catch (IOException e) {
  14. e.printStackTrace();
  15. }
  16. //admin
  17. try {
  18. admin = connection.getAdmin();
  19. } catch (IOException e) {
  20. e.printStackTrace();
  21. }
  22.  
  23. }
  1. //1.创建库
  2. public static void createNS(String namespace) throws IOException {
  3. //①构建 ns的描述器 声明库名
  4. NamespaceDescriptor namespaceDescriptor = NamespaceDescriptor.create(namespace).build();
  5. //②创建库
  6. try{
  7. admin.createNamespace(namespaceDescriptor);
  8. }catch (NamespaceExistException e){
  9. System.out.println("该库已经存在!");
  10. }
  11. //③关资源
  12. admin.close();
  13. }
  1. //2.判断表是否存在
  2. public static boolean isExists(String tableName) throws IOException {
  3. boolean exists = admin.tableExists(TableName.valueOf(tableName));
  4. System.out.println("exits:" + exists);
  5. admin.close();
  6. return exists;
  7. }
  1. //3.创建表
  2. public static void createTable(String tableName, String... info) throws IOException {
  3. //①HTableDescriptor
  4. HTableDescriptor hTableDescriptor = new HTableDescriptor(TableName.valueOf(tableName));
  5. //②添加columnFamily 列族
  6. for (String cf : info) {
  7. hTableDescriptor.addFamily(new HColumnDescriptor(cf));
  8. }
  9. //③建表
  10. admin.createTable(hTableDescriptor);
  11. //④释放资源
  12. admin.close();
  13. }
  1. public static void deleteTable(String tableName) throws IOException {
  2. //禁用并删除表
  3. admin.disableTable(TableName.valueOf(tableName));
  4. admin.deleteTable(TableName.valueOf(tableName));
  5. admin.close();
  6. }
  1. //5.插入数据 put 'student','1001','cf1:name','kris'
  2. public static void insertData(String tableName, String rowkey, String column, String value) throws IOException {
  3. //①获取table
  4. Table table = connection.getTable(TableName.valueOf(tableName));
  5. //②获得put
  6. Put put = new Put(Bytes.toBytes(rowkey));//把String类型转成bytes类型
  7. put.addColumn(Bytes.toBytes(column.split(":")[0]), Bytes.toBytes(column.split(":")[1]),
  8. Bytes.toBytes(value));
  9. table.put(put); //③添加数据
  10. table.close();//④释放资源
  11. }
  1. //6.删除数据
  2. public static void deleteData(String tableName, String... rowkey) throws IOException {
  3. Table table = connection.getTable(TableName.valueOf(tableName));
  4. for (String rk : rowkey) {
  5. Delete del = new Delete(Bytes.toBytes(rk));//获得delete对象,其中持有要删除行的rowkey
  6. table.delete(del);
  7. }
  8. table.close();
  9. }
  1. //7.查询
  2. public static void queryAll(String tableName) throws IOException {
  3. Table table = connection.getTable(TableName.valueOf(tableName));
  4. Scan scan = new Scan();
  5. ResultScanner results = table.getScanner(scan);
  6. for (Result result : results) { //result对应一行数据
  7. Cell[] cells = result.rawCells(); //获取一行的所有cells
  8. for (Cell cell : cells) {
  9. String rowkey = Bytes.toString(CellUtil.cloneRow(cell));//
  10. String family = Bytes.toString(CellUtil.cloneFamily(cell));
  11. String column = Bytes.toString(CellUtil.cloneQualifier(cell));
  12. String value = Bytes.toString(CellUtil.cloneValue(cell));
  13. System.out.println("rowkey:" + rowkey + "\t" + family + ":" + column
  14. +"\t" + value);
  15. }
  16. }
  17. }
  1. //8.查询单行
  2. public static void getRow(String tableName, String rowkey) throws IOException {
  3. Table table = connection.getTable(TableName.valueOf(tableName));
  4. Get get = new Get(Bytes.toBytes(rowkey));
  5. get.addColumn(Bytes.toBytes("cf2"), Bytes.toBytes("name"));
  6. //get.addFamily(Bytes.toBytes("cf1")); //如果不追加列族,则查询所有列族
  7. Result result = table.get(get);
  8. Cell[] cells = result.rawCells();
  9. for (Cell cell : cells) {
  10. System.out.println("查询单行");
  11. String row = Bytes.toString(CellUtil.cloneRow(cell));
  12. String family = Bytes.toString(CellUtil.cloneFamily(cell));
  13. String column = Bytes.toString(CellUtil.cloneQualifier(cell));
  14. String value = Bytes.toString(CellUtil.cloneValue(cell));
  15. System.out.println("row:" + row +"\t" + family + ":" + column + "\t" + value);
  16. }
  17. }

HBase API操作的更多相关文章

  1. 5.Hbase API 操作开发

    Hbase API 操作开发需要连接Zookeeper进行节点的管理控制 1.配置 HBaseConfiguration: 包:org.apache.hadoop.hbase.HBaseConfigu ...

  2. HBASE API操作问题总结

    org.apache.hadoop.hbase.MasterNotRunningException 在centos中查看,发现没有HMaster进程 解决方法: 1.启动hadoop后,需要等一段时间 ...

  3. Hbase——API操作

    1.判断表是否存在 public static boolean isTableExit(String tableName) throws IOException { // //获取配置文件信息 // ...

  4. Hbase Shell命令详解+API操作

    HBase Shell 操作 3.1 基本操作1.进入 HBase 客户端命令行,在hbase-2.1.3目录下 bin/hbase shell 2.查看帮助命令 hbase(main):001:0& ...

  5. 大数据技术之_11_HBase学习_02_HBase API 操作 + HBase 与 Hive 集成 + HBase 优化

    第6章 HBase API 操作6.1 环境准备6.2 HBase API6.2.1 判断表是否存在6.2.2 抽取获取 Configuration.Connection.Admin 对象的方法以及关 ...

  6. HBase 6、用Phoenix Java api操作HBase

    开发环境准备:eclipse3.5.jdk1.7.window8.hadoop2.2.0.hbase0.98.0.2.phoenix4.3.0 1.从集群拷贝以下文件:core-site.xml.hb ...

  7. HBase API 基础操作

    对于数据操作,HBase支持四类主要的数据操作,分别是: Put :增加一行,修改一行 Delete :删除一行,删除指定列族,删除指定column的多个版本,删除指定column的制定版本等 Get ...

  8. 使用IDEA操作Hbase API 报错:org.apache.hadoop.hbase.client.RetriesExhaustedException的解决方法:

     使用IDEA操作Hbase API 报错:org.apache.hadoop.hbase.client.RetriesExhaustedException的解决方法: 1.错误详情: Excepti ...

  9. Java API 操作HBase Shell

    HBase Shell API 操作 创建工程 本实验的环境实在ubuntu18.04下完成,首先在改虚拟机中安装开发工具eclipse. 然后创建Java项目名字叫hbase-test 配置运行环境 ...

随机推荐

  1. [javascript]multipart/form-data上传格式表单自定义创建

    <!DOCTYPE html> <html> <head> <title></title> </head> <body&g ...

  2. 对mysql数据库中字段为空的处理

    数据库中字段为空的有两种:一种为null,另一种为空字符串.null代表数值未知,空字符串是有值得,只是为空.有时间我们想把数据库中的数据以excel形式导出时 如果碰到字段为空的,为空的字段会被后面 ...

  3. python HTML报告

    http://www.cnblogs.com/puresoul/p/7490737.html # coding:utf-8import timeimport unittestimport HTMLTe ...

  4. 在XIB 或者 SB 上面 实现 半透明的背景上添加UILabel是文字不透明

    设透明背景的时候直接设置RGB值  然后设置Opacity即可

  5. vuejs项目---配置理解:

    当我们需要和后台分离部署的时候,必须配置config/index.js: 用vue-cli 自动构建的目录里面  (环境变量及其基本变量的配置) 1 2 3 4 5 6 7 8 9 10 11 12 ...

  6. laravel 表单方法伪造

    有时候,我们可能需要手动定义发送表单数据所使用的 HTTP 请求方式,而 HTML 表单仅支持 GET 和 POST 两种方式,如果要使用其他的方式,则需要自己来定义实现. HTTP 请求方式概述 最 ...

  7. git使用diff----git-pull之后如何查看拉下来的文件有那些修改

    git pull拉取 git pull对于拉下来的修改文件自动对其进行git add /rm 及git commit 操作.所以拉下来的文件有那些修改,查看的方式可把它们归结于上一次提交的比较. gi ...

  8. 改变html结构可以实现优先加载

    我们通过一个实例来看一下: 本编程题目,完成一个混合布局的编写吧!最终效果如下图: 任务 任务1:完成顶部(top).底部(foot)宽度自适应 任务2:中间分为2两栏,其中,左侧(left)宽度为2 ...

  9. IDEA的字体设置

    最后点击ok

  10. 设置IDEA中的web