本文介绍Phoenix与Spark的使用场景,差异对比分析供用户选择。

使用场景

  • ApsaraDB Phoenix是ApsaraDB HBase提供的SQL层,主要为了解决高并发、低延迟、简单查询场景,当然也可以解决一定的分析需求。 必须命中索引 且 命中后 返回的数据较少,如果是join,则join任意一则返回的数据量在10w以下,且另一侧必须命中索引。 为了保障集群稳定性,一些复杂的sql及耗时的sql会被平台拒绝运行。
  • ApsaraDB Spark是ApsaraDB HBase提供的分析引擎,满足 低并发,高延迟,复杂计算 场景。 不管怎么复杂的SQL,都可以完成。 另外 Spark可以支持sql、scala、java、python语言,支持流、OLAP、离线分析、数据清洗、支持多源(HBase、MongoDB、Redis、OSS等)。 (Spark Streaming支持准实时的在线流,不在此讨论访问内)。

差异对比

对比项目 Phoenix Spark
SQL复杂度 简单查询, 必须命中索引且命中后返回的数据较少,如果是join,则join任意一则返回的数据量在10w以下,且另一侧必须命中索引。 为了保障集群稳定性,一些复杂的sql及耗时的sql会被平台拒绝运行。 全部支持执行完成,支持Spark映射到Phoenix,做到Spark在简单SQL查询能到Phoenix同样的性能,不过Spark定位为 分析的场景,与Phoenix 纯TP有本质的区别。
集群 HBase共享一个集群,本质是HBase提供的SQL。 Spark需要单独购买集群。
并发 单机 1w-5w左右。 Spark最高不超过100。
延迟 延迟在ms级别,一些命中较多的数据的sql会到秒。 一般延迟在300ms以上,大部分sql需要秒,分钟,甚至小时。
更新 Phoenix支持。 Spark不支持。
支持业务 在线业务。 离线业务或者准在线业务。
  • 简单查询、 高并发、低延迟、 、在线业务 选择Phoenix 。
  • 复杂计算、低并发、高延迟、离线业务、准在线业务 选择Spark。

案例

通过以下案例我们可以看出,spark主要做流ETL及数据的二次加工,在线的查询通过Phoenix完成。 案例