我曾经认为 Hive 只是一种类似于 SQL 的编程语言,用于使编写 MapReduce 类型的作业更容易(即,类似于 SQL 的 Pig/Pig Latin 版本)。不过,我现在正在阅读更多关于它的内容,显然它实际上是一个完整的数据仓库基础设施。
这些用例之一是否更常见?也就是说,它主要用于它提供的数据仓库基础设施,还是更多地用于类似 SQL 的接口?还是两个方面的效用和重要性相同?
(我问是因为我想弄清楚我应该专注于学习 Hive 的哪些部分。)
这也正是我过去的想法。现在我已经有了大约一个月的 Hive 使用经验,我现在发现它是一个很棒的 ETL 工具……对于以后的数据仓库来说。
Hive 无法与 MDX 进行比较。Hive 非常基于行,不允许 SQL 或 MDX(多维表达式语言,在 BI 工具中很常见)擅长的许多复杂操作。
我们使用 Hive 作为 ETL 工具来集成我们不同的平面文件数据源并减少我们必须上传到基于 SQL 的数据仓库的数据量。
如果该数据只有几周的半衰期,那么我们可以将数据库的大小保持在相对可管理的范围内,以后总是能够从 Hive 重现报告。
Hive 不支持更新。在我们的实现中,我们使用直接 MapReduce 作业来填充数据仓库,并使用 Hive 进行导出以进行进一步处理或导入到关系数据仓库中。我们还将它用作 BI 报告工具的中介。