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 Using Apache Phoenix Using Apache Phoenix Using Apache Phoenix Using Apache Phoenix Using Apache Phoenix Using Apache Phoenix。
Apache Phoenix 是一个开源的SQL查询引擎,用于在Apache HBase之上提供高性能的关系型数据库功能。它将SQL查询转换为HBase的原生操作,从而提高了数据处理的速度和效率。Phoenix 4.13.1是该项目的某个稳定版本,特别...
Apache Phoenix 是一个开源的SQL引擎,它为Apache HBase提供了高性能的关系型数据库查询能力。Phoenix 使用JDBC接口,使得开发者可以使用SQL语句来操作HBase数据,极大地简化了对大数据存储系统的操作。Apache ...
Apache Phoenix是构建在HBase之上的关系型数据库层,作为内嵌的客户端JDBC驱动用以对HBase中的数据进行低延迟访问。Apache Phoenix会将用户编写的sql查询编译为一系列的scan操作,最终产生通用的JDBC结果集返回给...
Apache Phoenix 是一个开源的SQL-on-HBase框架,它允许用户通过标准的JDBC接口与HBase进行交互,极大地简化了对大数据存储系统的SQL查询。在标题"apache-phoenix-4.8.1-HBase-1.2-bin.tar.gz"中,我们可以看到这是...
Apache Phoenix 是一个高性能的关系型数据库层,专门为Apache HBase设计,允许用户通过SQL查询和管理HBase中的数据。Phoenix利用JDBC驱动程序将SQL查询转换为HBase的原生操作,提高了查询性能,尤其适用于大数据分析...
Apache Phoenix 是一个开源的SQL-on-HBase框架,它允许用户通过使用JDBC接口来查询和操作HBase数据库。Phoenix将SQL语句转换为HBase的原生操作,从而提高了对大数据集的查询性能。这个"apache-phoenix-4.14.3-HBase-...
Apache Phoenix 是一个开源的、基于 Apache HBase 的关系型数据库层,它允许用户通过 SQL 查询在 HBase 上的数据。此压缩包"apache-phoenix-4.14.0-cdh5.14.2-bin.tar.gz"是 Phoenix 的特定版本,针对 Cloudera Data...
Apache Phoenix 是一个开源的SQL引擎,它为Apache HBase提供了高性能的关系型数据库查询能力。Phoenix将SQL查询转换为HBase的原生操作,使得开发者能够使用SQL语法与HBase进行交互,而无需深入理解HBase的Java API。...
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:将SQL带回NoSQL #### 一、HBase简介 Apache HBase是一个分布式、版本化的键值存储系统,作为Apache Hadoop项目的一部分而开发。它在Hadoop Distributed File System (HDFS)之上运行,提供了一...
Apache Phoenix是一个开源的SQL层,它为Apache HBase这样的NoSQL数据库提供了高性能的关系型查询能力。这个名为"apache-phoenix-4.10.0-HBase-1.1-bin.tar.gz"的压缩包包含了Phoenix 4.10.0版本,专为运行在HBase ...
Apache Phoenix 是一个开源的 JDBC 驱动程序,它允许用户使用 SQL 查询语言与 HBase 数据存储进行交互。Phoenix 将 SQL 转换为低级的 HBase 扫描,从而提高了数据处理的性能。在您提供的压缩包 "apache-phoenix-...
docker-apache-phoenix 基于高山的Apache Phoenix Docker映像小型安装# load default env as neededeval $(docker-machine env default)# network docker network create vnet# hbase+phoenix startupdocker-compose...
实现sql查询Hbase,Phoenix 基于Hbase给面向业务的开发人员提供了以标准SQL的方式对Hbase进行查询操作,并支持标准SQL中大部分特性:条件运算,分组,分页,等高级查询语法...apache-phoenix-4.14.1-HBase-1.2-bin.tar.gz
"Apache Phoenix 和 HBase: Past, Present and Future of SQL over HBase" Apache Phoenix 是一个基于 HBase 的关系型数据库层,它提供了 SQL 接口来访问 HBase 数据。Phoenix 的出现解决了 HBase 的一些限制,如...
apache的学习笔记
### Apache Phoenix 和 HBase:过去、现在与未来 #### Apache Phoenix 的基本概念 Apache Phoenix 是一个为 HBase 提供的 SQL 层,它允许用户直接通过 SQL 语句查询存储在 HBase 中的数据,而无需编写 Java 代码。...
Apache Phoenix是一个开源的SQL层,它允许用户通过标准的JDBC接口来查询和操作存储在Apache HBase数据库中的数据。Apache Phoenix将SQL查询转换为低级的HBase扫描,从而提高了大数据查询的性能。"apache-phoenix-...
这篇笔记主要围绕Apache FTPServer的使用、配置和相关开发进行讲解。 首先,Apache FTPServer提供了灵活的配置机制,允许管理员通过XML文件定制服务器的行为。这包括设置用户账户、指定工作目录、限制上传下载速度...