2014-03-30 7 views
0

내 프로그램에서 fs.copyFromLocalFile (로컬 경로, Hdfs dest 경로)을 사용하고 있습니다. 매번 HDFS에서 대상 경로를 삭제할 때와 로컬 컴퓨터에서 파일을 복사하기 전에. 그러나 Local 경로에서 파일을 복사하고 map reduce를 구현하면 각 파일의 사본이 두 개 생성되므로 count 단어가 두 배로 늘어납니다.각 파일의 복사본 두 개가 로컬에서 HDFS로 복사됩니다.

분명히하기 위해 "/ home/user/desktop/input /"은 로컬 경로로, HDFS dest 경로는 "/ input"이됩니다.

나는 HDFS의 대상 경로를 확인하는 경우, 즉 폴더가있는이 결과

[email protected]:~$ hdfs dfs -ls /input 
14/03/30 08:30:12 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable 
    Found 4 items 
-rw-r--r-- 1 hduser supergroup   62 2014-03-30 08:28 /input/1.txt 
-rw-r--r-- 1 hduser supergroup   62 2014-03-30 08:28 /input/1.txt~ 
-rw-r--r-- 1 hduser supergroup   21 2014-03-30 08:28 /input/2.txt 
-rw-r--r-- 1 hduser supergroup   21 2014-03-30 08:28 /input/2.txt~ 

내가 단일 파일 홈/사용자/데스크탑/입력으로 입력을 제공 할 때/1.TXT가 생성입니다 적용된 줄일하는지도 문제가없고 단일 파일 만 복사됩니다. 그러나 디렉토리를 언급하면 ​​문제가 발생합니다. HDFS Dest through 명령 줄에 각 파일을 수동으로 배치해도 아무런 문제가 발생하지 않습니다.

파일 시스템의 간단한 논리가 누락 된 경우 확실하지 않습니다. 어떤 사람이 내가 잘못 가고있는 곳을 제안 할 수 있다면 좋을 것입니다.

저는 hadoop 2.2.0을 사용하고 있습니다.

로컬 임시 파일을 삭제하려고 시도했으며 텍스트 파일이 열려 있지 않은지 확인했습니다. 임시 파일을 복사하는 것을 피하는 방법을 찾고 있습니다.

미리 감사드립니다.

+0

hadoop 버전을 지정하여 질문을 수정하십시오. copyFromLocal 및 mapreduce 논리를 함께 실행하는 대신 copyFromLocal 명령 바로 다음에/input 디렉토리의 파일을 확인할 수 있습니다. – sachin

+0

@sachinjose 맵 축소 실행 중에 로컬 경로를 지정할 수있는 인터페이스를 제공하려고했습니다. 임시 파일을 피할 수있는 솔루션을 찾고 있습니다. – user2934433

답변

1

파일 /input/1.txt~ /input/2.txt~은 컴퓨터에서 사용중인 파일 편집기로 만든 임시 파일입니다. Ctrl + H를 사용하여 로컬 디렉토리의 숨겨진 임시 파일을 모두보고 삭제할 수 있습니다.

+0

예, 로컬 파일에서 임시 파일을 가져 오는 것으로 알고 있습니다. 파일을 삭제하고 파일이 편집기에서 열리지 않았는지 확인했습니다. 하지만 여전히 임시 파일이 복사되고 있습니다. 죄송합니다, 나는이 지점을 게시물에 언급해야합니다. – user2934433