我对大数据还很陌生,正在尝试理解各种持久化和检索数据的方法。我知道parquet和hbase都是面向列的存储格式,但是parquet是面向文件的存储,不像hbase那样是数据库。我的问题是:使用 parquet 代替hbase的用例是什么是否有一个可以与hbase一起使用parquet的用例。在执行连接的情况下,parquet的性能会比hbase更好吗(比如说,通过phoenix这样的sql皮肤访问)?
6ioyuze21#
正如您已经说过的,parquet是一个存储,而hbase是存储(hdfs)+查询引擎(api/shell),所以应该在parquet+impala/hive/spark和hbase之间进行有效的比较。以下是关键区别-1) 磁盘空间-与hbase相比,Parquet地板占用的磁盘空间更少。Parquet编码比hbase中的块压缩节省更多的空间。2) 数据接收-Parquet地板中的数据接收比hbase更有效。一个简单的原因可能是第一点。对于Parquet地板,需要在磁盘上写入的数据更少。3) 在key-hbase上查找记录更快,因为这是一个键值存储,而parquet不是。Parquet地板中的索引将在将来的版本中得到支持。4) 过滤器和其他扫描查询-因为parquet存储了更多关于行组中存储的记录的信息,所以它可以在扫描数据时跳过很多记录。这就是原因,它比hbase快。5) 更新记录-hbase提供记录更新,而这在parquet中可能有问题,因为parquet文件需要重新写入。仔细设计模式和分区可能会改进更新,但这与hbase不可比。通过比较以上特性,hbase似乎更适合需要更新并且查询主要涉及键值查找的情况。涉及键范围扫描的查询在hbase中也会有更好的性能。parquet适用于更新很少且查询涉及过滤器、连接和聚合的用例。
1条答案
按热度按时间6ioyuze21#
正如您已经说过的,parquet是一个存储,而hbase是存储(hdfs)+查询引擎(api/shell),所以应该在parquet+impala/hive/spark和hbase之间进行有效的比较。以下是关键区别-
1) 磁盘空间-与hbase相比,Parquet地板占用的磁盘空间更少。Parquet编码比hbase中的块压缩节省更多的空间。
2) 数据接收-Parquet地板中的数据接收比hbase更有效。一个简单的原因可能是第一点。对于Parquet地板,需要在磁盘上写入的数据更少。
3) 在key-hbase上查找记录更快,因为这是一个键值存储,而parquet不是。Parquet地板中的索引将在将来的版本中得到支持。
4) 过滤器和其他扫描查询-因为parquet存储了更多关于行组中存储的记录的信息,所以它可以在扫描数据时跳过很多记录。这就是原因,它比hbase快。
5) 更新记录-hbase提供记录更新,而这在parquet中可能有问题,因为parquet文件需要重新写入。仔细设计模式和分区可能会改进更新,但这与hbase不可比。
通过比较以上特性,hbase似乎更适合需要更新并且查询主要涉及键值查找的情况。涉及键范围扫描的查询在hbase中也会有更好的性能。
parquet适用于更新很少且查询涉及过滤器、连接和聚合的用例。