处理大数据中的复杂连接
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 为目标,其中电子邮件只是字段之一。
OLTP 系统已规范化,包含数百个 table。我们在设计报表时可能需要加入很多table。例如,我需要加入四五个 table 才能获得客户的电子邮件地址。 (感谢我们使用的电信模型)
我正在尝试在 hdfs(或者可能是 s3)中设计一个数据仓库。
为了将电子邮件地址和自定义 ID 写入配置单元上的 table: 我需要使用 sqoop import 命令将五个 table 中的全部数据提取到 hdfs 中。然后我需要在配置单元中加入这些 tables。所以这种获取邮件信息的过程可能会持续很长时间。
或者我可以使用sqoop查询命令导入数据。这看起来更容易,并且在 hdfs 中会保持更少的 space 但查询执行时间在这种情况下至关重要。
在类似情况下你会怎么选择?您有其他方法吗?
谢谢
您应该考虑对架构进行反规范化。例如。使用 sqoop 在配置单元中导入您可能需要的所有 tables,准备一个 ETL 过程,将其非规范化为星型模式,并使用非规范化的新模式进行查询。
例如您应该以 "customers" table 为目标,其中电子邮件只是字段之一。