在 hdfs 中存储关系数据的最佳方式

Best way to store relational data in hdfs

最近我读了很多关于 hadoop 的书,我可以说我理解它的一般概念,但仍然(至少)有一块拼图我无法理解.在 hdfs 中存储关系数据的最佳方式是什么。

首先,我知道 hadoop 的存在无法替代为我的应用程序提供服务的传统良好 sql 数据库。我在这里面临的问题是我想使用 hadoop 将来自多个系统的数据聚合到 hdfs 中。然后我可以将来自多个系统的数据交叉引用在一起,然后生成我的报告工具等使用的新数据集。

好的,那么,我应该使用一个 table 将 tables 数据导入一个文件,还是应该导入连接 tables.[=14= 的查询结果]

例如:

SQL tables:

Person: PersonID Name Birthday Sex

Company:

CompanyID
Name
Address

PersonCompany

PersonID
CompanyID

我应该按原样导入所有 3 个 table 还是应该导入查询结果 returns 为什么这个人在哪个公司工作。

请与我分享您的想法!

我认为您应该考虑在 HDFS 之上使用 HBase 来获得一些数据库功能:

http://hbase.apache.org/

通常要在 hadoop 中构建数据仓库,您必须摄取所有表。在您的示例中,您需要在 HDFS 中拥有所有 3 个表,然后执行 ETL/aggregation 例如 Joiners_weekly 可以有一个具有

的 etl

select * 来自 PersonCompany pc 在 pc.personid=p.personid 加入 Person p 在 pc.companyid=c.companyid 加入 Company c。

这可以是一个可以从 hadoop 生成的报告。希望这可以帮助。