Sql server 将多个客户端数据加载到Hadoop中的最佳实践

Sql server 将多个客户端数据加载到Hadoop中的最佳实践,sql-server,hadoop,hive,sqoop,cloudera-quickstart-vm,Sql Server,Hadoop,Hive,Sqoop,Cloudera Quickstart Vm,我们正在使用Cloudera CDH在Hadoop框架上创建POC。我们希望将多个客户端的数据加载到配置单元表中 到目前为止,SQL Server上的每个客户端都有单独的数据库。对于OLTP,此基础结构将保持不变。Hadoop将用于OLAP。 我们有一些主要维度表,它们对于每个客户机都是相同的。所有客户端数据库都具有完全相同的架构。这些表具有相同的主键值。到目前为止,这还不错,因为我们为客户机提供了单独的数据库。现在,我们正在尝试将多个客户端数据加载到同一个数据容器(配置单元表)中。现在,如果我

我们正在使用Cloudera CDH在Hadoop框架上创建POC。我们希望将多个客户端的数据加载到配置单元表中

到目前为止,SQL Server上的每个客户端都有单独的数据库。对于OLTP,此基础结构将保持不变。Hadoop将用于OLAP。 我们有一些主要维度表,它们对于每个客户机都是相同的。所有客户端数据库都具有完全相同的架构。这些表具有相同的主键值。到目前为止,这还不错,因为我们为客户机提供了单独的数据库。现在,我们正在尝试将多个客户端数据加载到同一个数据容器(配置单元表)中。现在,如果我们通过Sqoop作业将数据从多个SQL Server数据库直接加载到配置单元中,我们将有多个具有相同主键值的行。我想在配置单元表中使用代理键,但配置单元不支持自动递增,但可以通过UDF实现

我们不希望修改SQL Server数据,因为它正在运行生产数据

a。将多个客户端数据加载到Hadoop生态系统的标准/通用方式/解决方案是什么

b。sql server数据库表的主键如何轻松映射到Hadoop配置单元表

c。我们如何确保一个客户端永远无法看到另一个客户端的数据


感谢

@Praveen:使用映射器来克服每个客户端数据到Hadoop服务器的停机时间,因为在这种情况下,客户端数据持有主键。 对于每个客户机和日期分区,最好使用分区。 在开始sqoop导入之前,必须为HDFS文件位置实现TDE区域。
*TDE:Trasparent Data Encryption zone,客户端数据安全区的最佳实践。

您真的希望Hive中有“主键”吗?并在多个维度上使用多个联接运行R-OLAP查询???祝你好运…“所有客户机数据库都有模式”-你是说相同的模式吗?你真的需要将来自不同客户机的数据合并到同一个数据库和同一个表中吗?在这种情况下,您是否考虑在每个事实表中为每个客户端使用特定的分区(S)?否则,为什么不为每个客户机创建一个专用事实数据库,并为公共维度创建一个公共数据库?@samsonscharflichter所有客户机数据库都具有相同的架构。假设两个客户机是C1和C2。对于C1和C2,每个SQL server数据库都有相同的T_用户表和1作为用户的主键。现在,如果我们尝试将此数据存储到配置单元表中,那么可以为两个不同客户端的用户插入1。有没有标准的解决方案或框架可以将sql server键映射到配置单元表?标准的解决方案是由IT架构师完成工作…您能描述一下什么是映射器吗?你是说映射器和还原器吗?关于映射器的任何指针以及如何使用它们来管理多个客户端数据。如果源表中有主键,则可以考虑映射器。使用'm'参数为其传递n个映射器。映射器实际上是对表数据的转换,它可能基于映射器的数量,数据将基于分布式块的行进行分割,parllell计算。Sqoop中没有用于数据导入的自定义缩减器。Identity Reducer将在内部执行其默认工作。在sqoop文档中搜索'-m'参数用法。