HBase SQL(Phoenix)与Spark的选择
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完成的
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。
评论