在 Azure Data Lake Gen1 中复制 File/Folders
Copy File/Folders in Azure Data Lake Gen1
在 Azure Data Lake Storage Gen1 中,我可以看到文件夹结构,查看文件夹和文件等。
我可以对文件执行操作,例如重命名 them/Deleting 它们等等
Azure 门户和其他方式中缺少的一个操作是创建文件夹或文件副本的选项
我尝试使用 PowerShell 和门户本身来完成
而且这个选项似乎不可用
这有什么原因吗?
是否有任何其他选项可以在 Data-lake 中复制文件夹?
数据湖存储用作 HDInsight 集群的一部分
您可以使用Azure Storage Explorer复制文件和文件夹。
- 打开存储资源管理器。
- 在左窗格中,展开本地和附加。
- 右键单击 Data Lake Store,然后 - 从上下文菜单中 - select 连接到 Data Lake Store....
- 输入 Uri,然后该工具将导航到您刚刚输入的 URL 的位置。
- Select 您要复制的 file/folder。
- 导航到您想要的目的地。
- 点击粘贴。
在数据湖中复制文件和文件夹的其他选项包括:
- Azure Data Factory
- AdlCopy(命令行工具)
我的建议是使用 Azure 数据工厂 (ADF)。如果您想复制大文件或文件夹,这是最快的方法。
根据我的经验,复制 10GB 文件大约需要 1 分 20 秒。
您只需要使用一个数据存储创建简单的管道,它将用作源数据存储和目标数据存储。
使用 Azure 存储资源管理器 (ASE) 复制大文件很慢,1GB 超过 10 分钟。
使用 ASE 复制文件是与大多数文件浏览器 (Copy/Paste) 中最相似的操作,这与需要创建管道的 ADF 复制不同。
我认为创建简单的管道是值得的,特别是因为管道可以重复用于复制另一个文件或文件夹,只需最少的编辑。
我同意上面的评论,你可以使用ADF来复制文件。只是您需要确保它不会增加您的成本。 Microsoft Azure Storage Explorer (MASE) 也是复制 blob 的好选择。
如果你有非常大的文件,那么下面的选项会更快:
AzCopy:
将单个文件从 blob 下载到本地目录:
AzCopy /Source:https://<StorageAccountName>.blob.core.windows.net/<BlobFolderName(if any)> /Dest:C:\ABC /SourceKey:<BlobAccessKey> /Pattern:"<fileName>"
如果您将 Azure Data Lake Store 与 HDInsight 一起使用,另一个非常高效的选项是使用本机 hadoop 文件系统命令,例如 hdfs dfs -cp 或者如果您想要复制一个大量文件 distcp。例如:
hadoop distcp adl://<data_lake_storage_gen1_account>.azuredatalakestore.net:443/sourcefolder adl://<data_lake_storage_gen1_account>.azuredatalakestore.net:443/targetfolder
如果您使用多个存储帐户,这也是一个不错的选择。另见 documentation.
在 Azure Data Lake Storage Gen1 中,我可以看到文件夹结构,查看文件夹和文件等。 我可以对文件执行操作,例如重命名 them/Deleting 它们等等
Azure 门户和其他方式中缺少的一个操作是创建文件夹或文件副本的选项
我尝试使用 PowerShell 和门户本身来完成 而且这个选项似乎不可用
这有什么原因吗?
是否有任何其他选项可以在 Data-lake 中复制文件夹?
数据湖存储用作 HDInsight 集群的一部分
您可以使用Azure Storage Explorer复制文件和文件夹。
- 打开存储资源管理器。
- 在左窗格中,展开本地和附加。
- 右键单击 Data Lake Store,然后 - 从上下文菜单中 - select 连接到 Data Lake Store....
- 输入 Uri,然后该工具将导航到您刚刚输入的 URL 的位置。
- Select 您要复制的 file/folder。
- 导航到您想要的目的地。
- 点击粘贴。
在数据湖中复制文件和文件夹的其他选项包括:
- Azure Data Factory
- AdlCopy(命令行工具)
我的建议是使用 Azure 数据工厂 (ADF)。如果您想复制大文件或文件夹,这是最快的方法。 根据我的经验,复制 10GB 文件大约需要 1 分 20 秒。 您只需要使用一个数据存储创建简单的管道,它将用作源数据存储和目标数据存储。
使用 Azure 存储资源管理器 (ASE) 复制大文件很慢,1GB 超过 10 分钟。 使用 ASE 复制文件是与大多数文件浏览器 (Copy/Paste) 中最相似的操作,这与需要创建管道的 ADF 复制不同。 我认为创建简单的管道是值得的,特别是因为管道可以重复用于复制另一个文件或文件夹,只需最少的编辑。
我同意上面的评论,你可以使用ADF来复制文件。只是您需要确保它不会增加您的成本。 Microsoft Azure Storage Explorer (MASE) 也是复制 blob 的好选择。
如果你有非常大的文件,那么下面的选项会更快:
AzCopy:
将单个文件从 blob 下载到本地目录:
AzCopy /Source:https://<StorageAccountName>.blob.core.windows.net/<BlobFolderName(if any)> /Dest:C:\ABC /SourceKey:<BlobAccessKey> /Pattern:"<fileName>"
如果您将 Azure Data Lake Store 与 HDInsight 一起使用,另一个非常高效的选项是使用本机 hadoop 文件系统命令,例如 hdfs dfs -cp 或者如果您想要复制一个大量文件 distcp。例如:
hadoop distcp adl://<data_lake_storage_gen1_account>.azuredatalakestore.net:443/sourcefolder adl://<data_lake_storage_gen1_account>.azuredatalakestore.net:443/targetfolder
如果您使用多个存储帐户,这也是一个不错的选择。另见 documentation.