簡體   English   中英

在 HDFS 中找不到帶有 JAR 的文本文件

[英]Not able to find text file with JAR in HDFS

我對 Hadoop 非常陌生,我在運行我認為是一個相對簡單的程序時遇到了困難。

我正在嘗試設置 JAR 以首先接收一個文本文件並將其發送到一個包含所有信息的新文件。 之后,一旦創建了第二個文本文件,JAR 將 append 文本文件與第一個到第二個同名。

JAR 文件中的代碼在這里:

package readWrite;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.*;
import org.apache.hadoop.io.IOUtils;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.PrintWriter;
import java.net.URI;

public class WriteToHadoop {
    public void writeToHadoop(String uri) throws Exception {
        Configuration conf = new Configuration();
        conf.setBoolean("dfs.support.append", true);
        String file = uri+"/test/houseInfo.txt";
        String fileOut = uri+"/test/mytest.txt";
        FileSystem fs = FileSystem.get(URI.create(file), conf);
        FileSystem fsout = FileSystem.get(URI.create(fileOut), conf);
        Path filePath = new Path(file);
        Path filePathOut = new Path(fileOut);
        InputStream in = fs.open(filePath);

        if (fsout.exists(filePathOut)){
            FSDataOutputStream fs_append = fsout.append(filePathOut);
            PrintWriter writer = new PrintWriter(fs_append);
            writer.append(fileOut);
            writer.flush();
            fs_append.hflush();
            writer.close();
            fs_append.close();

        } else {
            FSDataOutputStream out = fsout.create(filePathOut, () -> System.out.println("/"));

            IOUtils.copyBytes(in, out, 4096, true);
            in.close();
            out.close();
        }
    }
}

這是主要的:

package readWrite;

public class ExecuteReadWrite {
    public static void main(String[] args) {
        try {
            new WriteToHadoop().writeToHadoop(args[0]);
        } catch (Exception e) {
            System.out.println(e.toString());
        } try {
            new ReadFromHadoop().readFromFile(args[0]);
        } catch (Exception e) {
            System.out.println(e.toString());
        }
    }
}

我在 hdfs 中創建了目錄 /test/ 並將 houseInfo.txt 文件放在那里。 理論上,當我跑步時

hadoop jar houseSort.jar <URI> ,

它應該找到文件並運行代碼,但它繼續拋出 FileNotFoundExceptions。

為什么會拋出異常?

我是個傻瓜,沒有正確寫下路徑。

String file = uri+"/test/houseInfo.txt";

應該是:

String file = uri+"/user/hadoopuser/test/houseInfo.txt":

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM