zoukankan      html  css  js  c++  java
  • 利用Phoenix映射Hbase表来进行操作

    一、Hbase无表数据

    这种情况需要由Phoenix来建映射表

    建表语句示例

    CREATE TABLE IF NOT EXISTS us_population (
          state CHAR(2) NOT NULL,
          city VARCHAR NOT NULL,
          population BIGINT
          CONSTRAINT my_pk PRIMARY KEY (state, city));

    此处用的联合主键,当然也支持单个主键

    注意:在Phoenix中创建的映射表删除时也会将Hbase中的表删除

     

    在建表时,小写的表名或列名,都会自动在sqlline.py中转为大写!这样在查询时,只能使用大写进行查询!

    如果必须使用小写,需要在表名等字段上添加双引号,建议不要使用小写的表名或字段!

     

    二、Hbase有表数据

    2.1只需要查找,不需要对数据进行操作

    这时需要建立视图,因为视图删除时不会影响到原数据

    建映射视图和映射表需要遵循以下几点:

    1. Phoneix的表名必须和 hbase的 库名.表名一致
    2. Phoneix的表的主键的列名一般对应rowkey列,名称可以随意,但是类型得匹配!
    3. Phoneix的表的普通的列名,必须和hbase的列族.列名一致!
    4. 表映射的结尾,必须添加column_encoded_bytes=0,不然无法从hbase中查询到数据的!

    示例:

    Habse表如下

     建表语句

    create view if not exists "stu"(
       "id" varchar primary key,
       "info1"."name" varchar ,
       "info1"."age" varchar
       )column_encoded_bytes=0;

    2.2需要对数据进行操作

    此时就只能用映射表来操作

    create table if not exists "stu"(
       "id" varchar primary key,
       "info1"."name" varchar ,
       "info1"."age" varchar
       )column_encoded_bytes=0;

    注意点:映射带命名空间的表

    带命名空间的表在进行映射时,必须参照这个博文里的方法进行配置

    https://blog.csdn.net/xdsxhdyy/article/details/96461576

    除了hbase的hbase-site.xml 要配置,phoenix 的bin/hbase-site.xml也要配置,否则会报错

    Ensure that config phoenix.schema.isNamespaceMappingEnabled is consitent on client and server

    然后再创建与hbase同名的schema

    create schema "myns";

    建表语句

    create table  "myns"."t1"(
       "id" varchar(20) primary key,
       "info1"."name" varchar (20)  
       )column_encoded_bytes=0;
  • 相关阅读:
    ASP.NET2.0中创建自定义配置节处理程序(声明性模型) joe
    .Net3.0里的DependencyProperty(1) joe
    详解Javascript匿名函数的使用(转) joe
    Mark:未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值 joe
    设置windows 7 默认登陆帐户 joe
    数据库的回滚
    关于软件开发人员如何提高自己的软件专业技术方面的具体建议
    查询表结构
    readonly 和 const总结
    深入NHibernate映射
  • 原文地址:https://www.cnblogs.com/yangxusun9/p/12555413.html
Copyright © 2011-2022 走看看