要创建/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
以及所有中间文件夹(SVLSTSLS
和LostSales
),如果不存在的话?
答案 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
-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"
在我运行上面的代码之前,文件夹 ~/month=4/day=15 不存在。现在中间文件夹“~/month=4”和最终子文件夹“~/month=4/day=15”都创建了。
以上 JAVA 代码在独立(windows)HDFS 系统上进行了测试,但也应该在 linux/生产环境中与多集群一起使用。