이전에는 스트림을 사용하여 HTTP 및 FTP 파일을 로컬 영역으로 다운로드했으며 로컬 파일의 업로드를 HDFS에 구현했습니다.
FTP 및 HTTP 파일은 HDFS로 전송되며 FTP 및 HTTP 파일을 로컬로 복사 한 다음 HDF에 업로드 할 필요가 없습니다. 실제로이 원칙은 스트림을 사용하여 FTP 또는 HTTP 파일을 스트림으로 읽은 다음 스트림 내용을 HDFS로 전송하는 것입니다. 로컬 하드 디스크, 메모리가 전송 프로세스를 완료하게하십시오.
이전 도구에 대한 링크는 다음과 같습니다.
HTTP 도구
FTP 도구 링크 설명
코드는 다음과 같습니다.
java.io.inputstream; import java.io.ioexception {private string head = ""; "; String hdfsfilepath) {hdfsfilepath = hdfsfilepath; } public void sethead (String Head) {this.head} public string gethead (return this.head); Head; head; hostname = hostname; hdfsfilepath = hdfsfilepath; ); filepath; hdfsutil.gethdfsnode ()+hdfsutil.gethdfspath ()); .sethadoopdefault ( "./ hadoop-default.xml"; hdfsutil filepath = "String hdfsnode ="; ftp hostname = Args [1]; /hdfs 파일 경로 LocalPath = Args [5]; / /로컬로 사본을 저장 해야하는 경우, 로컬 경로를 입력하고 0 샘플의 공간 또는 샘플을 통과하지 마십시오. // 로컬로 저장하면 저장되지 않은 경우 N 라인을 저장하면 0} CATC (EXCERSE e) {System.out.println ( "[fileTrans] : input args error!"); } filetrans = 새로운 filetrans (Head, Hostname, filepath, hdfsnode, hdfsfilepath); head.equals ( "ftp")) {System.out .println ( "filetrans ftp null"); "https")) {system.out.println (filetrans ftp null ") {head.equals ("ftp ")) 샘플 라인> 0) {filetrans.ftp.writestream (instream, localpath, 샘플)} {instream = filetrans.http.getStream (// " + hostname +"/" + filepath; > 0) {filetrans.http.download (Head + ": //" + hostname + "/" + filepath, localpath, 샘플)} filetrans.hdfsutil.upload (Instream, filetrans.hdfsutil.getfilepath (); if (head == "ftp") {filetrans.ftp .disconcect ()}} {system.out.println (파일 트랜스 실패!); } system.out.println ( "[filetrans] : 파일 트랜스 성공!");컴파일에 문제가있는 경우 Hadoop 도구의 기사에 언급되어 있습니다. 직접 인용하십시오.
이 도구는 FTP 또는 HTTP를 HDF로 전송하고 분석을 위해 첫 번째 N 라인을 로컬로 저장할 수 있습니다.
위는이 기사에 설명 된 모든 내용입니다.
시간을내어 기사를 친구들과 공유하거나 의견을 남겨주세요. 귀하의 지원에 진심으로 감사드립니다!