【发布时间】:2016-01-28 19:08:26
【问题描述】:
我们正在使用 Cloudera CDH 在 Hadoop 框架上创建 POC。我们想将多个客户端的数据加载到 Hive 表中。
到目前为止,我们在 SQL Server 上为每个客户端都有单独的数据库。对于 OLTP,此基础架构将保持不变。 Hadoop 将用于 OLAP。 我们有一些对每个客户都相同的主要维度表。所有客户端数据库都具有完全相同的架构。这些表具有相同的主键值。到目前为止,这很好,因为我们为客户提供了单独的数据库。现在我们正在尝试将多个客户端数据加载到同一个数据容器(Hive 表)中。现在,如果我们通过 Sqoop 作业将数据从多个 SQL Server 数据库直接加载到 Hive 中,我们将拥有多个具有相同主键值的行。我正在考虑在 Hive 表中使用代理键,但 Hive 不支持自动增量,但可以使用 UDF 实现。
我们不想修改 SQL Server 数据,因为它正在运行生产数据。
一个。将多个客户端数据加载到 Hadoop 生态系统的标准/通用方式/解决方案是什么?
b. sql server 数据库表的主键如何轻松映射到 Hadoop Hive 表?
c。我们如何确保一个客户端永远无法看到其他客户端的数据?
谢谢
【问题讨论】:
-
你真的希望在 Hive 中有一个“主键”吗?并在多个维度上运行具有多个连接的 R-OLAP 查询???祝你好运...
-
“所有客户端数据库都有架构” - 你的意思是完全相同的架构吗?
-
你有什么真正的要求将来自不同客户端的数据合并到同一个数据库和同一个表中吗?在那种情况下,您是否考虑过为每个事实表中的每个客户端使用特定的分区?否则,为什么不为每个客户创建一个专用的 Fact DB 加上一个用于公共维度的公共 DB?
-
@SamsonScharfrichter 所有客户端数据库都具有相同的架构。假设两个客户端是 C1 和 C2。每个 SQL Server 数据库都有相同的 T_user 表和 1 作为 C1 和 C2 的用户的主键。现在,如果我们尝试将此数据存储到 Hive 表中,那么我们可以为两个不同客户端的用户插入 1。是否有任何标准解决方案或框架可以将 sql server 键映射到 hive 表?
-
标准解决方案是做 IT 架构师的工作...
标签: sql-server hadoop hive sqoop cloudera-quickstart-vm