我有一个问题,试图从我的本地系统复制目录到使用Java代码的HDFS。我可以移动单个文件,但无法找到移动整个目录的子文件夹和文件的方法。任何人都可以帮助我吗?提前致谢。将目录从本地系统复制到hdfs java代码
8
A
回答
17
只需使用FileSystem
的copyFromLocalFile方法。如果源路径是本地目录,则它将被复制到HDFS目标:
...
Configuration conf = new Configuration();
conf.addResource(new Path("/home/user/hadoop/conf/core-site.xml"));
conf.addResource(new Path("/home/user/hadoop/conf/hdfs-site.xml"));
FileSystem fs = FileSystem.get(conf);
fs.copyFromLocalFile(new Path("/home/user/directory/"),
new Path("/user/hadoop/dir"));
...
0
这是读取和写入HDFS的完整工作代码。它有两个参数
输入路径(本地/ HDFS)
输出路径(HDFS)
我用Cloudera的沙箱中。
package hdfsread;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URI;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;
public class ReadingAFileFromHDFS {
public static void main(String[] args) throws IOException {
String uri = args[0];
InputStream in = null;
Path pt = new Path(uri);
Configuration myConf = new Configuration();
Path outputPath = new Path(args[1]);
myConf.set("fs.defaultFS","hdfs://quickstart.cloudera:8020");
FileSystem fSystem = FileSystem.get(URI.create(uri),myConf);
OutputStream os = fSystem.create(outputPath);
try{
InputStream is = new BufferedInputStream(new FileInputStream(uri));
IOUtils.copyBytes(is, os, 4096, false);
}
catch(IOException e){
e.printStackTrace();
}
finally{
IOUtils.closeStream(in);
}
}
}
+0
嗨,当我尝试这一个我越来越org/apache/hadoop/fs/FSDataOutputStream错误。我已经将hadoop-common,hadoop-hdfs库添加到了我的pom中。并且还将core-site.xml,hdfs-site.xml添加到了我的配置中。 – user4342532
相关问题
- 1. 从HDFS复制文件到本地文件系统用JAVA
- 2. 将内容从HDFS复制到本地文件系统
- 3. 如何将文件从HDFS复制到本地文件系统
- 4. 将本地目录的内容复制到hdfs中的目录
- 5. Shell脚本将目录从hdfs复制到本地
- 6. 如何将文件从本地文件系统复制到HDFS文件系统?
- 7. 无法从本地文件系统复制到HDFS
- 8. 有条件地从系统复制脚本到安装目录
- 9. 将文件/块从HDFS复制到从节点的本地文件系统
- 10. 如何从linux(远程系统)复制目录到windows(本地系统)
- 11. 从本地目录复制到HDFS是否运行mapreduce作业?
- 12. OSX - 无法将文件从本地文件系统复制到hdfs
- 13. 如何从本地文件系统自动将zip文件复制到HDFS
- 14. 复制文件从本地到HDFS
- 15. 使用Flume将本地文件系统中的文件复制到HDFS
- 16. Hadoop将本地文件复制到HDFS?
- 17. 权限在从本地系统将文件从STS java程序复制到HDFS时发生Dennied
- 18. Hadoop的:错误而复制文件的本地目录到HDFS
- 19. 将文件从HDFS复制到本地计算机
- 20. 如何将数据从Hive表复制到本地系统?
- 21. 如何将文件从UNC共享复制到本地系统?
- 22. 将本地文件复制到hdfs需要在hdfs集群上?
- 23. 将目录从jar复制到本地文件夹
- 24. 将文件从S3增量复制到本地hdfs
- 25. 将文件夹从服务器复制到本地目录
- 26. 将文件系统中的文件(图像)复制到HDFS
- 27. 将文本复制到iPhone的系统
- 28. VB.NET将本地目录内容复制到另一个目录
- 29. 如何将文件从本地桌面复制到服务器文件系统
- 30. CMake:将文件从build目录复制到源代码中
您使用的是哪个版本的Hadoop? 'bin/hadoop dfs -copyFromLocal文件夹'复制'文件夹'并递归地处理它的一切,对我来说很好。 –
因为目录不是'文件'。您应递归创建目录并逐个移动文件(如果您愿意,可以并行执行)。当然,你应该知道,这个操作不是原子的,所以如果你失败了,一些文件在hdfs上还没有完成。 – octo