2017-10-14 4 views
0

ファイルをftpサーバからhdfsに転送したい。次のようにFTP TO HDFS、デモコード:私はこの方法を試してみましたHadoop FTPFileSystem.listStatus(パスパス)が機能しないのはなぜですか?

Configuration conf = new Configuration(); 
    FTPFileSystem ftpfs = new FTPFileSystem(); 
    ftpfs.setConf(conf); 
    ftpfs.initialize(new URI(ftpConnectStr), conf); 

    Path homeDirectory = ftpfs.getHomeDirectory(); 
    System.out.println(homeDirectory.toString()); 

    FileStatus[] fileStatuses = ftpfs.listStatus(new Path("/")); 
    for(FileStatus fileStatus : fileStatuses){ 
     System.out.println(fileStatuses.length); 
     System.out.println(fileStatus.toString()); 
    } 

    boolean test = ftpfs.mkdirs(new Path("test")); 
    System.out.println(test); 

ftpfs.listStatus(new Path("/"))が動作しない、それが何を示していないが、ftpサーバは、二つのディレクトリとftpfs.mkdirs(new Path("test"))作業罰金、次のように結果を実行しているプログラムがあります。

enter image description here

とftpサーバのdirctoryは、次のように:

enter image description here

Googleで検索しましたが、少しの情報が見つかりました。どうしてか分かりません。あなたが私を助けることができれば、私は非常に感謝します、ありがとう

+1

@MartinPrikryl https://hadoop.apache.org/docs/r2.4.1/api/org/apache/hadoop/fs/ftp/FTPFileSystem.html#listStatus(org.apache.hadoop.fs。パス) – Smittey

+0

Hadoopのログファイルを表示できますか? –

+0

ftpフォルダ内のファイルに対するファイルアクセス許可は何ですか?あなたのソフトウェアを実行しているプロセスはそれらを見ることができますか?それには正しいパーミッションがありますか?それはchmod 777または何かを確認するためにダミーファイルを入れてすぐにテストを与える – Smittey

答えて

0

最後に、私は問題があることを発見しました。 FTPサーバーでは、データ転送モードはパッシブに設定されています。

enter image description here

それから私はFTPFileSystemのソースコードをdebuged、と私はそれがFTPパッシブモードを設定していないことがわかりました。

enter image description here

再実行プログラム:

enter image description here

ので、私はこれにFTPFileSystemの関連コードを変更

enter image description here

をし、それが正常に動作します:

enter image description here

関連する問題