创建多层HDFS文件夹

时间:2016-09-15 11:57:28

标签: hadoop hdfs

要创建/user/SVLSTSLS/LostSales/sales-history-prep HDFS文件夹,可以逐步创建HDFS文件夹,如:

bash-4.1$ hadoop fs -mkdir /user/SVLSTSLS
bash-4.1$ hadoop fs -mkdir /user/SVLSTSLS/LostSales
bash-4.1$ hadoop fs -mkdir /user/SVLSTSLS/LostSales/sales-history-prep

有什么方法可以创建最终文件夹sales-history-prep以及所有中间文件夹(SVLSTSLSLostSales),如果不存在的话?

4 个答案:

答案 0 :(得分:1)

您似乎正在寻找-p标志。

如果使用此标志,则还会根据需要创建父目录。 亲自尝试

hadoop fs -mkdir -p  q/w/e/r

这应该有效,而以下内容将失败:

hadoop fs -mkdir  r/q/w/e

答案 1 :(得分:1)

hadoop fs -mkdir -p /user/SVLSTSLS/LostSales/sales-history-prep

来自the documentation

  

-p选项行为很像Unix mkdir -p,创建父类   路径上的目录。

答案 2 :(得分:0)

hadoop fs -mkdir -p <paths>

-p选项将创建整个目录结构,无论是否创建父目录。

您可以在单个命令中通过用空格分隔来提供多个创建路径。例如,

hadoop fs -mkdir -p /fld1/fld11/fld111 /fld1/fld11/fld112

答案 3 :(得分:0)

您可以使用 FileSystem 在 JAVA 代码中创建 hdfs 文件夹(以及中间文件夹)。

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.*;
import org.apache.hadoop.fs.permission.FsPermission;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;


Configuration hadoopConfiguration = new Configuration();
hadoopConfiguration.addResource(new Path("C:\\Xiang\\Softwares\\hadoop3.2\\hadoop-3.2.1\\etc\\hadoop\\core-site.xml"));



Path hdfs_P190415 = new Path("hdfs://localhost:9820/wimp/contract-snapshot/year=2019/month=4/day=15");
FileSystem fs = FileSystem.get(hadoopConfiguration)
fs.mkdirs(hdfs_P190415);

然后会在 HDFS 系统上创建一个文件夹(以及中间文件夹)。可以在终端下查看

hadoop fs -ls "/wimp/contract-snapshot/year=2019"

enter image description here

enter image description here

在我运行上面的代码之前,文件夹 ~/month=4/day=15 不存在。现在中间文件夹“~/month=4”和最终子文件夹“~/month=4/day=15”都创建了。

以上 JAVA 代码在独立(windows)HDFS 系统上进行了测试,但也应该在 linux/生产环境中与多集群一起使用。

相关问题