国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - java實現(xiàn)將ftp和http的文件直接傳送到hdfs

java實現(xiàn)將ftp和http的文件直接傳送到hdfs

2019-12-13 10:51hebedich JAVA教程

前面幾篇文章,我們已經(jīng)做了很好的鋪墊了,幾個要用到的工具我們都做了出來,本文就是將他們集合起來,說下具體的用法,小伙伴們可以參考下。

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

http工具
ftp工具
鏈接描述

代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
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行保存到本地,進行分析

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 一区二区精品 | 久久久久久久久久久网站 | 国产丝袜一区 | 亚洲欧美在线播放 | 天天操天操 | 91精品久久久久久久久 | 中文字幕一区二区三区乱码在线 | 色婷婷欧美| 久久波多野结衣 | 亚洲精品一区二区三区樱花 | 成人精品视频 | 不卡黄色 | 国产伦精品一区二区三区四区视频 | 激情久久久久 | 欧美激情五月 | 亚洲三级黄色 | 一区二区三区视频在线观看 | 色网在线看| 成人午夜视频网 | 国产在线在线 | 欧美一区二区三区 | ts人妖另类精品视频系列 | a国产精品 | 视频一区在线观看 | 国产一区二区三区在线 | 成人免费黄色片 | 日韩欧美一区二区精品 | 欧美日韩精品在线观看 | 黄一区 | 日韩在线看片 | 欧美一区二区三区在线 | 欧美在线国产 | 久久精品国产亚卅av嘿嘿 | 国产色视频| 亚洲狠狠爱 | 99精品欧美一区二区蜜桃免费 | 精品久久久久久久久久久久久久 | 国产精品网站在线观看 | 国产福利视频在线观看 | 亚洲骚片 | 自拍在线 |