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 帐户的单元用于执行复制操作。 在希望以可预测的方式执行复制任务时,可能需要使用此选项。
先决条件
在开始本文之前,必须具备以下各项:
- Azure 订阅。 请参阅获取 Azure 免费试用版。
- 包含某些数据的 Azure 存储 Blob 容器。
- Data Lake Storage Gen1 帐户。 有关如何创建帐户的说明,请参阅 Azure Data Lake Storage Gen1 入门
- Data Lake Analytics 帐户 (可选) - 有关如何创建 Data Lake Analytics 帐户的说明,请参阅 Azure Data Lake Analytics 入门 。
- AdlCopy 工具。 安装 AdlCopy 工具。
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
语法中的参数如下所述:
选项 | DESCRIPTION |
---|---|
来源 | 指定 Azure 存储 Blob 中源数据的位置。 源可以是 Blob 容器、Blob 或其他 Data Lake Storage Gen1 帐户。 |
Dest | 指定要复制到的 Data Lake Storage Gen1 目标位置。 |
SourceKey | 指定 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 中复制数据
打开命令提示符并导航到安装 AdlCopy 的目录,通常
%HOMEPATH%\Documents\adlcopy
。运行以下命令,将特定 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 工具将创建一个文件夹。
您将会收到提示,要求输入您的 Azure 订阅(即包含 Data Lake Storage Gen1 帐户的订阅)的凭据。 你将看到如下所示的输出:
Initializing Copy. Copy Started. 100% data copied. Finishing Copy. Copy Completed. 1 file copied.
还可以使用以下命令将所有 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 帐户之间复制数据。
打开命令提示符并导航到安装 AdlCopy 的目录,通常
%HOMEPATH%\Documents\adlcopy
。运行以下命令,将特定文件从一个 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.
以下命令将所有文件从源 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。 当要移动的数据在千兆字节和 TB 范围内时,通常使用此选项,并且需要更好的可预测性能吞吐量。
若要使用 AdlCopy 将 Azure 存储 Blob 的数据复制到 Data Lake Analytics 帐户,必须先将 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 范围内复制数据时,将 AdlCopy 与自己的 Azure Data Lake Analytics 帐户配合使用可提供更好、更可预测的性能。 应调整的参数是用于复制任务的 Azure 数据湖分析单元数。 增加任务单元的数量会提高复制作业的效率。 要复制的每个文件最多可以使用一个单位。 指定比正在复制的文件数更多的单位不会提高性能。
使用 AdlCopy 通过模式匹配复制数据
在本部分中,你将了解如何使用 AdlCopy 将数据从源(下面的示例中,我们使用 Azure 存储 Blob)复制到目标 Data Lake Storage Gen1 帐户(使用模式匹配)。 例如,可以使用以下步骤将所有扩展名 .csv 扩展名的文件从源 blob 复制到目标。
打开命令提示符并导航到安装 AdlCopy 的目录,通常
%HOMEPATH%\Documents\adlcopy
。运行以下命令,将具有 *.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 现在将在多个运行中缓存该信息。