gpt4 book ai didi

hadoop - Hadoop distcp从prem复制到gcp奇怪的行为

转载 作者:行者123 更新时间:2023-12-02 18:56:18 26 4
gpt4 key购买 nike

当我使用distcp命令时

hadoop distcp /a/b/c/d  gs:/gcp-bucket/a/b/c/ , where d is a folder on HDFS containing subfolders.
如果gcp上已经存在文件夹c,则它将HDFS中的d(及其子文件夹)复制到c内的gcp中,但是如果gcp上没有c​​文件夹,则它将在gcp上创建c文件夹并复制d的子文件夹(而不是d本身) )放在gcp的c文件夹中。
因此,如果e是HDFS上d的子文件夹,而文件夹c在gcp上存在,则以下命令的输出:
hadoop distcp /a/b/c/d  gs:/gcp-bucket/a/b/c/ 
将会
gs://a/b/c/d
如果e是HDFS上d的子文件夹,而gcp上不存在文件夹c,则以下命令的输出
hadoop distcp /a/b/c/d  gs:/gcp-bucket/a/b/c/ 
将会 gs://a/b/c/e为什么第二个命令的输出与第一个命令的输出不同?这两个命令是相同的。

最佳答案

云存储上没有子目录。而是有一个平面命名空间,用于托管所有对象。
人们看到的层次结构 View 归因于gsutil工具,该工具使命名工作按用户期望的方式进行。因此,当有人将文件名your-file复制到目标gs://[BUCKET]/path/to/target/时,云存储服务会将其解释为名为gs://[BUCKET]/path/to/target/your-file的文件。
对于“文件夹c”不存在并且尝试在此“子目录”下进行复制的情况,第一次运行此命令时,将创建以下对象:

gs://a/b/c/e
如果存在“文件夹c”,则“文件夹d”及其所有内容(包括 d本身)将被复制到 subdirectory c
您的观察:

If folder c is already there on gcp then it copies d ( and itssubfolders) from HDFS to gcp inside c but if c folder is not there ongcp then it creates c folder on gcp and copies subfolders of d (butnot d it self ) inside of c folder of gcp.


是完全正确的,并且这种行为是可以预期的。
您可以在 Cloud Storage documentation中找到有关所应用规则以及子目录如何工作的更多详细信息。

关于hadoop - Hadoop distcp从prem复制到gcp奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64478110/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com