Phoenix使用总结

对工作中预研Phoenix的使用做一些总结。
1. Phoenix环境下HBase table名大小写是敏感的
如果要用小写命名表名,必须带上双引号

2. Phoenix客户端查询超时
在Phoenix默认配置下,如果查询时间过长(超过1分钟或者更多),就可能会抛相应的TimeoutException。

解决方法为修改phoenix发布包/bin下面的hbase-site.xml增加如下配置


  phoenix.query.timeoutMs
  3600000 



  hbase.rpc.timeout
  3600000

3. Phoenix二级索引表与源数据表保持同步的前提
源数据表的增、删、改操作必须通过Phoenix命令行或者客户端,才能保证二级索引表与源表保持同步。Phoenix提供的Bulk Loading同样也能保证二级索引表与源数据表保持同步。

4. Phoenix Bulk Loading的使用
依照官网文档有Bulk Loading有两种方式往HBase导入大批量数据,分别是“Loading via PSQL”和“Loading via MapReduce”。后者尝试不成功。

(1) 使用前者来导入大批量数据,要注意Loading via PSQL的文件必须是.csv后缀,不然程序无法识别到数据文件。

(2) 使用psql.py来导入大批量数据在表名为小写的时候无法识别,会抛TableNotFoundException异常,目前暂时没有找到解决方案。

(3) 使用psql.py导入大批量数据中途可能出现警告,不知道是否会出现数据丢失。

虽然最终导入的源数据表和索引表数据行数保持一致。

5. Phoenix表的管理维护
(1) 使用前者来导入大批量数据,要注意Loading via PSQL的文件必须是.csv后缀,不然程序无法识别到数据文件。

(2) 使用psql.py来导入大批量数据在表名为小写的时候无法识别,会抛TableNotFoundException异常,目前暂时没有找到解决方案。

(3) 使用psql.py导入大批量数据中途可能出现警告,不知道是否会出现数据丢失。

虽然最终导入的源数据表和索引表数据行数保持一致。

关于Zeno Chen

本人涉及的领域较多,杂而不精 程序设计语言: Perl, Java, PHP, Python; 数据库系统: MySQL,Oracle; 偶尔做做电路板的开发,主攻STM32单片机
此条目发表在NoSQL分类目录。将固定链接加入收藏夹。