Pig Latin用户定义函数中的HDFS路径

时间:2017-03-17 13:08:21

标签: java hadoop apache-pig user-defined-functions

我有以下用Java语言编写的用户定义函数:

我定义了FileWriter,但执行后会出现错误消息。

该计划:

outputFile = new FileWriter("hdfs://NaeNode:9000/input/SG.csv",true); fw = new BufferedWriter(outputFile);

来自UDF的错误:trial.obvious_guess [hdfs:/ NaemNode:9000 / input / SG.csv(没有此类文件或目录)]

我如何解决这个问题,因为我在执行时使用[pig -x MapReduce fie.pig]

1 个答案:

答案 0 :(得分:0)

要存储在HDFS中,您必须使用FSDataOutputStream。

FileSystem.create返回FSDataOutputStream。

请参阅下面的代码。

public static void main(String[] args) throws Exception {
    FSDataOutputStream fout = null;
    try {
        Path path = new Path("hdfs://NaeNode:9000/input/SG.csv");
        String data = "data";
        FileSystem fileSystem = FileSystem.get(new Configuration());
        if (!fileSystem.exists(path)) {
            fout = fs.create(path); 
        } else {
            fout = fs.append(path)
        }
        BufferedWriter bufferedWriter = new BufferedWriter(
            new OutputStreamWriter(fout)
        );
        bufferedWriter.write(data);
        bufferedWriter.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
}