在 Azure Data Lake Gen1 中复制文件/文件夹
Posted
技术标签:
【中文标题】在 Azure Data Lake Gen1 中复制文件/文件夹【英文标题】:Copy File/Folders in Azure Data Lake Gen1 【发布时间】:2018-12-04 10:44:28 【问题描述】:在 Azure Data Lake Storage Gen1 中,我可以看到文件夹结构、查看文件夹和文件等。 我可以对文件执行操作,例如重命名/删除它们等等
Azure 门户和其他方式中缺少的一项操作是创建文件夹或文件副本的选项
我已尝试使用 PowerShell 并使用门户网站本身来实现 而且好像这个选项不可用
这是有原因的吗?
还有其他选项可以复制 Data-lake 中的文件夹吗?
数据湖存储用作 HDInsight 群集的一部分
【问题讨论】:
【参考方案1】:您可以使用Azure Storage Explorer 复制文件和文件夹。
-
打开存储资源管理器。
在左侧窗格中,展开本地和附加。
右键单击 Data Lake Store,然后 - 从上下文菜单中 - 选择连接到 Data Lake Store....
输入 Uri,然后该工具导航到您刚刚输入的 URL 的位置。
选择要复制的文件/文件夹。
导航到您想要的目的地。
单击粘贴。
在数据湖中复制文件和文件夹的其他选项包括:
Azure Data Factory AdlCopy(命令行工具)【讨论】:
当使用存储资源管理器时,这是否意味着数据会扔掉我的电脑或所有流量都在天蓝色云中? 按照上述说明,数据将保留在 Azure 中。【参考方案2】:我的建议是使用 Azure 数据工厂 (ADF)。如果要复制大文件或文件夹,这是最快的方法。 根据我的经验,10GB 文件将在大约 1 分 20 秒内被复制。 您只需要使用一个数据存储创建简单的管道,该数据存储将用作源数据存储和目标数据存储。
使用 Azure 存储资源管理器 (ASE) 复制大文件很慢,1GB 超过 10 分钟。 与需要创建管道的 ADF 复制不同,使用 ASE 复制文件是与大多数文件资源管理器(复制/粘贴)中最相似的操作。 我认为创建简单的管道是值得付出努力的,尤其是因为管道可以重复用于复制其他文件或文件夹,而只需极少的编辑。
【讨论】:
【参考方案3】:我同意上面的评论,您可以使用 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>"
【讨论】:
【参考方案4】:如果您将 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 Gen1 中复制文件/文件夹的主要内容,如果未能解决你的问题,请参考以下文章
使用 Azure 数据工厂 (ADF) 数据流 (DF) 从/向 Azure Data Lake Store gen1 发送和接收数据
有没有办法在写入之前告诉在 Azure Data Lake Storage Gen1 中将 Spark Dataframe 保存为增量表时将创建多少个文件?
无法从 azure databricks 在 azure data Lake 中保存文件
Azure Data PlatformAzure Data Lake——简介