eclipse(java api)操作hadoop hdfs,我试图将本地文件拷贝进hdfs,目标却是本地文件系统,不是hdfs。 5
在书上扒的code,也在网上找了一些,基本差不多。我试图将本地文件拷贝进hdfs,是在eclipse下调用copyFromLocalFile,dst设成hdfs的根目录,...
在书上扒的code,也在网上找了一些,基本差不多。我试图将本地文件拷贝进hdfs,是在eclipse下调用copyFromLocalFile,dst设成hdfs的根目录,执行的时候却试图向我文件系统的根目录拷贝这个文件。
是我的conf对象定义有问题么?
code如下:
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
public class CopyFile {
public static void main(String[] args)throws Exception{
Configuration conf=new Configuration();
conf.addResource(new Path("/hadoop0202/hadoop-0.20.2/conf/hadoop-default.xml"));
conf.addResource(new Path("/hadoop0202/hadoop-0.20.2/conf/hadoop-site.xml"));
conf.addResource(new Path("/hadoop0202/hadoop-0.20.2/conf/hdfs-site.xml"));
//conf.set("fs.defaultFS", "hdfs://localhost:9000");
FileSystem fs=FileSystem.get(conf);
Path src=new Path("/home/idhuser/input/test2.txt");
Path dst=new Path("/test2.txt");
fs.copyFromLocalFile(src,dst);
System.out.println("Upload to" + conf.get("fs.default.name"));
FileStatus files[]=fs.listStatus(dst);
for(FileStatus file:files){
System.out.println(file.getPath());
} System.out.println("done");
}
}
这个是报错,由于当前用户没权限操作系统根目录,所以说deny:
Exception in thread "main" java.io.FileNotFoundException: /test2.txt (Permission denied)
搞定了,我用的是hadoop 0.20.2, hdfs文件需要用 hdfs://localhost:9000//...操作。。如果file///就是本地系统文件。 展开
是我的conf对象定义有问题么?
code如下:
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
public class CopyFile {
public static void main(String[] args)throws Exception{
Configuration conf=new Configuration();
conf.addResource(new Path("/hadoop0202/hadoop-0.20.2/conf/hadoop-default.xml"));
conf.addResource(new Path("/hadoop0202/hadoop-0.20.2/conf/hadoop-site.xml"));
conf.addResource(new Path("/hadoop0202/hadoop-0.20.2/conf/hdfs-site.xml"));
//conf.set("fs.defaultFS", "hdfs://localhost:9000");
FileSystem fs=FileSystem.get(conf);
Path src=new Path("/home/idhuser/input/test2.txt");
Path dst=new Path("/test2.txt");
fs.copyFromLocalFile(src,dst);
System.out.println("Upload to" + conf.get("fs.default.name"));
FileStatus files[]=fs.listStatus(dst);
for(FileStatus file:files){
System.out.println(file.getPath());
} System.out.println("done");
}
}
这个是报错,由于当前用户没权限操作系统根目录,所以说deny:
Exception in thread "main" java.io.FileNotFoundException: /test2.txt (Permission denied)
搞定了,我用的是hadoop 0.20.2, hdfs文件需要用 hdfs://localhost:9000//...操作。。如果file///就是本地系统文件。 展开
1个回答
展开全部
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询