搭配使用 Apache Sqoop 與 HDInsight 中的 Hadoop
了解如何在 HDInsight 上使用 Apache Sqoop,以在 HDInsight 叢集與 Azure SQL 資料庫之間匯入和匯出資料。
雖然在處理非結構化資料和半結構化資料時 (例如記錄和檔案),很自然地會選擇 Apache Hadoop,但有時也需要處理儲存在關聯式資料庫中的結構化資料。
Apache Sqoop 工具的設計是要在 Hadoop 叢集與關聯式資料庫之間傳送資料。 此工具可讓您從 SQL Server、MySQL 或 Oracle 等關聯式資料庫管理系統 (RDBMS),將資料匯入至 Hadoop 分散式檔案系統 (HDFS),使用 MapReduce 或 Apache Hive 轉換 Hadoop 中的資料,然後將資料匯回 RDBMS。 在本文中,您會針對關聯式資料庫使用 Azure SQL Database。
重要
本文會設定測試環境以執行資料傳輸。 接著,您會從執行 Sqoop 作業一節的其中一種方法中選擇此環境的資料傳輸方法。
如需 HDInsight 叢集所支援的 Sqoop 版本,請參閱 HDInsight 所提供叢集版本的新功能為何?
了解案例
HDInsight 叢集附有某些範例資料。 您將用到以下兩個範例:
- Apache
Log4j
記錄檔,位於/example/data/sample.log
。 下列記錄擷取自此檔案:
2012-02-03 18:35:34 SampleClass6 [INFO] everything normal for id 577725851
2012-02-03 18:35:34 SampleClass4 [FATAL] system problem at id 1991281254
2012-02-03 18:35:34 SampleClass3 [DEBUG] detail for id 1304807656
...
名為
hivesampletable
的登錄區資料表,會參考位於/hive/warehouse/hivesampletable
的資料檔案。 此資料表包含某些行動裝置資料。欄位 資料類型 clientid string querytime string market string deviceplatform string devicemake string devicemodel string State 字串 國家/地區 string querydwelltime double sessionid
bigint sessionpagevieworder bigint
在本文中,您要使用這兩個資料集測試 Sqoop 匯入和匯出。
設定測試環境
叢集、SQL 資料庫和其他物件是透過 Azure 入口網站使用 Azure Resource Manager 範本建立的。 範本可在 Azure 快速入門範本中找到。 Resource Manager 範本會呼叫 bacpac 套件,以將資料表結構描述部署至 SQL 資料庫。 如果您想要針對 Bacpac 檔案使用私用容器,請在範本中使用下列值︰
"storageKeyType": "Primary",
"storageKey": "<TheAzureStorageAccountKey>",
注意
使用範本或 Azure 入口網站匯入的方式只支援從 Azure Blob 儲存體匯入 BACPAC 檔案。
在 Azure 入口網站中,選取以下影像以開啟 Resource Manager 範本。
輸入下列屬性:
欄位 值 訂用帳戶 從下拉式清單中,選取 Azure 訂用帳戶。 資源群組 從下拉式清單選取資源群組,或建立新的資源群組 Location 從下拉式清單中選取區域。 叢集名稱 輸入 Hadoop 叢集的名稱。 僅使用小寫字母。 叢集登入使用者名稱 保留預先填入的值 admin
。叢集登入密碼 輸入密碼。 SSH 使用者名稱 保留預先填入的值 sshuser
。SSH 密碼 輸入密碼。 Sql Admin 登入 保留預先填入的值 sqluser
。Sql 管理員密碼 輸入密碼。 _artifacts 位置 除非您想要使用位於不同位置的自有 backpac 檔案,否則請使用預設值。 _artifacts 位置 Sas 權杖 保留空白。 Bacpac 檔案名稱 除非您想要使用自有 backpac 檔案,否則請使用預設值。 Location 使用預設值。 邏輯 SQL Server 名稱是
<ClusterName>dbserver
。 資料庫名稱是<ClusterName>db
。 預設儲存體帳戶名稱為e6qhezrh2pdqu
。選取 [我同意上方所述的條款及條件]。
選取 [購買] 。 您會看到新的圖格,標題為「提交範本部署的部署」。 大約需要 20 分鐘的時間來建立叢集和 SQL Database。
執行 Sqoop 工作
HDInsight 可以使用各種方法來執行 Sqoop 作業。 請使用下表決定適合您的方法,然後跟著連結逐項閱讀介紹。
使用此方法 | ...一個 互動式 殼層 | ...批次 處理 | ...從此 用戶端作業系統 |
---|---|---|---|
SSH | ? | ? | Linux、Unix、macOS X 或 Windows |
.NET SDK for Hadoop | ? | Windows (目前) | |
Azure PowerShell | ? | Windows |
限制
- 大量匯出 - 使用 Linux 型 HDInsight,用來將資料匯出至 Microsoft SQL Server 或 SQL Database 的 Sqoop 連接器目前不支援大量插入。
- 批次處理 - 使用以 Linux 為基礎的 HDInsight,執行插入時若使用
-batch
參數,Sqoop 將會執行多個插入,而不是將插入作業批次處理。
下一步
現在,您已了解如何使用 Sqoop。 若要深入了解,請參閱:
- 搭配 HDInsight 使用 Apache Hive
- 將資料上傳至 HDInsight:尋找可將資料上傳至 HDInsight/Azure Blob 儲存體的其他方法。
- 使用 Apache Sqoop 在 Apache Hadoop on HDInsight 與 SQL Database 之間匯入及匯出資料