在 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复制文件和文件夹。

  1. 打开存储资源管理器。
  2. 在左窗格中,展开本地和附加。
  3. 右键单击 Data Lake Store,然后 - 从上下文菜单中 - select 连接到 Data Lake Store....
  4. 输入 Uri,然后该工具将导航到您刚刚输入的 URL 的位置。
  5. Select 您要复制的 file/folder。
  6. 导航到您想要的目的地。
  7. 点击粘贴。

在数据湖中复制文件和文件夹的其他选项包括:

我的建议是使用 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.