精华内容
下载资源
问答
  • hbase创建命名空间
    千次阅读
    2018-12-26 18:40:55

    HBase创建命名空间时,原本用的以下代码

    public abstract class BaseDao{
        //创建命名空间,如果命名空间不存在,则创建新的,否则不做任何操作
        protected void createNamespaceNX(String nameSpace) throws IOException {
            //创建默认配置对象
            Configuration conf = HBaseConfiguration.create();
            //获取连接对象
            Connection connection = ConnectionFactory.createConnection(conf);
            //获取管理对象
            Admin admin = connection.getAdmin();
            //获取命名空间
            NamespaceDescriptor namespaceDescriptor = admin.getNamespaceDescriptor(nameSpace);
            if(namespaceDescriptor == null){
                //创建命名空间的描述器
                namespaceDescriptor = NamespaceDescriptor.create(nameSpace).build();
                //管理对象创建命名空间
                admin.createNamespace(namespaceDescriptor);
            }
    }
    

    按照预想的逻辑,当namespaceDescriptor == null时,直接创建命名空间;

    但是实际跑程序时,若命名空间不存在,会直接抛异常


    于是看了一下,getNamespaceDescriptor()方法的源码,如下

      NamespaceDescriptor getNamespaceDescriptor(final String name)
          throws NamespaceNotFoundException, IOException;

    发现创建命名空间时,若命名空间不存在,需要用这个特定NamespaceNotFoundException进行抛异常;于是改进代码

    小结:

    对特殊异常需要处理时,用try catch的方式,单独捕捉异常并处理,

    否则一律通过throw exception这种形式进行直接抛出,抛到框架最外层,由框架统一处理。


    创建命名空间的正确代码如下:

     public abstract class BaseDao{
        //创建命名空间,如果命名空间不存在,则创建新的,否则不做任何操作
        protected void createNamespaceNX(String nameSpace) throws IOException {
            //创建默认配置对象
            Configuration conf = HBaseConfiguration.create();
            //获取连接对象
            Connection connection = ConnectionFactory.createConnection(conf);
            //获取管理对象
            Admin admin = connection.getAdmin();    
    
    //以下是正确代码:
            try{
                admin.getNamespaceDescriptor(nameSpace);
            }catch(NamespaceNotFoundException e){
                //若发生特定的异常,即找不到命名空间,则创建命名空间
                NamespaceDescriptor namespaceDescriptor = NamespaceDescriptor.create(nameSpace).build();
                admin.createNamespace(namespaceDescriptor);
            }
        }

    这样,在HBase中创建命名空间时,就不会因为命名空间不存在而抛异常了;

    当命名空间存在时,直接get调用;当命名空间不存在时,进行create创建。

     

     

     

    更多相关内容
  • HBase API 创建命名空间

    2022-04-05 21:42:12
    创建命名空间 public static void createNamespace(String ns){ // 14.1创建命名空间描述器 NamespaceDescriptor namespaceDescriptor = NamespaceDescriptor.create(ns).build(); // 14.2创建命名空间 try { admin....

    1.配置文件和连接信息

        //    两个变量的声明:
        private static Connection connection = null;
        private  static Admin admin = null;
    
        static{
            try {
    //            1.获取配置文件信息
                Configuration configuration = HBaseConfiguration.create();
                configuration.set("hbase.zookeeper.quorum","vincen,vincen1,vincen2");
    
    //            2.创建连接对象
                connection = ConnectionFactory.createConnection(configuration);
    
    //            3.创建admin对象
                admin = connection.getAdmin();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

    2.创建命名空间

        public static void createNamespace(String ns){
    //        14.1创建命名空间描述器
            NamespaceDescriptor namespaceDescriptor = NamespaceDescriptor.create(ns).build();
    //        14.2创建命名空间
            try {
                admin.createNamespace(namespaceDescriptor);
            } catch (NamespaceExistException e){
                System.out.println(ns + "命名空间已存在!");
            }
            catch (IOException e) {
                e.printStackTrace();
            }
    
            System.out.println("尽管存在,我还是可以走到这儿!!!");
        }

    3.单独创建关闭资源

        public static void close(){
            if(admin != null){
                try {
                    admin.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
    
            if(connection!=null){
                try {
                    connection.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

    4.测试和关闭

        public static void main(String[] args) throws IOException {
    
    //        14.创建命名空间测试
            createNamespace("0408");
    
    //        9.关闭资源的调用
            close();
        }

    整体详情:

    package test;
    
    import org.apache.hadoop.conf.Configuration;
    import org.apache.hadoop.hbase.*;
    import org.apache.hadoop.hbase.client.Admin;
    import org.apache.hadoop.hbase.client.Connection;
    import org.apache.hadoop.hbase.client.ConnectionFactory;
    
    import java.io.IOException;
    
    public class namespace {
    
        //    两个变量的声明:
        private static Connection connection = null;
        private  static Admin admin = null;
    
        static{
            try {
    //            1.获取配置文件信息
                Configuration configuration = HBaseConfiguration.create();
                configuration.set("hbase.zookeeper.quorum","vincen,vincen1,vincen2");
    
    //            2.创建连接对象
                connection = ConnectionFactory.createConnection(configuration);
    
    //            3.创建admin对象
                admin = connection.getAdmin();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
    
    
    //    6.创建命名空间
        public static void createNamespace(String ns){
    //        6.1创建命名空间描述器
            NamespaceDescriptor namespaceDescriptor = NamespaceDescriptor.create(ns).build();
    //        6.2创建命名空间
            try {
                admin.createNamespace(namespaceDescriptor);
            } catch (NamespaceExistException e){
                System.out.println(ns + "命名空间已存在!");
            }
            catch (IOException e) {
                e.printStackTrace();
            }
    
            System.out.println("尽管存在,我还是可以走到这儿!!!");
        }
    
    
    
    
        //    4.关闭资源
        public static void close(){
            if(admin != null){
                try {
                    admin.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
    
            if(connection!=null){
                try {
                    connection.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        public static void main(String[] args) throws IOException {
    
    //        7.创建命名空间测试
            createNamespace("0408");
    
    //        5.关闭资源的调用
            close();
        }
    }

    展开全文
  • 创建命名空间 public static void createNamespace(String ns){ // 9.1创建命名空间描述器 NamespaceDescriptor namespaceDescriptor = NamespaceDescriptor.create(ns).build(); // 9.2创建命名空间 try { admin....

    1.配置文件和连接信息

        //    两个变量的声明:
        private static Connection connection = null;
        private  static Admin admin = null;
     
        static{
            try {
    //            1.获取配置文件信息
                Configuration configuration = HBaseConfiguration.create();
                configuration.set("hbase.zookeeper.quorum","vincen,vincen1,vincen2");
     
    //            2.创建连接对象
                connection = ConnectionFactory.createConnection(configuration);
     
    //            3.创建admin对象
                admin = connection.getAdmin();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

    2.判断表是否存在

        //    4.判断表是否存在
        public static boolean isTableExist(String tableName) throws IOException {
    
    //        5.判断表是否存在
            boolean exists = admin.tableExists(TableName.valueOf(tableName));
    
    //        6.返回结果
            return exists;
        }

    3.创建表

        //    8.创建表
        public static void creaTable(String tableName,String... cfs) throws IOException {
    //        8.1  是否存在列族信息
            if (cfs.length <= 0) {
                System.out.println("请设置列族信息!");
                return;
            }
    
    //        8.2  判断表是否存在
            if (isTableExist(tableName)) {
                System.out.println(tableName + "表已存在!");
                return;
            }
    
    //        8.3  创建表描述器
            HTableDescriptor hTableDescriptor = new HTableDescriptor(TableName.valueOf(tableName));
    
    //        8.4  循环添加列族信息
            for (String cf : cfs) {
    //            8.5  创建列族描述器
                HColumnDescriptor hColumnDescriptor = new HColumnDescriptor(cf);
    //            8.6 添加具体的列族信息
                hTableDescriptor.addFamily(hColumnDescriptor);
            }
    
    //        8.7  创建表
            admin.createTable(hTableDescriptor);
        }

    4.创建命名空间

    //    9.创建命名空间
        public static void createNamespace(String ns){
    //        9.1创建命名空间描述器
            NamespaceDescriptor namespaceDescriptor = NamespaceDescriptor.create(ns).build();
    //        9.2创建命名空间
            try {
                admin.createNamespace(namespaceDescriptor);
            } catch (NamespaceExistException e){
                System.out.println(ns + "命名空间已存在!");
            }
            catch (IOException e) {
                e.printStackTrace();
            }
    
            System.out.println("尽管存在,我还是可以走到这儿!!!");
        }

    5.单独创建关闭资源

    //    7.关闭资源
        public static void close(){
            if(admin != null){
                try {
                    admin.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
     
            if(connection!=null){
                try {
                    connection.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

    6.测试和关闭

        public static void main(String[] args) throws IOException {
    
    //        10.测试命名空间(含表)是否存在
            System.out.println(isTableExist("0408:stu1"));
    
    //        11.创建命名空间(含表)测试
            creaTable("0408:stu1","info1","info2");
    
    //        12.创建命名空间测试
            createNamespace("0408");
    
    //        13.创建完测试表是否存在
            System.out.println(isTableExist("0408:stu1"));
    //        14.关闭资源的调用
            close();
        }

    整体详情:

    package test;
    
    import org.apache.hadoop.conf.Configuration;
    import org.apache.hadoop.hbase.*;
    import org.apache.hadoop.hbase.client.Admin;
    import org.apache.hadoop.hbase.client.Connection;
    import org.apache.hadoop.hbase.client.ConnectionFactory;
    
    import java.io.IOException;
    
    public class namespace {
    
        //    两个变量的声明:
        private static Connection connection = null;
        private  static Admin admin = null;
    
        static{
            try {
    //            1.获取配置文件信息
                Configuration configuration = HBaseConfiguration.create();
                configuration.set("hbase.zookeeper.quorum","vincen,vincen1,vincen2");
    
    //            2.创建连接对象
                connection = ConnectionFactory.createConnection(configuration);
    
    //            3.创建admin对象
                admin = connection.getAdmin();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
    
        //    4.判断表是否存在
        public static boolean isTableExist(String tableName) throws IOException {
    
    //        5.判断表是否存在
            boolean exists = admin.tableExists(TableName.valueOf(tableName));
    
    //        6.返回结果
            return exists;
        }
    
        //    8.创建表
        public static void creaTable(String tableName,String... cfs) throws IOException {
    //        8.1  是否存在列族信息
            if (cfs.length <= 0) {
                System.out.println("请设置列族信息!");
                return;
            }
    
    //        8.2  判断表是否存在
            if (isTableExist(tableName)) {
                System.out.println(tableName + "表已存在!");
                return;
            }
    
    //        8.3  创建表描述器
            HTableDescriptor hTableDescriptor = new HTableDescriptor(TableName.valueOf(tableName));
    
    //        8.4  循环添加列族信息
            for (String cf : cfs) {
    //            8.5  创建列族描述器
                HColumnDescriptor hColumnDescriptor = new HColumnDescriptor(cf);
    //            8.6 添加具体的列族信息
                hTableDescriptor.addFamily(hColumnDescriptor);
            }
    
    //        8.7  创建表
            admin.createTable(hTableDescriptor);
        }
    
    
    //    9.创建命名空间
        public static void createNamespace(String ns){
    //        9.1创建命名空间描述器
            NamespaceDescriptor namespaceDescriptor = NamespaceDescriptor.create(ns).build();
    //        9.2创建命名空间
            try {
                admin.createNamespace(namespaceDescriptor);
            } catch (NamespaceExistException e){
                System.out.println(ns + "命名空间已存在!");
            }
            catch (IOException e) {
                e.printStackTrace();
            }
    
            System.out.println("尽管存在,我还是可以走到这儿!!!");
        }
    
    
    
    //    7.关闭资源
        public static void close(){
            if(admin != null){
                try {
                    admin.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
    
            if(connection!=null){
                try {
                    connection.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        public static void main(String[] args) throws IOException {
    
    //        10.测试命名空间(含表)是否存在
            System.out.println(isTableExist("0408:stu1"));
    
    //        11.创建命名空间(含表)测试
            creaTable("0408:stu1","info1","info2");
    
    //        12.创建命名空间测试
            createNamespace("0408");
    
    //        13.创建完测试表是否存在
            System.out.println(isTableExist("0408:stu1"));
    //        14.关闭资源的调用
            close();
        }
    }

    展开全文
  • 命名空间 列出所有命名空间 hbase> list_namespace 新建命名空间 hbase> create_namespace 'ns1' 删除命名空间 hbase> drop_namespace 'ns1' 该命名空间必须为空,否则系统不让删除。 修改命名空间 hbase> alter...
  • hbase命名空间

    2021-03-04 20:05:54
    命名空间是对表的逻辑分组,不同的命名空间类似于关系型数据库中的不同的Database数据库。利用命名空间,在多租户场景下可做到更好的资源和数据隔离。 表 对应于关系型数据库中的一张张表,HBase以“表”为单位组织...

    HBase数据模型

    命名空间
    命名空间是对表的逻辑分组,不同的命名空间类似于关系型数据库中的不同的Database数据库。利用命名空间,在多租户场景下可做到更好的资源和数据隔离。

    对应于关系型数据库中的一张张表,HBase以“表”为单位组织数据,表由多行组成。

    行由一个RowKey和多个列族组成,一个行有一个RowKey,用来唯一标示。
    列族
    每一行由若干列族组成,每个列族下可包含多个列,如上ImployeeBasicInfoCLF和DetailInfoCLF即是两个列族。列族是列共性的一些体现。注意:物理上,同一列族的数据存储在一起的。
    列限定符
    列由列族和列限定符唯一指定,像如上的name、age即是ImployeeBasicInfoCLF列族的列限定符。
    单元格
    单元格由RowKey、列族、列限定符唯一定位,单元格之中存放一个值(Value)和一个版本号。
    时间戳
    单元格内不同版本的值按时间倒序排列,最新的数据排在最前面
    在这里插入图片描述
    命名空间的使用

    1)创建命名空间
    
    hbase(main):002:0> create_namespace 'ns_school'
    2)创建表时指定命名空间
    
    hbase(main):004:0> create 'ns_school:tbl_student','info'
    
    

    3)观察HDFS中的目录结构的变化
    在这里插入图片描述
    参考这:
    https://www.jianshu.com/p/9ef948593c7d

    展开全文
  • HBase入门基本:命名空间、建表、增删改查

    万次阅读 多人点赞 2018-11-02 16:14:08
    进入HBase数据库 # hbase shell 注意HBase Shell 中的回格键没用,要用【Ctrl+Backspace】,每个命令之后不...列出所有命名空间 hbase&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; list_namespace 新建命名
  • hbase 创建namespace 命令

    2021-08-18 09:59:11
    最近在做hbase表迁移时,创建hbase 表,指定了namespace ,但是报location 不正确,经排查发现namespace不存在,顾创建完namespace 后即可成功。 //链接HBASE hbase shell //创建namespace create_namespace "test...
  • HBase命名空间

    千次阅读 2018-05-07 19:11:40
    HBase命名空间 1.什么是命名空间? 我的理解就是:对hbase中表...创建一个命名空间:"haha" hbase(main):001:0&gt; create_namespace 'haha' 0 row(s) in 1.0220 seconds //2.查看命名空间:"h...
  • 1、在开发和调试阶段,我们会通过HBase自带的shell命令行去操作,可以执行创建表,添加数据,修改数据之类的操作,比较方便 2、在程序上线运行阶段,需要通过代码来操作HBaseHBase提供的有JavaAPI可以使用 在这里...
  • HBase创建命名空间的语法是`create namepsce xxx`,使用phoenix后,同样可以通过SQL创建命名空间,但前提需要开启NameSpace同步。 步骤 关闭hbase和Phoenix 在 HBASEHOME/conf/hbase−site.xml和HBASE_HOME/conf/...
  • hbase的超级用户 ...进入后创建命名空间或数据库 hbase(main):005:0> create_namespace 'lhj_db' 0 row(s) in 0.2810 seconds create_namespace 'lhj_ns' hbase(main):006:0> grant 'lhj','R
  • HBase在CentOS上分布集群安装: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/119511593 在上面搭建起来HBase的分布集群的环境下。 使用JAVA API连接HBASE进行建表操作。 但是运行之后一直就是卡...
  • 1.2 创建命名空间、创建表 2.2 插入数据 注:执行删除整个RowKey数据,所添加的标记,作用范围:当前列族小于等于标记时间戳的数据
  • hbaseAPI 命名空间

    2019-01-10 19:36:48
    //创建一个命名空间 create_namespace //NamespaceDescriptor //admin.createNamespace(NamespaceDescriptor.create("candle").build()); //NamespaceDescriptor.Builder builder = NamespaceDescriptor.create...
  • 创建命名空间 create_namespace ‘my_namespace_test’ 查看命名空间 list_namespace describe_namespace ‘my_namespace_test’ 创建表,及其列簇(单列簇、多列簇) create ‘my_namespace_test:my_table_test_1’, ...
  • 默认情况下,所创建的表都是在默认的命名空间中。 1、启用名称空间映射参数 1)phoenix.schema.isNamespaceMappingEnabled:默认false,如果启用了它,那么使用模式创建的表将映射到名称空间。这需要在客户端和...
  • 原因是以前创建过这个表,但是hbase暴力删除了这个表后,zookeeper还保留了这个表的信息。 在linux 下用hbase zkcli 命令进入 ls /hbase/table 可以查看存在的表信息 然后用命令 rmr /hbase/table/表名 进入...
  • hbase基础命令

    2020-03-28 08:38:03
    DDL list ...创建命名空间 create_namespace ‘ns01’ 建表 create ‘ns01:table01’, {NAME => ‘family01’, VERSIONS => 5},{NAME => ‘family02’, VERSIONS => 2} 查看表属性 ...
  • 在phoenix中与hbase命名空间相对应的是schema概念,默认是没有开启的,需要在hbasehbase-site.xml中增加以下配置项 <property> <name>phoenix.schema.isNamespaceMappingEnabled</name> &...
  • 1、创建hbase工程 2 编写config.properties # hbase信息 hbase.zookeeper.quorum=xxx.xxx.xxx.xxx,xxx.xxx.xxx.xxx,xxx.xxx.xxx.xxx hbase.zookeeper.property.clientPort=2181 3 编写Config package ...
  • hbase 创建表卡住 无报错信息

    千次阅读 2016-12-12 13:31:44
    *hbase 创建表卡住 无报错信息 Hbase shell不能创建表的原因分析。 一.现象: 前一段时间 安装了Hbase hbase shell 进去之后 list status 命令都能够正常运行。 但是执行建表语句 : ...
  • Hbase学习(创建namespace、表等操作)

    千次阅读 2021-07-13 22:30:48
    进入hbase命令行命令: hbase shell 创建namespace(其实我理解这个namespace就像MySql中的库...在刚刚创建命名空间创建表: create 'namespace_test:table_test',{NAME => 'name', VERSIONS => 100},{NAME
  • Hbase 创建、修改名称空间(namespace) 创建名称空间 配置文件 创建连接 创建名称空间(namaespace) 设置描述属性 //创建连接 Connection conn = ConnectionFactory.createConnection(conf); Admin admin = ...
  • Java在HBase数据库创建

    千次阅读 2021-03-07 23:00:57
    Java在HBase数据库创建表要通过Java在HBase创建一个数据表,首先需要导入hbase-client.jar驱动包。可以在项目pom.xml配置文件中添加依赖:org.apache.hbasehbase-client1.1.0.1在添加依赖后,我们需要创建...
  • Hbase 命令简单练习

    2021-09-29 20:56:05
    创建命名空间test,订单表,并向表中插入如下数据: 订单ID 订单状态 支付金额 支付方式 用户ID ID status pay_money payway user_id 01 已提交 4070 1 19 前提工作: ...
  • HBase创建

    2021-03-12 22:05:52
    HBase - Create TableCreating a Table using HBase ShellYou can create a table using the create command, here you must specify the table name and the Column Family name. The syntax to create a table in ...
  • 合并后用dataspace+kerberos控制不同公司对集群资料的访问权限,三家公司分别使用独立的kerberos票据访问,特定的namespace,而生产环境部署的kylin-2.0/2.1只能保存cuboid到hbase 的 default namespace。解决的过程...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,503
精华内容 4,201
关键字:

hbase创建命名空间