我得到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有方法检查,如果文件忙于另一个任务?
答案 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