【问题标题】:Storing relational data in hadoop for analysis purpose将关系数据存储在 hadoop 中以进行分析
【发布时间】:2019-06-21 17:00:56
【问题描述】:

我已经阅读了很多有关 hadoop 集群以及将我们的关系数据存储到 hadoop 中的不同选项的信息,因此我们可以为我们的关系和非关系数据建立一个集中的数据集群以进行分析。 但随着我阅读的更多,它变得更加复杂。 我不知道将我的关系数据转换为 hadoop 的最佳方法是什么。

  • 将它们存储在 HBase 的大表中(我认为将所有表连接起来会很丑)
  • 将它们存储在 Hive 的不同表中?
  • 还有其他选择吗?

我在想我可以将每个表存储在 Hive 中,然后使用 SPARK SQL 执行查询。不知道是不是最好的选择? 任何人都可以帮我一点吗?

【问题讨论】:

  • Hive 有自己的查询语言;你可以使用它,一切都应该非常简单。
  • @BenWatson 是的,但是由于所有磁盘处理,它非常慢。这就是为什么我想使用 Spark 让它更快。
  • 无论您使用什么解决方案,都必须在某个时候将数据加载到内存中。想要最大限度地减少这种情况完全取决于您对数据运行的查询类型,并且对于 SO 的范围来说可能太大了。
  • 是的,但是 Hive 将中间结果存储在磁盘中,这使得它具有容错性并且速度也很慢。
  • 这就是为什么我说不知道具体用例就不可能回答你的问题。

标签: apache-spark hadoop hive hbase relational-database


【解决方案1】:

如果您打算将 hadoop 用于 OLAP,那么您遇到了正确的选择。现在,数据湖比数据仓库在企业中更受欢迎,可以将数据集中在数据分析的位置。

要更具体地回答有关转换关系数据的问题,您可以使用以下工具,

  1. Hive:最流行的 Hadoop 数据仓库工具,它类似于 SQL 类型的分析语言。尽管查询在分析数据时会有一些延迟,但这是因为数据处理在磁盘上。
  2. HBase:它是对Hadoop中数据的随机实时访问,其工作原理是键值对数据。并且无法进行连接操作。

    1. SparkSQL:如今,SparkSQL 在数据处理方面更受欢迎,因为所有数据都在 hadoop 集群的内存中处理,这就是为什么它比 hive 更快,查询延迟只需几秒。

还有其他工具可以分析半结构化、非结构化和流数据 Hadoop。这个用例在未来很快就会出现。因此,从更可持续的解决方案的角度来看,Hadoop 是更好的解决方案。

【讨论】:

  • 据我了解 SparkSQL 是一个查询引擎,但您提到它是一种存储数据的解决方案。我错过了什么吗?
  • Spark 是仅在 Hadoop 中的数据处理引擎,每个数据都驻留在 HDFS 上。
  • 我还有一个问题,我所有的关系数据都在CSV文件中,我可以将它们存储在hdfs中并在hive中创建外部或内部表。内部或外部表是否有任何优势?除了删除外部表,我们不会丢失数据。
  • 请在下面找到列表,1. ARCHIVE/UNARCHIVE/TRUNCATE/MERGE/CONCATENATE 仅适用于托管表 2. DROP 删除托管表的数据,而仅删除外部表的元数据 3. ACID /Transactional 仅适用于托管表 4. 查询结果缓存仅适用于托管表 5. 仅允许在外部表上使用 RELY 约束 6. 某些物化视图功能仅适用于托管表
  • 我的回答有用吗?
猜你喜欢
  • 1970-01-01
  • 2021-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多