将 Hive 用作数据仓库时对我的情况有啥好处?

Posted

技术标签:

【中文标题】将 Hive 用作数据仓库时对我的情况有啥好处?【英文标题】:Any benefit for my case when using Hive as datawarehouse?将 Hive 用作数据仓库时对我的情况有什么好处? 【发布时间】:2017-04-17 06:57:04 【问题描述】:

目前,我正在尝试采用大数据来取代我目前的数据分析平台。我当前的平台非常简单,我的系统从各个上游系统获取大量结构化的 csv 提要文件,然后,我们将它们加载为 java 对象(即在内存中)进行聚合。

我正在寻找使用 Spark 来替换我的 java 对象层以进行聚合过程。

我了解 Spark 支持从 hdfs / 文件系统加载文件。因此,Hive 作为数据仓库似乎不是必须的。但是,我仍然可以先将 csv 文件加载到 Hive,然后使用 Spark 从 Hive 加载数据。

我的问题是,在我的情况下,如果我引入 Hive 层而不是直接将 csv 文件加载到 Spark DF 有什么优点/好处。

谢谢。

【问题讨论】:

你不需要加载任何东西。您可以在 hdfs / 文件系统目录上创建外部表,并使用使用元存储的任何内容(包括 spark)查询它们。 如果您正在以完全加载和增量方式处理数据,那么请使用 Hive 层,因为您必须以表格格式存储昨天的数据并使用今天的数据处理增量。如果您只是在进行提取和转换并将其存储回普通文件系统,那么您只能使用 spark。 【参考方案1】:
    您始终可以使用表格查看和感受数据。 可以使用 HiveQL 执行即席查询/聚合。 通过 Spark 访问该数据时,您无需单独提及数据的架构。

【讨论】:

对于 2,我可以使用 Spark SQL 而不是 HiveQL 是的,您始终可以这样做,但您需要将数据从 csv 加载到数据帧/临时表,然后提交作业以获得结果。这就像一个批处理过程。使用 HiveQL,感觉就像您执行 SQL 查询一样的交互式查询。 对不起,我是新来的火花。我想知道是否可以将所有 csv 数据作为“全局表”加载到数据框中,并让 spark 会话中的每个用户查询它。 您可以这样做,但您真的需要将所有数据加载到内存中吗? Hive 表数据是持久的,所有用户都可以访问表并使用数据,但我不确定是否有一个用户将内存中的数据作为数据帧加载,并且可以被所有其他用户使用,我不喜欢这个想法。

以上是关于将 Hive 用作数据仓库时对我的情况有啥好处?的主要内容,如果未能解决你的问题,请参考以下文章

在 MySQL 中使用数字行 ID 有啥好处?

hive 和hbase 有啥区别

使用 DataRelation 有啥好处?

标记接口有啥好处?

hive 的元数据存储在 derby 和 mysql 中有啥区别

hadoop和hive之间有啥关系?