내부의 모든 내용을 담은 HDFS에서 전체 디렉토리를 복사하는 가장 좋은 방법을 찾고 있습니다. 예 :내용이있는 디렉토리를 HDFS에서 로컬 파일 시스템으로 복사
Path srcPath = new Path("hdfs://localhost:9000/user/britva/data");
Path dstPath = new Path("/home/britva/Work");
fs.copyToLocal(false, srcPath, dstPath);
또한 "data"폴더에는 "Work"디렉토리에없는 폴더가있을 수 있습니다. 이렇게하는 가장 좋은 방법은 무엇입니까?
답변 해 주셔서 감사합니다.
하나의 파일 시스템 -HDFS 만 초기화 했으므로 해결책 중 하나는 FileUtil 개체를 사용하는 것이지만 사용 방법은 확실하지 않다고 가정합니다. 그러면 문제는 내 로컬 FS를 어떻게 초기화해야합니까? 이 유틸리티는 많은 노드가있을 때 사용됩니다. 하지만 내가 원하는 것은 - 로컬 FS로 작업하여 HDFS에서 프로젝트 소스로 복사하는 것입니다.
또한 Play! 프레임 워크는 Play.application.path + "/public/stuff"
처럼 경로를 사용하는 것이 좋습니다. 나는 위의 코드를 사용하기 위해 노력하고있어 경우
, 그것은 말한다 :
java.io.IOException: No FileSystem for scheme: file
'FileUtil.copy()'의'dstFS'로 사용하기 위해'LocalFileSystem' 객체를 인스턴스화해야한다고 생각합니다. 참조 : http://hadoop.apache.org/docs/current/api/org/apache/hadoop/fs/LocalFileSystem.html – Quetzalcoatl
나는 그것을하려고하는데,'NullPointerException : null (RawLocalFileSystem. java : 370)'. 인터넷에서 보았을 때 fs.local.block.size를 읽는 순간이 내 conf 파일에 확실히 설정되어 있습니다. 조금 이상합니다. 비록 폴더가 내 로컬 FS에서 생성되었으므로 조금 나아졌습니다. 감사! – psisoyev
네, 그것은 로컬 포인터가 자신의 구성 객체를 가지고 있지 않기 때문에 null 포인터를 발생시키는 것 같지만, 복사하는 동안 존재하지 않는 conf에서 로컬 블록 속성을 얻으려고합니다. 그래서 초기화 메소드를 호출하고 conf를 추가했습니다. 모든 것이 작동합니다. – psisoyev