共用方式為


將數據從 Azure 記憶體 Blob 複製到 Azure Data Lake Storage Gen1

Data Lake Storage Gen1 提供命令行工具 AdlCopy,從下列來源複製數據:

  • 從 Azure Blob 儲存體到 Data Lake Storage Gen1。 您無法使用 AdlCopy 將資料從 Data Lake Storage Gen1 複製到 Azure 記憶體 Blob。
  • 在兩個 Data Lake Storage Gen1 帳戶之間。

此外,您可以在兩種不同的模式中使用 AdlCopy 工具:

  • 獨立,此工具會使用 Data Lake Storage Gen1 資源來執行工作。
  • 使用 Data Lake Analytics 帳戶,其中指派給 Data Lake Analytics 帳戶的單位會用來執行複製作業。 當您想要以可預測的方式執行複製工作時,可能會想要使用此選項。

先決條件

開始閱讀本文之前,您必須具備下列條件:

AdlCopy 工具的語法

使用下列語法來處理 AdlCopy 工具

AdlCopy /Source <Blob or Data Lake Storage Gen1 source> /Dest <Data Lake Storage Gen1 destination> /SourceKey <Key for Blob account> /Account <Data Lake Analytics account> /Units <Number of Analytics units> /Pattern

語法中的參數如下所述:

選項 說明
來源 指定 Azure 記憶體 Blob 中源資料的位置。 來源可以是 Blob 容器、Blob 或其他 Data Lake Storage Gen1 帳戶。
Dest 指定要將資料複製到的 Data Lake Storage Gen1 目的地。
來源鍵 指定 Azure 記憶體 Blob 來源的記憶體存取金鑰。 當且僅當來源是 Blob 容器或 Blob 時,才需要此項。
帳戶 選擇性。 如果您想要使用 Azure Data Lake Analytics 帳戶來執行複製作業,請使用此選項。 如果您在語法中使用 /Account 選項,但未指定 Data Lake Analytics 帳戶,AdlCopy 會使用預設帳戶來執行作業。 此外,如果您使用此選項,您必須將來源 (Azure 記憶體 Blob) 和目的地 (Azure Data Lake Storage Gen1) 新增為 Data Lake Analytics 帳戶的數據源。
單位 指定將用於複製作業的 Data Lake Analytics 單位數目。 如果您使用 /Account 選項來指定 Data Lake Analytics 帳戶,則這個選項是必要的。
樣式 指定表示要複製的 Blob 或檔案的正則表達式模式。 AdlCopy 使用區分大小寫的比對。 未指定任何模式時的預設模式是複製所有專案。 不支援指定多個檔案模式。

使用 AdlCopy (獨立版本)從 Azure 儲存體 Blob 複製資料

  1. 開啟命令提示字元並瀏覽至安裝 AdlCopy 的目錄,通常是 %HOMEPATH%\Documents\adlcopy

  2. 執行下列命令,將來源容器中的特定 Blob 複製到 Data Lake Storage Gen1 資料夾:

    AdlCopy /source https://<source_account>.blob.core.windows.net/<source_container>/<blob name> /dest swebhdfs://<dest_adlsg1_account>.azuredatalakestore.net/<dest_folder>/ /sourcekey <storage_account_key_for_storage_container>
    

    例如:

    AdlCopy /source https://mystorage.blob.core.windows.net/mycluster/HdiSamples/HdiSamples/WebsiteLogSampleData/SampleLog/909f2b.log /dest swebhdfs://mydatalakestorage.azuredatalakestore.net/mynewfolder/ /sourcekey uJUfvD6cEvhfLoBae2yyQf8t9/BpbWZ4XoYj4kAS5Jf40pZaMNf0q6a8yqTxktwVgRED4vPHeh/50iS9atS5LQ==
    

    備註

    上述語法會指定要複製到 Data Lake Storage Gen1 帳戶中資料夾的檔案。 如果指定的資料夾名稱不存在,AdlCopy 工具會建立資料夾。

    系統會提示您輸入您擁有 Data Lake Storage Gen1 帳戶的 Azure 訂用帳戶認證。 您會看到類似下列的輸出:

    Initializing Copy.
    Copy Started.
    100% data copied.
    Finishing Copy.
    Copy Completed. 1 file copied.
    
  3. 您也可以使用下列命令,將所有 Blob 從一個容器複製到 Data Lake Storage Gen1 帳戶:

    AdlCopy /source https://<source_account>.blob.core.windows.net/<source_container>/ /dest swebhdfs://<dest_adlsg1_account>.azuredatalakestore.net/<dest_folder>/ /sourcekey <storage_account_key_for_storage_container>  
    

    例如:

    AdlCopy /Source https://mystorage.blob.core.windows.net/mycluster/example/data/gutenberg/ /dest adl://mydatalakestorage.azuredatalakestore.net/mynewfolder/ /sourcekey uJUfvD6cEvhfLoBae2yyQf8t9/BpbWZ4XoYj4kAS5Jf40pZaMNf0q6a8yqTxktwVgRED4vPHeh/50iS9atS5LQ==
    

效能考量

如果您要從 Azure Blob 記憶體帳戶複製,可能會在 Blob 記憶體端的複製期間進行節流。 這會降低複製作業的效能。 若要深入瞭解 Azure Blob 記憶體的限制,請參閱 Azure 訂用帳戶 和服務限制的 Azure 記憶體限制

使用 AdlCopy (獨立) 從另一個 Data Lake Storage Gen1 帳戶複製數據

您也可以使用 AdlCopy 在兩個 Data Lake Storage Gen1 帳戶之間複製數據。

  1. 開啟命令提示字元並瀏覽至安裝 AdlCopy 的目錄,通常是 %HOMEPATH%\Documents\adlcopy

  2. 執行下列命令,將特定檔案從一個 Data Lake Storage Gen1 帳戶複製到另一個帳戶。

    AdlCopy /Source adl://<source_adlsg1_account>.azuredatalakestore.net/<path_to_file> /dest adl://<dest_adlsg1_account>.azuredatalakestore.net/<path>/
    

    例如:

    AdlCopy /Source adl://mydatastorage.azuredatalakestore.net/mynewfolder/909f2b.log /dest adl://mynewdatalakestorage.azuredatalakestore.net/mynewfolder/
    

    備註

    上述語法會指定要複製到目的地 Data Lake Storage Gen1 帳戶中資料夾的檔案。 如果指定的資料夾名稱不存在,AdlCopy 工具會建立資料夾。

    系統會提示您輸入您擁有 Data Lake Storage Gen1 帳戶的 Azure 訂用帳戶認證。 您會看到類似下列的輸出:

    Initializing Copy.
    Copy Started.|
    100% data copied.
    Finishing Copy.
    Copy Completed. 1 file copied.
    
  3. 下列命令會將來源 Data Lake Storage Gen1 帳戶中特定資料夾的所有檔案複製到目的地 Data Lake Storage Gen1 帳戶中的資料夾。

    AdlCopy /Source adl://mydatastorage.azuredatalakestore.net/mynewfolder/ /dest adl://mynewdatalakestorage.azuredatalakestore.net/mynewfolder/
    

效能考量

使用 AdlCopy 作為獨立工具時,複本會在共用的 Azure 受控資源上執行。 您可能在此環境中取得的效能取決於系統負載和可用的資源。 此模式最適合用於臨機作的小型傳輸。 使用 AdlCopy 作為獨立工具時,不需要微調任何參數。

使用 AdlCopy (搭配 Data Lake Analytics 帳戶) 來複製數據

您也可以使用 Data Lake Analytics 帳戶來執行 AdlCopy 作業,將數據從 Azure 記憶體 Blob 複製到 Data Lake Storage Gen1。 當要移動的數據範圍是 GB 和 TB,而且您想要更好且可預測的效能輸送量時,您通常會使用此選項。

若要使用 AdlCopy 搭配 Data Lake Analytics 帳戶從 Azure 儲存體 Blob 進行複製,必須將來源 Azure 儲存體 Blob 新增為 Data Lake Analytics 帳戶的資料來源。 如需將其他數據源新增至 Data Lake Analytics 帳戶的指示,請參閱 管理 Data Lake Analytics 帳戶數據源

備註

如果您是使用 Data Lake Analytics 帳戶從 Azure Data Lake Storage Gen1 帳戶複製為來源,則不需要將 Data Lake Storage Gen1 帳戶與 Data Lake Analytics 帳戶產生關聯。 只有當來源是 Azure 記憶體帳戶時,才需要將來源存放區與 Data Lake Analytics 帳戶產生關聯。

執行下列命令,使用 Data Lake Analytics 帳戶從 Azure 記憶體 Blob 複製到 Data Lake Storage Gen1 帳戶:

AdlCopy /source https://<source_account>.blob.core.windows.net/<source_container>/<blob name> /dest swebhdfs://<dest_adlsg1_account>.azuredatalakestore.net/<dest_folder>/ /sourcekey <storage_account_key_for_storage_container> /Account <data_lake_analytics_account> /Units <number_of_data_lake_analytics_units_to_be_used>

例如:

AdlCopy /Source https://mystorage.blob.core.windows.net/mycluster/example/data/gutenberg/ /dest swebhdfs://mydatalakestorage.azuredatalakestore.net/mynewfolder/ /sourcekey uJUfvD6cEvhfLoBae2yyQf8t9/BpbWZ4XoYj4kAS5Jf40pZaMNf0q6a8yqTxktwVgRED4vPHeh/50iS9atS5LQ== /Account mydatalakeanalyticaccount /Units 2

同樣地,執行下列命令,使用 Data Lake Analytics 帳戶,將來源 Data Lake Storage Gen1 帳戶中特定資料夾的所有檔案複製到目的地 Data Lake Storage Gen1 帳戶中的資料夾:

AdlCopy /Source adl://mysourcedatalakestorage.azuredatalakestore.net/mynewfolder/ /dest adl://mydestdatastorage.azuredatalakestore.net/mynewfolder/ /Account mydatalakeanalyticaccount /Units 2

效能考量

在數 TB 範圍內複製數據時,搭配您自己的 Azure Data Lake Analytics 帳戶使用 AdlCopy 可提供更佳且更可預測的效能。 應調整的參數是用於複製作業的 Azure Data Lake Analytics 單位數目。 增加單位數目會增加複製作業的效能。 每個要複製的檔案都可以使用最多一個單位。 指定大於所複製檔案數目的單位不會增加效能。

使用 AdlCopy 使用模式比對來複製數據

在本節中,您將瞭解如何使用 AdlCopy,透過模式比對,將數據從來源複製至目的地 Data Lake Storage Gen1 帳戶(在我們的範例中,我們會使用 Azure 記憶體 Blob)。 例如,您可以使用下列步驟,將所有擴展名 .csv 的檔案從來源 Blob 複製到目的地。

  1. 開啟命令提示字元並瀏覽至安裝 AdlCopy 的目錄,通常是 %HOMEPATH%\Documents\adlcopy

  2. 執行下列命令,將所有具有 *.csv 擴展名的檔案從來源容器的特定 Blob 複製到 Data Lake Storage Gen1 資料夾:

    AdlCopy /source https://<source_account>.blob.core.windows.net/<source_container>/<blob name> /dest swebhdfs://<dest_adlsg1_account>.azuredatalakestore.net/<dest_folder>/ /sourcekey <storage_account_key_for_storage_container> /Pattern *.csv
    

    例如:

    AdlCopy /source https://mystorage.blob.core.windows.net/mycluster/HdiSamples/HdiSamples/FoodInspectionData/ /dest adl://mydatalakestorage.azuredatalakestore.net/mynewfolder/ /sourcekey uJUfvD6cEvhfLoBae2yyQf8t9/BpbWZ4XoYj4kAS5Jf40pZaMNf0q6a8yqTxktwVgRED4vPHeh/50iS9atS5LQ== /Pattern *.csv
    

賬單

  • 如果您使用 AdlCopy 工具作為獨立工具,則如果來源 Azure 記憶體帳戶不在與 Data Lake Storage Gen1 帳戶相同的區域中,則會針對行動數據的輸出成本計費。
  • 如果您使用 AdlCopy 工具搭配 Data Lake Analytics 帳戶,則會套用標準 Data Lake Analytics 計費費率

使用 AdlCopy 的考慮

  • AdlCopy (針對 1.0.5 版),支援從共同擁有數千個檔案和資料夾的來源複製數據。 不過,如果您遇到複製大型數據集的問題,您可以將檔案/資料夾散發到不同的子資料夾,並改用這些子資料夾的路徑作為來源。

使用 AdlCopy 的效能考慮

AdlCopy 支援複製包含數千個檔案和資料夾的數據。 不過,如果您遇到複製大型數據集的問題,您可以將檔案/資料夾散發到較小的子資料夾。 AdlCopy 是專為臨時複製而設計的。 如果您嘗試以週期性方式複製數據,您應該考慮使用 Azure Data Factory 來提供複製作業的完整管理。

發行說明

  • 1.0.13 - 如果您要跨多個 adlcopy 命令將數據複製到相同的 Azure Data Lake Storage Gen1 帳戶,就不需要再重新輸入每次執行的認證。 Adlcopy 現在會將該資訊快取在多次運行中。

後續步驟