处理大数据中的复杂连接

Handling complex joins in big data

OLTP 系统已规范化,包含数百个 table。我们在设计报表时可能需要加入很多table。例如,我需要加入四五个 table 才能获得客户的电子邮件地址。 (感谢我们使用的电信模型)

我正在尝试在 hdfs(或者可能是 s3)中设计一个数据仓库。

为了将电子邮件地址和自定义 ID 写入配置单元上的 table: 我需要使用 sqoop import 命令将五个 table 中的全部数据提取到 hdfs 中。然后我需要在配置单元中加入这些 tables。所以这种获取邮件信息的过程可能会持续很长时间。

或者我可以使用sqoop查询命令导入数据。这看起来更容易,并且在 hdfs 中会保持更少的 space 但查询执行时间在这种情况下至关重要。

在类似情况下你会怎么选择?您有其他方法吗?

谢谢

您应该考虑对架构进行反规范化。例如。使用 sqoop 在配置单元中导入您可能需要的所有 tables,准备一个 ETL 过程,将其非规范化为星型模式,并使用非规范化的新模式进行查询。

例如您应该以 "customers" table 为目标,其中电子邮件只是字段之一。