有人知道在使用 impala 时如何选择数据模型吗?

Posted

技术标签:

【中文标题】有人知道在使用 impala 时如何选择数据模型吗?【英文标题】:Does anybody know how to choose the data model when using impala? 【发布时间】:2015-01-18 15:31:53 【问题描述】:

有几种文件格式,如 impala 内部表或外部表格式,如 csv、parquet、hbase。现在我们需要保证平均插入速率为 50K 行/秒,每行大约 1K。而且,一些数据也可以不定期更新。我们还需要对这些数据做一些聚合操作。

我认为在将 impala 与外部表一起使用时,Hbase 不是大型聚合计算的好选择。有人有什么建议吗?

谢谢陈。

【问题讨论】:

【参考方案1】:

我从未使用过 Impala,但我可以根据我使用 Hive 的经验告诉你一些事情。

如果您有良好的键设计和适当的架构,HBase 会更快,因为就像 Hive 一样,Impala 会将您的 WHERE 转换为扫描过滤器,这在很大程度上取决于您运行的查询类型。有多种技术可以减少作业读取的数据量:从简单的技术,如提供开始和停止行键、时间范围、仅读取某些族/列、已经提到的过滤器......到更复杂的解决方案,如执行实时聚合在您的数据 (*) 上并将它们保存为计数器。

关于您的插入率,它可以通过适当的基础架构完美处理(更好地使用 HBase 原生 JAVA API),此外,您可以缓冲写入以获得更好的性能。

*不确定 Impala 是否支持 HBase 计数器。

【讨论】:

这是非常完美的建议。我们将尝试根据我们的场景重新设计密钥。顺便说一句,我们已经尝试了缓冲区,它可以显着提高插入性能。非常感谢您的帮助! 很高兴为您提供帮助,在规划您的键时,请记住顺序行键可能会导致区域热点问题(请查看:blog.sematext.com/2012/04/09/…)。如果它解决了您的问题,请考虑接受答案:) 顺便说一句,本周末刚刚运行了一些 HIVE 查询(全表扫描),从 HBase 读取性能为每个区域服务器 +500000 请求/秒,扫描器缓存大小为 50k。在 Impala 中,可以使用“HBASE_CACHING”查询选项设置缓存大小。

以上是关于有人知道在使用 impala 时如何选择数据模型吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何在pyspark中连接到黑斑羚?

有人可以解释为啥我们在将数据拆分为训练和测试时使用 random_state 吗? [复制]

如何在从数据库中选择时使用选择值进行 c# 插入

在 hql 脚本中,我们使用 "!sh echo ---new line---" 来表示相同的 .想知道在 impala 中打印 impala 脚本中任何行的替代方法吗?

在编码时,我该如何决定选择一种收藏类型? [关闭]

通过 Impala 的 Parquet 压缩类型