2016-01-27 28 views
1

我們正在使用Cloudera CDH在Hadoop框架上創建POC。我們想要將多個客戶端的數據加載到Hive表中。將多個客戶端數據加載到Hadoop中的最佳實踐

截止目前,我們在SQL Server上爲每個客戶端分別建立數據庫。 OLTP的這種基礎結構將保持不變。 Hadoop將用於OLAP。 我們有一些主要的維度表,每個客戶端都是一樣的。所有客戶端數據庫都有完全相同的模式這些表具有相同的主鍵值。到目前爲止,這很好,因爲我們爲客戶端分開數據庫。現在我們試圖將多個客戶端數據加載到同一個數據容器(Hive表)中。現在,如果我們通過Sqoop作業將數據直接從多個SQL Server數據庫加載到Hive中,我們將擁有多個具有相同主鍵值的行。我想在Hive表中使用代理鍵,但Hive不支持自動增量,但可以使用UDF實現。

我們不想在運行生產數據時修改SQL Server數據。

a。將多個客戶端數據加載到Hadoop生態系統中的標準/通用方式/解決方案是什麼?

b。 SQL Server數據庫表的主鍵如何輕鬆映射到Hadoop Hive表?

c。我們如何確保一個客戶端永遠無法看到其他客戶端的數據?

感謝

+0

您是否真的期望在Hive中擁有「主鍵」?並在多個維度上運行具有多個連接的R-OLAP查詢?祝你好運... –

+0

*「所有客戶端數據庫都有架構」* - 你的意思是*相同的確切架構*? –

+0

您是否有任何真正的需求來合併來自不同客戶端的數據在同一個數據庫和相同的表中?在那種情況下,你是否考慮在每個事實表中爲每個客戶使用特定的分區?否則,爲什麼不爲每個客戶創建一個專用的事實數據庫以及常見維度的公共數據庫? –

回答

0

@Praveen:使用映射器,以克服對每個客戶數據的Hadoop服務器的停機時間,爲客戶的數據保存在這種情況下,主鍵。 爲每個客戶端和Date分區使用分區的最佳用法。 在開始sqoop導入之前,您必須爲HDFS文件位置實施TDE區域。 * TDE:Trasparent Data Encryption區域,是客戶數據安全區域的最佳實踐。

+0

您能描述一下映射器是什麼嗎?你在談論映射器和減速器嗎?任何關於映射器的指針以及如何使用它們來管理多個客戶端數據。 – 107

+0

如果您在源表中有主鍵,則可以考慮映射器。使用'm'參數傳遞n號。它的映射器。映射器實際上是轉換您的表格數據,這可能基於否。這些數據將根據分佈式塊的行進行拆分,即單個計算。並且在Sqoop中沒有涉及數據導入的自定義縮減器。 Identity Reducer進入畫面以在內部完成他們的默認工作。在sqoop文檔中搜索'-m'參數使用情況。 –

相關問題