2017-12-05 17 views
0

도움이 필요합니다. 파이썬 코드를 사용하여 웹 페이지에서 파일을 다운로드하고 로컬 파일 시스템에 배치 한 다음 put 명령을 사용하여 HDFS로 전송 한 다음 작업을 수행합니다.웹 페이지에서 파일을 직접 다운로드하여 로컬을 사용하지 않고 HDFS에 파일을 직접 배치하는 방법은 무엇입니까?

그러나 파일 크기가 매우 커지고 로컬 파일 시스템으로 다운로드하는 것이 올바른 절차가 아닌 경우가 있습니다. 그래서 나는 파일을 로컬 파일 시스템을 사용하지 않고 HDFS로 직접 다운로드하기를 원합니다.

진행 방법 중 가장 좋은 방법을 제안 할 수 있습니까? 내 질문에 오류가 있으면 저를 바로 잡으십시오. 감사합니다.

답변

0

할 수 있습니다 그것은 직접 다운로드에서 디스크에 쓰기 방지하기 파이프, 예컨대 :

curl server.com/my/file | hdfs dfs -put - destination/file 

-put- 매개 변수는 표준 입력에서 읽어합니다 (documentation 참조)를 알려줍니다.

로컬 컴퓨터를 통해 다운로드를 계속 라우팅하지만, 로컬 파일 시스템을 통해서만 이루어집니다. 로컬 시스템을 사용하지 않고 파일을 다운로드하려면 작업이 예를 들어 허용하는 맵 전용 MapReduce 작업을 작성하면됩니다. 다운로드 할 파일 목록이 들어있는 입력 파일을 다운로드 한 다음 다운로드하여 결과를 스트리밍합니다. 이 경우 클러스터가 인터넷에 대한 개방 액세스 권한을 갖춰야하므로 일반적으로 바람직하지 않습니다.

+0

이것은 로컬 시스템에 파일을 다운로드합니까, 그렇지 않습니다? – Rahul

+0

내가 제공 한 명령은 로컬 파일 시스템에 아무 것도 다운로드하지 않지만 로컬 시스템의 네트워크를 통해 다운로드 한 다음 HDFS로 다시 업로드합니다. 그 동안 파일 시스템에 쓰지는 않습니다. 이것이 당신이 찾고있는 것인지 확실하지 않습니다. 나는 또한 당신이 이것을 어떻게 로컬 머신을 완전히 잘라낼 수 있는지 설명했다. – krog