当前位置: 首页 > 知识库问答 >
问题:

Apache Phoenix vs Hbase原生API

萧越泽
2023-03-14

我使用Apache Phoenix来简化HBASE上的数据检索/更新操作。但我想知道从性能的角度看,哪一个会更好?Phoenix还是使用Hbase原生API的自定义包装器?或者我们有没有其他不影响性能的方法?

共有1个答案

慕容念
2023-03-14

在完美世界中,原生api会工作得更快,但你需要一直在这方面工作,因为为Hbase开发好的api是一个单独的项目。大工程。

您需要对map-reduce和hbase内部流程有很好的理解。但菲尼克斯已经为你做了这一切。例如,在主表上创建和自动维护全局索引的辅助索引。查询在效率更高时自动使用索引,将全表扫描转换为点扫描和范围扫描。多列可以按升序或降序排序顺序进行索引。附加的主表列可以包括在索引中,以形成覆盖索引。有两种类型:可变数据的服务器端索引维护。客户端索引维护针对一次写入、仅追加的用例进行了优化。

在phoenix下工作的团队已经花了很多时间来优化所有这些操作,如果你想用原生API编写。你必须确信你能做得更好。

作为另一种解决方案,您可以使用Hive或SparkSQL。但Hive性能较差,Spark是单独集群,技术难度也较大。

还有一个很好的技术是高性能的SparkonHBasehttp://blog.cloudera.com/blog/2014/12/new-in-cloudera-labs-sparkonHBase/这个更快,但更复杂。并且没有一些好的特性,如索引和Hbase本机功能。所以你需要写它。

 类似资料:
  • IMPORTANT 曝光时遵循看见广告在展示曝光 1. 包含头文件 #import <AdHubSDK/AdHubSDK.h> 2. AdHubNative 的创建和初始化 在需要导入广告的ViewController头文件中导入头文件并声明实例以及声明代理 #import <AdHubSDK/AdHubSDK.h> @interface AdHubNativeViewController (

  • "prototype" 属性在 JavaScript 自身的核心部分中被广泛地应用。所有的内置构造函数都用到了它。 首先,我们将看看原生原型的详细信息,然后学习如何使用它为内建对象添加新功能。 Object.prototype 假如我们输出一个空对象: let obj = {}; alert( obj ); // "[object Object]" ? 生成字符串 "[object Object]

  • 使用php标签 通过 php 标签可以在模板里写任意的PHP语句代码,如: <php> echo 'Hello,ThinkCMF!'; $arr = ['id'=>1]; print_r($arr); </php>

  • 使用php标签 通过 php 标签可以在模板里写任意的PHP语句代码,如: <php> echo 'Hello,ThinkCMF!'; $arr = ['id'=>1]; print_r($arr); </php>

  • Php代码可以和标签在模板文件中混合使用,可以在模板文件里面书写任意的PHP语句代码 ,包括下面两种方式: 使用php标签 例如: {php}echo 'Hello,world!';{/php} 我们建议需要使用PHP代码的时候尽量采用php标签,因为原生的PHP语法可能会被配置禁用而导致解析错误。 使用原生php代码 <?php echo 'Hello,world!'; ?> 注意:php标签或

  • Rust 提供了多种原生类型,包括: 有符号整型(signed integers):i8, i16, i32, i64 和 isize(指针 size) 无符号整型(unsigned integers): u8, u16, u64 和 usize(指针 size) 浮点类型(floating point): f32, f64 char(字符):单独的 Unicode 字符,如 'a','α' 和

  • 我试图设置与React Native在Android上。做了一些研究,看起来我应该使用Interceptor。我找到的一个例子解释了如何做到这一点(链接),但我不确定如何注册拦截器。 因此,为了设置,我使用这个类: 那么剩下的就是注册上面的拦截器,那么它应该在哪里完成呢?可能在? 我在构建应用程序时没有收到任何错误,因此我认为应该很好-只需要让应用程序使用它。 更新:我当前正在尝试在中注册拦截器,

  • 简介 在 DB 中 Swoft 提供了 select、selectOne、update、insert、delete、cursor、statement、affectingStatement、unprepared 方法进行原生操作。 新增数据 $bool = DB::insert('INSERT INTO users (`id`, `name`) VALUES (?, ?)', [1, 'Swoft'