国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

java實現將ftp和http的文件直接傳送到hdfs

2019-11-26 15:15:08
字體:
來源:轉載
供稿:網友

之前實現了使用流來講http和ftp的文件下載到本地,也實現了將本地文件上傳到hdfs上,那現在就可以做到將
ftp和http的文件轉移到hdfs上了,而不用先將ftp和http的文件拷貝到本地再上傳到hdfs上了。其實這個東西的原理
很簡單,就是使用流,將ftp或http的文件讀入到流中,然后將流中的內容傳送到hdfs上,這樣子就不用讓數據存到
本地的硬盤上了,只是讓內存來完成這個轉移的過程,希望這個工具,能夠幫到有這樣需求的同學~
這里先附上之前的幾個工具的鏈接:

http工具
ftp工具
鏈接描述

代碼如下:

import java.io.InputStream;import java.io.OutputStream;import java.io.IOException;public class FileTrans {  private String head = "";  private String hostname = "";  private String FilePath = "";  private String hdfsFilePath = "";  private HDFSUtil hdfsutil = null;  private FtpClient ftp;  private HttpUtil http;  public void setFilePath(String FilePath){    this.FilePath = FilePath;  }  public String getFilePath(String FilePath){    return this.FilePath;  }  public void sethdfsFilePath(String hdfsFilePath){    this.hdfsFilePath = hdfsFilePath;  }  public String gethdfsFilePath(String hdfsFilePath){    return this.hdfsFilePath;  }  public void setHostName(String hostname){    this.hostname = hostname;  }  public String getHostName(){    return this.hostname;  }  public void setHead(String head){    this.head = head;  }  public String getHead(){    return this.head;  }  public FileTrans(String head, String hostname, String filepath, String hdfsnode,String hdfsFilepath){    this.head = head;    this.hostname = hostname;    this.FilePath = filepath;    this.hdfsFilePath = hdfsFilepath;    if (head.equals("ftp") && hostname != ""){      this.ftp = new FtpClient(this.hostname);    }    if ((head.equals("http") || head .equals("https")) && hostname != ""){      String httpurl = head + "://" + hostname + "/" + filepath;      this.http = new HttpUtil(httpurl);    }    if (hdfsnode != ""){      this.hdfsutil = new HDFSUtil(hdfsnode);    }    this.hdfsutil.setHdfsPath(this.hdfsFilePath);    this.hdfsutil.setFilePath(hdfsutil.getHdfsNode()+hdfsutil.getHdfsPath());    this.hdfsutil.setHadoopSite("./hadoop-site.xml");    this.hdfsutil.setHadoopDefault("./hadoop-default.xml");    this.hdfsutil.setConfigure(false);  }  public static void main(String[] args) throws IOException{    String head = "";    String hostname = "";    String filepath = "";    String hdfsfilepath = "";    String hdfsnode = "";    String localpath = "";    InputStream inStream = null;    int samplelines = 0;    try{      head = args[0];         //遠端服務器類型,http還是ftp      hostname = args[1];       //遠端服務器hostname      filepath = args[2];       //遠端文件路徑      hdfsnode = args[3];       //hdfs的機器名,不帶hdfs開頭      hdfsfilepath = args[4];     //hdfs的文件路徑      localpath = args[5];       //如果需要在本地保存一份的話,輸入本地的路徑,不保存,傳入空格或者samplelines傳入0      samplelines = Integer.parseInt(args[6]); //保存在本地的話,保存前N行,如果不保存,填0    }catch (Exception e){      System.out.println("[FileTrans]:input args error!");      e.printStackTrace();    }    FileTrans filetrans = new FileTrans(head, hostname, filepath, hdfsnode,hdfsfilepath);    if (filetrans == null){      System.out.println("filetrans null");      return;    }    if (filetrans.ftp == null && head.equals("ftp")){      System.out.println("filetrans ftp null");      return;    }    if (filetrans.http == null && (head.equals("http") || head.equals("https"))){      System.out.println("filetrans ftp null");      return;    }    try{      if (head.equals("ftp")){        inStream = filetrans.ftp.getStream(filepath);        if (samplelines > 0){          filetrans.ftp.writeStream(inStream, localpath, samplelines);        }      }      else{        inStream = filetrans.http.getStream(head + "://" + hostname + "/" + filepath);        if (samplelines > 0){          filetrans.http.downLoad(head + "://" + hostname + "/" + filepath, localpath, samplelines);        }      }      filetrans.hdfsutil.upLoad(inStream, filetrans.hdfsutil.getFilePath());       if (head == "ftp"){        filetrans.ftp.disconnect();      }    }catch (IOException e){      System.out.println("[FileTrans]: file trans failed!");      e.printStackTrace();    }    System.out.println("[FileTrans]: file trans success!");  }}

編譯有問題的話,在hadoop工具的那篇文章中有提到,可以參考
注:最好將其他三個工具的文件放在同一個目錄下,如果不放在一起,那么請自行引用

這個工具既可以將ftp或者http轉移到hdfs,也能將前N行保存到本地,進行分析

以上就是本文所述的全部內容了,希望能夠對大家學習java有所幫助。

請您花一點時間將文章分享給您的朋友或者留下評論。我們將會由衷感謝您的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 延吉市| 航空| 辰溪县| 漯河市| 读书| 崇仁县| 赤城县| 永福县| 东阿县| 建昌县| 库尔勒市| 崇信县| 错那县| 石渠县| 徐州市| 广东省| 喀什市| 莱芜市| 泸西县| 峡江县| 额尔古纳市| 江华| 云南省| 安远县| 蚌埠市| 田阳县| 泰州市| 南投市| 进贤县| 扎赉特旗| 平阳县| 武邑县| 南澳县| 商城县| 武义县| 云安县| 惠东县| 定日县| 镇远县| 杭锦旗| 葵青区|