我正在写一个程序,将时间系列数据从kafka
保存到hadoop。我这样设计的目录结构:将时间序列数据写入按月份和日期分区的hdfs中?
event_data
|-2016
|-01
|-data01
|-data02
|-data03
|-2017
|-01
|-data01
因为是一个守护任务,我写了一个基于LRU经理来管理打开的文件并关闭非活动文件中的时间,以避免资源泄漏,但收入数据流不按时间排序,再次打开已存在的文件以追加新数据是很常见的。
我试图使用FileSystem#append()
方法打开OutputStream
当文件存在,但它在我的HDFS集群上运行的错误(对不起,我不能在这里提供的特定错误,因为这是几个月前,现在我尝试另一种解决方案)。
然后我使用另一种方式来实现我的目标: 当同名文件存在时,向文件名添加序列后缀。现在我在我的hdfs中有很多文件。它看起来很脏。
我的问题是:这种情况的最佳做法是什么?
HDFS并非真正设计用于追加到文件 –