在Azure Data Lake Gen1中复制文件/文件夹

时间:2018-12-04 10:44:28

标签: azure azure-data-lake hdinsight

在Azure Data Lake Storage Gen1中,我可以看到文件夹结构,请参阅文件夹和文件等。 我可以对文件执行操作,例如重命名文件/删除文件等等

Azure门户中缺少的一项操作和其他方式是创建文件夹或文件副本的选项

我尝试使用PowerShell和门户网站本身来完成此操作 似乎该选项不可用

有什么理由吗?

还有其他选项可以在Data-lake中复制文件夹吗?

数据湖存储用作HDInsight群集的一部分

4 个答案:

答案 0 :(得分:2)

您可以使用Azure Storage Explorer复制文件和文件夹。

  1. 打开Storage Explorer。
  2. 在左窗格中,展开“本地和附件”。
  3. 右键单击“ Data Lake Store”,然后-从上下文菜单中选择“连接到Data Lake Store。...
  4. 输入Uri,然后该工具导航到您刚才输入的URL的位置。 enter image description here
  5. 选择要复制的文件/文件夹。
  6. 导航到您想要的目的地。
  7. 单击粘贴。 enter image description here

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

答案 1 :(得分:1)

我的建议是使用Azure数据工厂(ADF)。如果要复制大文件或文件夹,这是最快的方法。 根据我的经验,将在大约1分钟20秒内复制10GB文件。 您只需要使用一个数据存储创建简单的管道,该管道将用作源和目标数据存储。

使用Azure Storage Explorer(ASE)复制大文件速度较慢,超过10分钟超过1GB。 与ADF复制需要创建管道一样,使用ASE复制文件与大多数文件浏览器(复制/粘贴)中的操作最为相似。 我认为创建简单的管道值得付出努力,尤其是因为可以通过最少的编辑就可以将管道重用于复制另一个文件或文件夹。

答案 2 :(得分:0)

我同意以上评论,您可以使用ADF复制文件。只是您需要确保它不会增加您的成本。 Microsoft Azure Storage Explorer(MASE)也是复制blob的不错选择。

如果文件很大,则下面的选项会更快:

AzCopy:

将一个文件从blob下载到本地目录:

public class MainFragment extends Fragment {
FragmentMainBinding binding;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    binding = DataBindingUtil.inflate(inflater, R.layout.fragment_main, container, false);
    View v = binding.getRoot();
    v.setClickable(true);
    v.setFocusable(true);
    return v;
}
}

答案 3 :(得分:0)

如果您将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