Hbase新旧版的API

 1 package com.felix.hbaseapi_test;
 2
 3 /*           这是旧版的 API操作    */
16 public class hbaseapifelix {
17
18     public static final String TABLE_NAME = "testapi";
19     public static final String COLUMNFAMILY_NAME = "cf";
20     public static final String ROW_KEY = "rowkey1";
21
22     public static void main(String[] args) throws Exception {
23         Configuration conf = HBaseConfiguration.create();
24         HBaseAdmin admin=new HBaseAdmin(conf);
51         createtable(admin);
53         HTable htable=new HTable(conf, TABLE_NAME);
54
55         put(htable,"age","25");
56         put(htable,"age","26");
57         put(htable,"age","27");
58         put(htable,"age","28");
59
60         //Get
61         Get get=new Get(ROW_KEY.getBytes());
62         htable.get(get);
63
64         //scan
65         Scan scan=new Scan();
66         ResultScanner scanner = htable.getScanner(scan);
67     }
68
69     private static void put(HTable htable,String column,String value) throws IOException {
70         Put put=new Put(ROW_KEY.getBytes());
71         put.addColumn(COLUMNFAMILY_NAME.getBytes(), column.getBytes(), value.getBytes());
72         htable.put(put);
73     }
74
75     private static void createtable(HBaseAdmin admin) throws IOException {
76         HTableDescriptor desc = new HTableDescriptor(TABLE_NAME);
77         HColumnDescriptor family = new HColumnDescriptor(COLUMNFAMILY_NAME);
78         desc.addFamily(family);
79        family.setMaxVersions(3);
80         if (!admin.tableExists(TABLE_NAME)) {
81             //该表不存在,直接创建
82             admin.createTable(desc);
83         }else{
84             //该表存在,删除后再创建
85             if(!admin.isTableAvailable(TABLE_NAME)){
86                 //该表disable,直接删除
87                 admin.deleteTable(TABLE_NAME);
88             }else{
89                 //该表enable,先disable,再删除
90                 admin.disableTable(TABLE_NAME);
91                 admin.deleteTable(TABLE_NAME);
92             }
93             admin.createTable(desc);
94         }
95     }
96
97 }

 

  1 package com.felix.hbaseapi_test;
  2
  3
  4 import java.io.IOException;
  5
  6 import org.apache.hadoop.conf.Configuration;
  7 import org.apache.hadoop.hbase.HBaseConfiguration;
  8 import org.apache.hadoop.hbase.HColumnDescriptor;
  9 import org.apache.hadoop.hbase.HTableDescriptor;
 10 import org.apache.hadoop.hbase.TableName;
 11 import org.apache.hadoop.hbase.client.Admin;
 12 import org.apache.hadoop.hbase.client.Connection;
 13 import org.apache.hadoop.hbase.client.ConnectionFactory;
 14 import org.apache.hadoop.hbase.client.Get;
 15 import org.apache.hadoop.hbase.client.Put;
 16 import org.apache.hadoop.hbase.client.Result;
 17 import org.apache.hadoop.hbase.client.ResultScanner;
 18 import org.apache.hadoop.hbase.client.Scan;
 19 import org.apache.hadoop.hbase.client.Table;
 20
 21
 22 public class hbaseapifelix {
 23
 24     public static final String TABLE_NAME = "testapi";
 25     public static final String COLUMNFAMILY_NAME = "cf";
 26     public static final String ROW_KEY = "rowkey1";
 27
 28     public static void main(String[] args) throws Exception {
 29         Configuration conf = HBaseConfiguration.create();
 30         //下面的配置,在configuration文件中都配置过了这里没必要配置,也不方便
 31         //conf.set("hbase.rootdir", "hdfs://centos:9000/hbase");
 32         //conf.set("hbase.zookeeper.quorum","centos");
 33         //conf.set("hbase.zookeeper.property.clientPort", "2181");
 34
 35          Connection connection = ConnectionFactory.createConnection(conf);
 36          Admin admin = connection.getAdmin();
 37          Table table = connection.getTable(TableName.valueOf("user"));
 38          TableName name = table.getName();
 39
 40          initBeforeCreate(admin, name);
 41          createTable(admin, table);
 42
 43          try {
 44              Put put=new Put("rowkey".getBytes());
 45              put.addColumn(COLUMNFAMILY_NAME.getBytes(), "age".getBytes(), "25".getBytes());
 46              put.addColumn(COLUMNFAMILY_NAME.getBytes(), "age".getBytes(), "26".getBytes());
 47              put.addColumn(COLUMNFAMILY_NAME.getBytes(), "age".getBytes(), "27".getBytes());
 48              put.addColumn(COLUMNFAMILY_NAME.getBytes(), "age".getBytes(), "28".getBytes());
 49              table.put(put);
 50          } finally {
 51            table.close();
 52            connection.close();
 53          }
 54
 55
 56         Get get = new Get(ROW_KEY.getBytes());
 57         Result result = table.get(get);
 58
 59         Scan scan=new Scan();
 60         ResultScanner scanner = table.getScanner(scan);
 61
 62     /*    HBaseAdmin admin=new HBaseAdmin(conf);
 63         createtable(admin);
 64
 65         HTable htable=new HTable(conf, TABLE_NAME);
 66
 67         put(htable,"age","25");
 68         put(htable,"age","26");
 69         put(htable,"age","27");
 70         put(htable,"age","28");
 71
 72         //Get
 73         Get get=new Get(ROW_KEY.getBytes());
 74         htable.get(get);
 75
 76         //scan
 77         Scan scan=new Scan();
 78         ResultScanner scanner = htable.getScanner(scan);*/
 79     }
 80
 81     private static void initBeforeCreate(Admin admin, TableName name)
 82             throws IOException {
 83         /*创建前存在就删除
 84          * */
 85         if(admin.tableExists(name)){
 86              if(admin.isTableEnabled(name)){
 87                  admin.disableTable(name);
 88              }
 89              admin.deleteTable(name);
 90          }
 91     }
 92
 93     private static void createTable(Admin admin, Table table)
 94             throws IOException {
 95         HTableDescriptor desc=new HTableDescriptor(table.getName());
 96         HColumnDescriptor family=new HColumnDescriptor(COLUMNFAMILY_NAME);
 97         family.setMaxVersions(3);
 98         family.setMinVersions(0);
 99         desc.addFamily(family);
100         admin.createTable(desc);
101     }
102
103     /*private static void put(HTable htable,String column,String value) throws IOException {
104         Put put=new Put(ROW_KEY.getBytes());
105         put.addColumn(COLUMNFAMILY_NAME.getBytes(), column.getBytes(), value.getBytes());
106         htable.put(put);
107     }
108
109     private static void createtable(HBaseAdmin admin) throws IOException {
110         HTableDescriptor desc = new HTableDescriptor(TABLE_NAME);
111         HColumnDescriptor family = new HColumnDescriptor(COLUMNFAMILY_NAME);
112         desc.addFamily(family);
113        family.setMaxVersions(3);
114         if (!admin.tableExists(TABLE_NAME)) {
115             //该表不存在,直接创建
116             admin.createTable(desc);
117         }else{
118             //该表存在,删除后再创建
119             if(!admin.isTableAvailable(TABLE_NAME)){
120                 //该表disable,直接删除
121                 admin.deleteTable(TABLE_NAME);
122             }else{
123                 //该表enable,先disable,再删除
124                 admin.disableTable(TABLE_NAME);
125                 admin.deleteTable(TABLE_NAME);
126             }
127             admin.createTable(desc);
128         }
129     }*/
130
131 }

具体改成什么了,以及为什么修改,源码里面说的很清楚,比如:

HBaseAdmin is no longer a client API. It is marked InterfaceAudience.Private indicating that
* this is an HBase-internal class as defined in
* https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/InterfaceClassification.html
* There are no guarantees for backwards source / binary compatibility and methods or class can
* change or go away without deprecation.
* Use {@link Connection#getAdmin()} to obtain an instance of {@link Admin} instead of constructing
* an HBaseAdmin directly.

其他的自己关联源码自己看吧!

原文地址:https://www.cnblogs.com/double-orange/p/10209784.html

时间: 2024-10-12 23:27:56

Hbase新旧版的API的相关文章

Arcgis API For IOS扩展AGSDynamicLayer新旧版API对比

AGSDynamicLayer(ForSubclassEyesOnly) Category Reference Description This category organizes the methods that are relevant to subclassing a dynamic layer. Developer can create custom dynamic layers by paying special attention to the methods in this ca

(转)Resources和AssetBundle(新旧版)学习

Resources: Resources的缺点:1.与显示Inspector上直接引用相比,Resources使用不方便. 2.不管你Resources上的资源是否调用了,当你发布的时候,Resources上的资源会全部一起打包掉,无法作更新. Resources里的方法: Resources.Load :动态加载特殊文件夹Resources里的文件. Resources.UnloadAsset:回收指定的缓存. Resources.UnloadUnusedAsset:回收没有被引用的缓存 这里

Resources和AssetBundle(新旧版)学习(来自蛮牛)

Resources: Resources的缺点:1.与显示Inspector上直接引用相比,Resources使用不方便. 2.不管你Resources上的资源是否调用了,当你发布的时候,Resources上的资源会全部一起打包掉,无法作更新. Resources里的方法: Resources.Load :动态加载特殊文件夹Resources里的文件. Resources.UnloadAsset:回收指定的缓存. Resources.UnloadUnusedAsset:回收没有被引用的缓存 这里

JavaScript 兼容新旧版chrome和firefox的桌面通知

1.新/旧版本的chrome和firefox都可支持,IE下不支持因此设置为了在最小化窗口处闪烁显示提示文字. 2.设置为提示窗口显示5秒即关闭. 3.可设置图标和点击提示窗口要跳转到的页面(见输入参数). var timer = null, title = $('title').text(); $('body').on('click', function() { clearInterval(timer); $('title').text(title); }); function showMsg

Windows系列远程桌面工具2020年新旧版使用

 IIS7远程桌面程序截图更新日志:2020版远程桌面截图于2020年1月8日更新,由于有客户依旧使用旧版,此页面将保留旧版截图  IIS7远程桌面程序:http://yczm.iis7.com/?lxmd 旧版远程连接工具截图 新版远程桌面工具截图 原文地址:https://www.cnblogs.com/cclxm99/p/12335104.html

HIVE自定义TextInputFormat (旧版MapReduceAPI ok, 新版MapReduceAPI实现有BUG?)

我们的输入文件 hello0, 内容如下: xiaowang 28 [email protected][email protected] 38 [email protected][email protected] 100 unknown 逻辑上有3条记录, 它们以@[email protected]分隔. 我们将分别用旧版MapReduce API 和新版MapReduce API实现自定义TextInputFormat,然后在hive配置使用, 加载数据. 首先用旧版API 1, 自定义For

5.hadoop流原理、实例和新旧API下Wordcount详解

前四篇文章讲了Hadoop的配置和测试以及eclipse下的使用,有兴趣的可以先看下. 1.Hadoop流简介 用可执行文件作为Mapper和Reducer,接受的都是标准输入,输出的都是标准输出. 当一个可执行文件作为Mapper时,每一个Map任务会以一个独立的进程启动这个可执行文件,然后在Map任务运行时,会把输入切分成行提供给可 执行文件,并作为它的标准输入(stdin)内容.当可执行文件运行出结果时,Map从标准输出(stdout)中收集数据,并将其转化 为<key, value>对

Hadoop日记Day15---MapReduce新旧api的比较

我使用hadoop的是hadoop1.1.2,而很多公司也在使用hadoop0.2x版本,因此市面上的hadoop资料版本不一,为了扩充自己的知识面,MapReduce的新旧api进行了比较研究. hadoop版本1.x的包一般是mapreduce hadoop版本0.x的包一般是mapred 我们还是以单词统计为例进行研究,代码如下,如代码1.1所示: package old; import java.io.IOException; import java.net.URI; import ja

MapReduce简述、工作流程及新旧API对比

什么是MapReduce? 你想数出一摞牌中有多少张黑桃.直观方式是一张一张检查并且数出有多少张是黑桃. MapReduce方法则是: 1. 给在座的所有玩家中分配这摞牌. 2. 让每个玩家数自己手中的牌有几张是黑桃,然后把这个数目汇报给你. 3. 你把所有玩家告诉你的数字加起来,得到最后的结论. MapReduce概述 MapReduce是一种分布式计算模型,由Google提出,主要用于搜索领域,解决海量数据的计算问题.它的核心设计理念是移动计算,而不是移动数据. MapReduce合并了两种