我正在尝试将JavaPairRDD写入本地系统的文件中。代码如下:
JavaPairDStream<String, Integer> wordCounts = words.mapToPair(
new PairFunction<String, String, Integer>() {
@Override
public Tuple2<String, Integer> call(String s) {
return new Tuple2<String, Integer>(s, 1);
}
}).reduceByKey(new Function2<Integer, Integer, Integer>() {
@Override
public Integer call(Integer i1, Integer i2) {
return i1 + i2;
}
});
wordCounts.dstream().saveAsTextFiles("/home/laxmikant/Desktop/teppppp", "txt");
我正在尝试将日志或wordcount保存在文件中。但它无法保存在本地文件中(不是HDFS)。
我还尝试使用
保存HDFSsaveAsHadoopFiles("hdfs://10.42.0.1:54310/stream","txt")
以上行不会写入文件。任何人都可以告诉解决方案吗? stackoverflow上的各种解决方案都不起作用。
答案 0 :(得分:1)
rdd.saveAsTextFile("C:/Users/testUser/file.txt")
它不会将数据保存到 file.txt 文件中。它将抛出 FileAlreadyExists异常。因为此方法将创建自己的文件并将rdd保存在该特定文件中。
尝试使用以下代码将rdd保存在文件中。
rdd.SaveAsTextFile("C:/Users/testUser")
它将在testUser文件夹下创建一个文件,并将rdd保存到该文件中。
答案 1 :(得分:0)
语法似乎正确
saveAsHadoopFiles("hdfs://10.42.0.1:54310/stream","txt");
但完整的语法是
wordCounts.saveAsHadoopFiles("hdfs://10.42.0.1:54310/stream","txt"); // no dstream()
我的猜测是数据存在于某个系统缓冲区并且没有写入。如果您尝试使用“nc”传输更多数据,那么您可能会看到一个正在创建数据的文件。这就是我的情况。