路径的拼接有两种方式:join、resolve.
1、path.join()方法使用特定于平台的分隔符作为定界符,将所有给定的path片段连接在一起,然后规范化生成的路径。
注⚠️:只接受字符串,如果任何参数不是字符串,则抛错。且如果传入的参数为空字符串,,返回".",表示当前目录
2、path.resolve()方法将路径或者路径片段的序列解析为 绝对路径 。
从斜杠或者反斜杠开始往后拼接,无效的字符串也会被拼接。
3、迭代创建文件夹
需求:检测是否有当前这个路径下的文件夹,如果没有,就递归创建
实现:
从fs -ls从列出来的文件看,这个文件夹/user/root/input是通过root用户创建的。说明你在从本地文件系统拷贝input目录到hdfs系统的时候,不是采用的hadoop用户,而是用root用户执行的拷贝命令,你可能忘记切换用户了,可以删除现在的input目录(采用root用户运行hadoop的删除命令,或者不删除也没关系),重新使用hadoop用户把input导入到hdfs系统中试试看。
frostfish425说的是对的!/user/hadoop是安装目录,就是说你hadoop相关的配置和代码都是放在这个位置,这个你自己定就可以了,但是要注意你配置文件和环境变量中的相关配置都要相应的发生改变。而/tmp/hadoop-hadoop/dfs/name是你配置的hdfs目录,也就是数据存放目录,在hdfs-site.xml中配置的,当然你也可以改变这个目录!
这个目录挂载的磁盘要足够大,不然数据存放不下,你初始化的时候报的这个Storage directory /tmp/hadoop-hadoop/dfs/name has been successfully formatted其实就是在/tmp/hadoop-hadoop/dfs这个目录下创建了name目录,意思就是告诉你,数据存放目录已经创建成功了!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)