Tôi đang gặp sự cố khi cố gắng "tải xuống" tệp từ hệ thống tệp HDFS vào hệ thống cục bộ của mình. (mặc dù hoạt động ngược lại hoạt động mà không có vấn đề gì). * Lưu ý: File tồn tại trên hệ thống tập tin HDFS trên quy định con đườngSao chép tệp từ HDFS sang Máy cục bộ
Đây là một đoạn mã:
Configuration conf = new Configuration();
conf.set("fs.defaultFS", "${NAMENODE_URI}");
FileSystem hdfsFileSystem = FileSystem.get(conf);
String result = "";
Path local = new Path("${SOME_LOCAL_PATH}");
Path hdfs = new Path("${SOME_HDFS_PATH}");
String fileName = hdfs.getName();
if (hdfsFileSystem.exists(hdfs))
{
hdfsFileSystem.copyToLocalFile(hdfs, local);
result = "File " + fileName + " copied to local machine on location: " + localPath;
}
else
{
result = "File " + fileName + " does not exist on HDFS on location: " + localPath;
}
return result;
ngoại lệ mà tôi nhận được như sau:
12/07/13 14:57:46 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Exception in thread "main" java.io.IOException: Cannot run program "cygpath": CreateProcess error=2, The system cannot find the file specified
at java.lang.ProcessBuilder.start(Unknown Source)
at org.apache.hadoop.util.Shell.runCommand(Shell.java:206)
at org.apache.hadoop.util.Shell.run(Shell.java:188)
at org.apache.hadoop.fs.FileUtil$CygPathCommand.<init>(FileUtil.java:412)
at org.apache.hadoop.fs.FileUtil.makeShellPath(FileUtil.java:438)
at org.apache.hadoop.fs.FileUtil.makeShellPath(FileUtil.java:465)
at org.apache.hadoop.fs.RawLocalFileSystem.execCommand(RawLocalFileSystem.java:573)
at org.apache.hadoop.fs.RawLocalFileSystem.setPermission(RawLocalFileSystem.java:565)
at org.apache.hadoop.fs.FilterFileSystem.setPermission(FilterFileSystem.java:403)
at org.apache.hadoop.fs.ChecksumFileSystem.create(ChecksumFileSystem.java:452)
at org.apache.hadoop.fs.ChecksumFileSystem.create(ChecksumFileSystem.java:420)
at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:774)
at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:755)
at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:654)
at org.apache.hadoop.fs.FileUtil.copy(FileUtil.java:259)
at org.apache.hadoop.fs.FileUtil.copy(FileUtil.java:232)
at org.apache.hadoop.fs.FileUtil.copy(FileUtil.java:183)
at org.apache.hadoop.fs.FileSystem.copyToLocalFile(FileSystem.java:1837)
at org.apache.hadoop.fs.FileSystem.copyToLocalFile(FileSystem.java:1806)
at org.apache.hadoop.fs.FileSystem.copyToLocalFile(FileSystem.java:1782)
at com.hmeter.hadoop.hdfs.hdfsoperations.HdfsOperations.fileCopyFromHdfsToLocal(HdfsOperations.java:75)
at com.hmeter.hadoop.hdfs.hdfsoperations.HdfsOperations.main(HdfsOperations.java:148)
Caused by: java.io.IOException: CreateProcess error=2, The system cannot find the file specified
at java.lang.ProcessImpl.create(Native Method)
at java.lang.ProcessImpl.<init>(Unknown Source)
at java.lang.ProcessImpl.start(Unknown Source)
... 22 more
Bất kỳ ý tưởng những gì có thể một vấn đề? Tại sao nó đòi hỏi cyqpath cho Cygwin? Tôi đang chạy mã này trên Windows 7.
Cảm ơn
Tính năng này có hoạt động khi gửi công việc qua oozie không? – Abhinay
@Abhinay Tôi không có ý tưởng không làm việc với điều này nữa xin lỗi – ant