`
nannan408
  • 浏览: 1784459 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

apache phoenix 研究笔记

 
阅读更多
1.前言。
   apache phoenix很多问题需要完善,但确实思想不错。
2.问题。
  (1)按照官方的create index在内存表建索引,会导致插入失败,查询失败,程序崩溃。官方不是说hbase0.94后phonenix2.2,3.0都支持二级索引吗,为什么hadoop2.2上面创建索引成功,但从此以后这张表无论插入还是查询都失败呢,期待解决。
  (2)join有问题,还不能用,版本为phoenix2.2,报错如下:

0: jdbc:phoenix:hadoopmaster:2181>  select * from a inner join b  on a.id=b.id
. . . . . . . . . . . . . . . . .> ;
java.lang.NullPointerException: at index 5
        at com.google.common.collect.ImmutableList.checkElementNotNull(ImmutableList.java:311)
        at com.google.common.collect.ImmutableList.construct(ImmutableList.java:302)
        at com.google.common.collect.ImmutableList.copyOf(ImmutableList.java:278)
        at com.salesforce.phoenix.schema.PTableImpl.init(PTableImpl.java:242)
        at com.salesforce.phoenix.schema.PTableImpl.<init>(PTableImpl.java:190)
        at com.salesforce.phoenix.schema.PTableImpl.makePTable(PTableImpl.java:185)
        at com.salesforce.phoenix.compile.JoinCompiler$JoinSpec.createProjectedTable(JoinCompiler.java:257)
        at com.salesforce.phoenix.compile.QueryCompiler.compileJoinQuery(QueryCompiler.java:156)
        at com.salesforce.phoenix.compile.QueryCompiler.compile(QueryCompiler.java:137)
        at com.salesforce.phoenix.compile.QueryCompiler.compile(QueryCompiler.java:121)
        at com.salesforce.phoenix.optimize.QueryOptimizer.optimize(QueryOptimizer.java:44)
        at com.salesforce.phoenix.optimize.QueryOptimizer.optimize(QueryOptimizer.java:39)
        at com.salesforce.phoenix.jdbc.PhoenixStatement$ExecutableSelectStatement.optimizePlan(PhoenixStatement.java:223)
        at com.salesforce.phoenix.jdbc.PhoenixStatement$ExecutableSelectStatement.executeQuery(PhoenixStatement.java:200)
        at com.salesforce.phoenix.jdbc.PhoenixStatement$ExecutableSelectStatement.execute(PhoenixStatement.java:212)
        at com.salesforce.phoenix.jdbc.PhoenixStatement.execute(PhoenixStatement.java:1014)
        at sqlline.SqlLine$Commands.execute(SqlLine.java:3673)
        at sqlline.SqlLine$Commands.sql(SqlLine.java:3584)
        at sqlline.SqlLine.dispatch(SqlLine.java:821)
        at sqlline.SqlLine.begin(SqlLine.java:699)
        at sqlline.SqlLine.mainWithInputRedirection(SqlLine.java:441)
        at sqlline.SqlLine.main(SqlLine.java:424)



(2)查询问题,内存不够用。
java.lang.RuntimeException: com.salesforce.phoenix.exception.PhoenixIOException: com.salesforce.phoenix.exception.PhoenixIOException: org.apache.hadoop.hbase.DoNotRetryIOException: TASK12,\x003-1400811430015-user544                                         5248961.893007443\x00bxstevfkzcjl1oxrjmzb,1402059515499.09d0aa347d2a61427cc5c96ae094e96b.: Requested memory of 34598340 bytes could not be allocated from remaining memory of 321202800 bytes from global pool of 346218496 bytes after waiting for 10000ms.
        at sqlline.SqlLine$IncrementalRows.hasNext(SqlLine.java:2440)
        at sqlline.SqlLine$TableOutputFormat.print(SqlLine.java:2074)
        at sqlline.SqlLine.print(SqlLine.java:1735)
        at sqlline.SqlLine$Commands.execute(SqlLine.java:3683)
        at sqlline.SqlLine$Commands.sql(SqlLine.java:3584)
        at sqlline.SqlLine.dispatch(SqlLine.java:821)
        at sqlline.SqlLine.begin(SqlLine.java:699)
        at sqlline.SqlLine.mainWithInputRedirection(SqlLine.java:441)
        at sqlline.SqlLine.main(SqlLine.java:424)



3.总结。
   (1)关于单机扫描速度group by,cast类型转换方法,phoenix还要加油啊。group by 250万秒级。太少了,至少单机扫表速度要700万/秒级才有意义。cast类型转换cast '111.1' as Integer直接报错,对此我无语了。
   (2)官方还需要在细节下功夫啊。demo也非常少啊。
   (3)phoenix走入了误区,一个版本2.2.3没搞好,就急着往下搞,导致没一个版本能用的,hbase直接就跳到了0.98,你让0.98以下的人怎么活?bug多,功能少是phoenix的一大要害。
 
 
分享到:
评论

相关推荐

    Using Apache Phoenix 4.8

    根据官网整理。Using Apache Phoenix Using Apache Phoenix Using Apache Phoenix Using Apache Phoenix Using Apache Phoenix Using Apache Phoenix Using Apache Phoenix。

    apache-phoenix-4.13.1安装包

    Apache Phoenix 是一个开源的SQL查询引擎,用于在Apache HBase之上提供高性能的关系型数据库功能。它将SQL查询转换为HBase的原生操作,从而提高了数据处理的速度和效率。Phoenix 4.13.1是该项目的某个稳定版本,特别...

    apache-phoenix-4.14.0-cdh5.14.2-bin.tar.gz安装包

    Apache Phoenix 是一个开源的SQL引擎,它为Apache HBase提供了高性能的关系型数据库查询能力。Phoenix 使用JDBC接口,使得开发者可以使用SQL语句来操作HBase数据,极大地简化了对大数据存储系统的操作。Apache ...

    apache-phoenix-5.0.0-HBase-2.0-bin.tar.gz

    Apache Phoenix是构建在HBase之上的关系型数据库层,作为内嵌的客户端JDBC驱动用以对HBase中的数据进行低延迟访问。Apache Phoenix会将用户编写的sql查询编译为一系列的scan操作,最终产生通用的JDBC结果集返回给...

    apache-phoenix-4.8.1-HBase-1.2-bin.tar.gz

    Apache Phoenix 是一个开源的SQL-on-HBase框架,它允许用户通过标准的JDBC接口与HBase进行交互,极大地简化了对大数据存储系统的SQL查询。在标题"apache-phoenix-4.8.1-HBase-1.2-bin.tar.gz"中,我们可以看到这是...

    Apache-Phoenix使用文档-英文1

    Apache Phoenix 是一个高性能的关系型数据库层,专门为Apache HBase设计,允许用户通过SQL查询和管理HBase中的数据。Phoenix利用JDBC驱动程序将SQL查询转换为HBase的原生操作,提高了查询性能,尤其适用于大数据分析...

    apache-phoenix-4.14.3-HBase-1.3-bin.tar.gz

    Apache Phoenix 是一个开源的SQL-on-HBase框架,它允许用户通过使用JDBC接口来查询和操作HBase数据库。Phoenix将SQL语句转换为HBase的原生操作,从而提高了对大数据集的查询性能。这个"apache-phoenix-4.14.3-HBase-...

    apache-phoenix-4.14.0-cdh5.14.2-bin.tar.gz

    Apache Phoenix 是一个开源的、基于 Apache HBase 的关系型数据库层,它允许用户通过 SQL 查询在 HBase 上的数据。此压缩包"apache-phoenix-4.14.0-cdh5.14.2-bin.tar.gz"是 Phoenix 的特定版本,针对 Cloudera Data...

    apache-phoenix-4.14.0-HBase-1.2-src.tar.gz

    Apache Phoenix 是一个开源的SQL引擎,它为Apache HBase提供了高性能的关系型数据库查询能力。Phoenix将SQL查询转换为HBase的原生操作,使得开发者能够使用SQL语法与HBase进行交互,而无需深入理解HBase的Java API。...

    Pro Apache Phoenix(Apress,2016)

    Pro Apache Phoenix covers the nuances of setting up a distributed HBase cluster with Phoenix libraries, running performance benchmarks, configuring parameters for production scenarios, and viewing the...

    Apache Phoenix:We put the SQL back in NoSQL

    ### Apache Phoenix:将SQL带回NoSQL #### 一、HBase简介 Apache HBase是一个分布式、版本化的键值存储系统,作为Apache Hadoop项目的一部分而开发。它在Hadoop Distributed File System (HDFS)之上运行,提供了一...

    apache-phoenix-4.10.0-HBase-1.1-bin.tar.gz

    Apache Phoenix是一个开源的SQL层,它为Apache HBase这样的NoSQL数据库提供了高性能的关系型查询能力。这个名为"apache-phoenix-4.10.0-HBase-1.1-bin.tar.gz"的压缩包包含了Phoenix 4.10.0版本,专为运行在HBase ...

    apache-phoenix-4.8.1-HBase-0.98-bin.tar

    Apache Phoenix 是一个开源的 JDBC 驱动程序,它允许用户使用 SQL 查询语言与 HBase 数据存储进行交互。Phoenix 将 SQL 转换为低级的 HBase 扫描,从而提高了数据处理的性能。在您提供的压缩包 "apache-phoenix-...

    docker-apache-phoenix:基于高山的Apache Phoenix Docker映像

    docker-apache-phoenix 基于高山的Apache Phoenix Docker映像小型安装# load default env as neededeval $(docker-machine env default)# network docker network create vnet# hbase+phoenix startupdocker-compose...

    apache-phoenix.zip

    实现sql查询Hbase,Phoenix 基于Hbase给面向业务的开发人员提供了以标准SQL的方式对Hbase进行查询操作,并支持标准SQL中大部分特性:条件运算,分组,分页,等高级查询语法...apache-phoenix-4.14.1-HBase-1.2-bin.tar.gz

    藏经阁-Apache Phoenix and HBase_ Past, Present and Future of SQL ov

    "Apache Phoenix 和 HBase: Past, Present and Future of SQL over HBase" Apache Phoenix 是一个基于 HBase 的关系型数据库层,它提供了 SQL 接口来访问 HBase 数据。Phoenix 的出现解决了 HBase 的一些限制,如...

    apache的学习笔记

    apache的学习笔记

    Apache Phoenix and HBase Past, Present and Future of SQL over HBase

    ### Apache Phoenix 和 HBase:过去、现在与未来 #### Apache Phoenix 的基本概念 Apache Phoenix 是一个为 HBase 提供的 SQL 层,它允许用户直接通过 SQL 语句查询存储在 HBase 中的数据,而无需编写 Java 代码。...

    apache-phoenix-4.8.1-HBase-0.98-src.tar.gz

    Apache Phoenix是一个开源的SQL层,它允许用户通过标准的JDBC接口来查询和操作存储在Apache HBase数据库中的数据。Apache Phoenix将SQL查询转换为低级的HBase扫描,从而提高了大数据查询的性能。"apache-phoenix-...

    apache ftpserver笔记

    这篇笔记主要围绕Apache FTPServer的使用、配置和相关开发进行讲解。 首先,Apache FTPServer提供了灵活的配置机制,允许管理员通过XML文件定制服务器的行为。这包括设置用户账户、指定工作目录、限制上传下载速度...

Global site tag (gtag.js) - Google Analytics