SQuirrel client UI 操作hbase 及 spark with phoenix 写hbase 遇到的一些问题总结

1:在SQuirrel里如果创建table的时候,不指定namespace,则表是创建在default 空间的,在UI上无法看到,但是在phoenix sqlline 命令行可以看到,如下表LOT7

 

 

2:phoenix sql里,如果用引号将表名或列族名或列名括起来,则创建的表保持原来的大小写状态,如果没有用引号括起来,则转为大写形式,在后续访问的时候需要特别注意大小写问题

3:通常先创建schema,然后在schema 上创建table,schema类似数据库:

 

 

4:创建表的时候,可以指定列族,也可以不指定列族,如果没有指定列族,则没有列族,只有列名,如上图所示是指定了列族的

5:在spark 应用成员里,通过phoenix 写hbase的时候,如果表没有列族,则可以使用dataframe sql 直接写如hbase,要注意列的大小写问题

 

 

但是如果表是有列族的,则需要将dataframe的列先转换成别名的方式,再写入hbase,要特别注意的是,在spark中,列族或列名会转成大写形式,要和hbase里的大小写保持一致,否则会写入失败

 

6:如果是从hbase shell里创建的表,那在phoenix里是无法看到的,需要做phoenix schema 到 hbase namespace的转换,那么需要先修改hbase-site.xml:

    <property>
        <name>phoenix.schema.isNamespaceMappingEnabled</name>
        <value>true</value>
    </property>
    <property>
        <name>phoenix.schema.mapSystemTablesToNamespace</name>
        <value>true</value>
    </property>

 

7:在spark 中通过phoenix 访问hbase的时候,需要修改相应的spark配置,并将phoenix-spark jar 包拷贝到spark jar 目录

 

 

 

 

 

posted @ 2023-02-25 16:30  黎明踏浪号  阅读(81)  评论(0编辑  收藏  举报