并发附加到spark中的hdfs文件

时间:2017-06-24 00:52:13

标签: hadoop apache-spark hdfs

我得到ex,无法将append_file文件忙于hdfs_non_map_reduce

我通过spark从kafka获取记录并将其放入cassandra和hdfs中 stream.map(somefunc).saveToCassandra

stream.map(somefunc).foreachRDD(rdd => 
fs.append.write(rdd.collect.mkstring.getBytes)
fs.close)
hdfs中的

复制因子是1,我使用一个节点集群 火花独立集群与2名工人

我不想要rdd.toDF.save("append"),因为它会产生大量文件。 有任何想法吗。 或者可能是hdfs有方法检查,如果文件忙于另一个任务?

2 个答案:

答案 0 :(得分:0)

  

我不想要rdd.toDF.save(“追加”),因为它会产生大量文件

使用rdd.repartition(1).toDF.save("append")将输出文件数量减少到1

答案 1 :(得分:0)

这对我来说也不好,它为每个rdd制作文件,但我想要一个大文件,一小时或一天

所以现在我在我的集​​群上使用try catch finally方案

try {
fs.append.write(rdd.collect.mkstring.getBytes)
}
catch {
case ex: IOException => fs.wait(1000)
}
finally {
fs.close
}

但我认为我有异常,但它正常工作,我写了100k msg到kafka和hdfs上的文件也有,这样我控制这个,但我想,这样,如果ex,msgs不写,和fs.close