以编程方式将文件写入hdfs

bfrts1fy  于 2021-06-03  发布在  Flume
关注(0)|答案(1)|浏览(400)

我正在研究java程序中的选项,这些选项可以将文件写入具有以下要求的hdfs中。
1) 事务支持:每个文件在写入时,要么完全写入成功,要么完全失败,没有写入任何部分文件块。
2) 压缩支持/文件格式:写入内容时可以指定压缩类型或文件格式。
我知道如何通过打开 FSDataOutputStream 如图所示。只是想知道是否有一些现成的解决方案库提供了我上面提到的支持。
我偶然发现了flume,它提供了hdfs sink,可以支持事务、压缩、文件旋转等,但它似乎没有提供一个api来用作库。flume提供的特性与flume体系结构组件(如源、通道和汇)高度耦合,似乎不能独立使用。我只需要在hdfs加载部分。
有人有什么好建议吗?

rwqw0loc

rwqw0loc1#

我认为使用flume作为hdfs的“网关”将是一个很好的解决方案。您的程序将数据发送到flume(使用其源提供的一个接口),flume将数据写入hdfs。
这样,您就不需要为与hdfs的交互支持大量定制代码。另一方面,您需要安装和配置flume,但根据我的经验,这要容易得多(请参阅此注解以获取安装建议)。
最后,flume hdfs sink是一个开源组件,因此您可以根据apache许可证的条款自由地重用它的代码。获取以下来源:https://git-wip-us.apache.org/repos/asf?p=flume.git;a=树;f=FlumengFlume/FlumehdfsFlume;h=b9414a2ebc976240005895e3eafe37b12fad4716;hb=行李箱

相关问题