從 Hive 查詢匯入
重要
Machine Learning 工作室 (傳統) 的支援將於 2024 年 8 月 31 日結束。 建議您在該日期之前轉換成 Azure Machine Learning。
自 2021 年 12 月 1 日起,您將無法建立新的 Machine Learning 工作室 (傳統) 資源。 在 2024 年 8 月 31 日之前,您可以繼續使用現有的 Machine Learning 工作室 (傳統) 資源。
ML 工作室 (傳統) 文件即將淘汰,未來將不再更新。
本文說明如何使用 機器學習 Studio 中的匯入資料模組 (傳統) ,從 Hadoop 叢集和 HDInsight 分散式儲存體取得資料。
從 Hive 匯入資料特別適用于載入大型資料集,或者如果您想要在將資料載入機器學習實驗之前,先使用MapReduce作業預先處理資料。
重要
自 2018 年 7 月 31 日起,Microsoft Azure HDInsight 3.3 版是 Windows 上最後一版的 HDInsight。 如果您在 Windows 3.3 或更早版本上有任何 HDInsight 叢集,則必須移轉至 Linux 上的 HDInsight (HDInsight 3.5 版或更新版本) 。 如需已淘汰之 HDInsight 版本的詳細資訊,請參閱 已淘汰的版本 一節。 機器學習 Studio (傳統) 在特定案例中支援 Linux 上的 HDInsight。
Linux 上的 HDInsight 支援
機器學習 Studio (傳統) 在下列案例中支援 Linux 上的 HDInsight:
- Hadoop 2.7.3 (HDI 3.6) Blob 預設為 ADLS 次要
- Spark 2.1.0 (HDI 3.6) Blob 預設為 ADLS 次要
- Spark 2.2.0 (HDI 3.6) Blob 作為預設 ADLS 次要
- Spark 2.3.0 (HDI 3.6) Blob 作為預設 ADLS 次要
已知問題
在 Linux 上搭配 HDInsight 使用 Hive 查詢的匯入資料模組有數個已知問題:
- 不支援Enterprise安全性套件
- /tmp/hive 無法寫入
如何從 Hive 查詢匯入資料
使用精靈
此模組提供新的精靈,可協助您選擇儲存體選項、從現有的訂用帳戶和帳戶中選取,以及快速設定所有選項。
將匯入 資料 模組新增至實驗。 您可以在 [ 資料輸入和輸出 ] 類別中找到 Studio (傳統) 模組。
按一下 [啟動匯入資料精靈 ],並遵循提示。
設定完成時,若要實際將資料複製到實驗中,請以滑鼠右鍵按一下模組,然後選取 [ 執行選取]。
如果您需要編輯現有的資料連線,精靈會載入所有先前的設定詳細資料,因此您不需要從頭開始
手動設定匯入屬性
下列步驟說明如何手動設定匯入來源。
將匯入 資料 模組新增至實驗。 您可以在 [ 資料輸入和輸出 ] 類別中找到 Studio (傳統) 模組。
針對 [資料來源],選取 [ Hive 查詢]。
在 [ Hive 資料庫查詢 ] 文字方塊中,指定您想要使用 HiveQL 讀取的資料。
HiveQL 是類似SQL的查詢語言,也可以用來匯總資料並執行資料篩選,再將資料新增至 機器學習 Studio (傳統) 。 不過,Hive 查詢必須以表格式格式傳回資料。
例如,此語句是有效的 Hive 查詢:
SELECT <column list> FROM table WHERE <expression>;
按一下 [HCatalog 伺服器 URI] 文字方塊,然後輸入叢集的完整名稱。
例如,如果您建立了名稱為 mycluster001 的叢集,請使用下列格式:
https://mycluster001.azurehdinsight.net
按一下 [Hadoop 使用者帳戶名稱 ] 文字方塊,並貼上您在布建叢集時使用的 Hadoop 使用者帳戶。
按一下 [Hadoop 使用者帳戶密碼 ] 文字方塊,然後輸入您在布建叢集時所使用的認證。
如需 Hadoop 叢集命名和驗證的詳細資訊,請參閱 在 HDInsight 中布建 Hadoop 叢集。
針對 [輸出資料的位置],選取指出資料儲存位置的選項。 如果資料位於 Hadoop 分散式檔案系統中, (HDFS) ,則必須透過您剛才輸入的相同帳戶和密碼來存取。 如果資料位於 Azure 中,請提供儲存體帳戶的位置和認證。
HDFS:輸入或貼上 HDFS 伺服器 URI。 請務必使用不含 前置詞的
HTTPS://
HDInsight 叢集名稱。Azure:針對 Azure 儲存體帳戶名稱,輸入 Azure 帳戶的名稱。 例如,如果儲存體帳戶的完整 URL 是
https://myshared.blob.core.windows.net
,您會輸入myshared
。Azure 儲存體金鑰:複製並貼上用來存取儲存體帳戶的金鑰。
針對 Azure 容器名稱,指定叢集 的預設容器 。 如需瞭解要使用的容器的說明,請參閱提示一節。
如果您不預期資料變更太多,或您想要避免每次執行實驗時重載資料,請選取 [ 使用快取的結果 選項]。
選取此選項時,如果模組參數沒有其他變更,實驗會在第一次執行模組時載入資料,之後再使用快取的資料集版本。
如果您想要在實驗資料集的每個反復專案上重新載入資料集,請取消選取 [使用快取的結果] 選項。 當 匯入資料的參數變更時,也會重新載入結果。
執行實驗。
結果
完成時,按一下輸出資料集,然後選取 [ 視覺化 ] 以查看資料是否已成功匯入。
如果您收到錯誤,請檢查您的資料是否有遺漏值、其他空白資料行或不相容的資料類型。
範例
如需如何在機器學習實驗中設定 HDInsight 叢集和使用 Hive 查詢的範例,請參閱下列資源:
本文提供如何使用 Hive 建立叢集、上傳資料,以及從 Studio (傳統) 呼叫資料的詳細逐步解說 :使用 HDInsight Hadoop 叢集。
MVP Vesa Tikkanen 的此部落格說明從 Linux 上的 HD 叢集讀取非常大型檔案 (分散式查詢) 時的一些問題和因應措施:從 Azure 讀取 Linux HDInsight Hive ML
雖然 Hive 為許多種類的資料清理和前置處理提供絕佳的功能,但在匯入之後,您可能會發現這些工具適用于準備資料以建立模型:
使用 [編輯中繼資料 ] 和其他模組來變更資料行名稱、指定哪些資料行包含標籤和功能,以及指定資料行資料類型。 如需範例,請參閱 資料集處理。
使用 Python 處理後文字資料、移除標點符號、標幟語音部分等等。 如需範例,請參閱 文字分類。
將來自不同來源的多個資料表合併成單一定型資料的資料表。 如需範例,請參閱 預測性維護。
技術說明
本節包含實作詳細資料、提示和常見問題集的解答。
如何判斷預設容器
如果您藉由接受所有預設值來建立叢集,則會在建立叢集時建立與叢集同名的容器。 該容器是叢集的預設容器。 不過,如果您在建立叢集時選擇 [自訂 CREATE] 選項,則會提供兩個選項來選取預設容器。 第一個選項是選取現有的容器。 當您這樣做時,該容器會變成叢集的預設儲存體容器。 第二個選項是 建立預設容器。 當您使用此選項時,預設容器的名稱與叢集相同。
如何從 Hive 查詢呼叫 Python 腳本
您可以使用 匯入資料 模組來執行 Hive 查詢,以呼叫 Python UDF 來處理記錄。
如需詳細資訊,請參閱 在 HDInsight 中搭配 Hive 和 Pig 使用 Python。
使用 Hive 預先處理資料時避免記憶體不足問題
使用 Hive 查詢從大型資料來源擷取記錄時,Hadoop 叢集的預設組態有時會過於受限,而難以支援 MapReduce 工作的執行。 例如,在這些 HDInsight 版本資訊 中,預設設定會定義為四節點叢集。
如果MapReduce作業的需求超過可用的容量,Hive 查詢可能會傳回記憶體不足錯誤訊息,這會導致匯入資料作業失敗。 如果發生這種情況,您可以在匯入 資料 模組中變更 Hive 查詢的預設記憶體配置,如下所示:
在此範例中,會使用命令 set mapreduce.map.memory.mb
和 set mapreduce.reduce.memory.mb
將記憶體數量增加到叢集所允許的最大記憶體數量。
常見問題
如何避免不必要地重新載入相同的資料
如果您的來源資料變更,您可以重新整理資料集,並重新執行匯入 資料來新增資料。 不過,如果您不想每次執行實驗時從來源重新讀取,請選取 [ 使用快取的結果] 選項為 TRUE。 當此選項設定為 TRUE 時,模組會檢查實驗是否先前使用相同的來源和相同的輸入選項執行,如果找到先前的執行,則會使用快取中的資料,而不是從來源重新載入資料。
我可以從來源讀取資料時篩選資料嗎
匯入 資料 模組本身不支援在讀取資料時進行篩選。
若要在將資料讀取至 機器學習 Studio (傳統) 之前先篩選資料,請使用 Hive 查詢或MapReduce作業來匯總和轉換資料。
在將資料載入至 機器學習 Studio (傳統) 之後,也有多個篩選資料的選項:
- 使用自訂 R 腳本只取得您想要的資料。
- 使用 分割資料 模組搭配相對運算式或正則運算式來隔離您想要的資料,然後將它儲存為資料集。
注意
如果您發現您所載入的資料超過您的需要,您可以讀取新的資料集,並使用與舊有、較大的資料相同的名稱加以儲存,以覆寫快取資料集。
模組參數
名稱 | 範圍 | 類型 | 預設 | 描述 |
---|---|---|---|---|
資料來源 | List | 資料來源或接收 | Azure Blob 儲存體 | 資料來源可以是 HTTP、FTP、匿名 HTTPS 或 FTPS、Azure BLOB 儲存體中的檔案、Azure 資料表、Azure SQL Database、內部部署SQL Server資料庫、Hive 資料表或 OData 端點。 |
Hive 資料庫查詢 | 任意 | StreamReader | HQL 查詢 | |
HCatalog 伺服器 URI | 任意 | String | Templeton 端點 | |
Hadoop 使用者帳戶名稱 | 任意 | String | Hadoop HDFS/HDInsight 使用者名稱 | |
Hadoop 使用者帳戶密碼 | 任意 | SecureString | Hadoop HDFS/HDInsight 密碼 | |
輸出資料的位置 | 任意 | DataLocation | HDFS | 針對 outputDir 指定 HDFS 或 Azure |
HDFS 伺服器 URI | 任意 | String | HDFS rest 端點 | |
Azure 儲存體帳戶名稱 | 任意 | String | Azure 儲存體帳戶名稱 | |
Azure 儲存體金鑰 | 任意 | SecureString | Azure 儲存體金鑰 | |
Azure 容器名稱 | 任意 | String | Azure 容器名稱 | |
資料內容類型 | 清單 (子集) | URL 內容 | OData | 資料格式類型 |
來源 URL | 任意 | String | Power Query資料來源的 URL | |
使用快取的結果 | TRUE/FALSE | Boolean | FALSE | description |
輸出
名稱 | 類型 | 描述 |
---|---|---|
結果資料集 | 資料表 | 含下載資料的資料集 |
例外狀況
例外狀況 | 描述 |
---|---|
錯誤 0027 | 當兩個物件的大小必須相同但卻不同時,就會發生例外狀況。 |
錯誤 0003 | 如果一或多個輸入是 Null 或空白,就會發生例外狀況。 |
錯誤 0029 | 傳遞無效的 URI 時,就會發生例外狀況。 |
錯誤 0030 | 當無法下載檔案時,就會發生例外狀況。 |
錯誤 0002 | 如果有一或多個參數無法剖析或從指定的類型轉換成目標方法所需的類型,就會發生例外狀況。 |
錯誤 0009 | 如果指定的 Azure 儲存體帳戶名稱或容器名稱不正確,就會發生例外狀況。 |
錯誤 0048 | 無法開啟檔案時,就會發生例外狀況。 |
錯誤 0015 | 如果資料庫連線失敗,就會發生例外狀況。 |
錯誤 0046 | 無法在指定的路徑上建立目錄時,就會發生例外狀況。 |
錯誤 0049 | 無法剖析檔案時,就會發生例外狀況。 |
如需 Studio (傳統) 模組特有的錯誤清單,請參閱錯誤碼機器學習。
如需 API 例外狀況的清單,請參閱機器學習 REST API 錯誤碼。
另請參閱
匯入資料
匯出資料
透過 HTTP 從 Web URL 匯入
從 Azure SQL Database 匯入
從 Azure 資料表匯入
從Azure Blob 儲存體匯入
從資料摘要提供者匯入
從內部部署SQL Server資料庫匯入