Phoenix 是一个开源的 HBASE SQL 层。它不仅可以使用标准的 JDBC API 替代 HBASE client API 创建表,插入和查询 HBASE,也支持二级索引、事物以及多种 SQL 层优化。
因为使用 hbase 的 api 查询,代码开发起来比较麻烦,而 Phoenix 使支持 SQL 查询的
Phoenix 可以构建盐表,能够解决热点问题,从而避免一个 rs 频繁被请求,其他的 rs 很闲的
Phoenix 支持二级索引,因为可以构建盐表,索引也是分区的.
Phoenix 是 hbase 的 SQL 层,主要为了解决高并发、低延迟、简单查询场景,当然也可以解决一定的分析需求。 必须命中索引 且 命中后 返回的数据较少, 此时 Phoenix 是比较适合的,但是如果有复杂的业务查询和大量的聚合操作,就会对hbase 的稳定性造成一定的影响,这个时候 Phoenix 是不适合的.
spark 提供的分析引擎满足 低并发,高延迟,复杂计算 场景。 不管怎么复杂的 SQL,都可以完成。 另外 Spark 可以支持sql、scala、java、python 多种语言,支持流、OLAP、离线分析、数据清洗、支持多数据源,复杂的业务场景下,非常适合.
所以将 phoenix 做存储,spark 做计算层。这样就结合了 phoenix 查询速度快和 spark 计算速度快的优点。是一个非常好的选择,这样也使两者支持更多的场景
下面介绍一个 spark 读取 Phoenix 中的数据,然后进行业务逻