我的进程不时创建大量文件,我想将文件从我的本地目录传输到HDFS中的某个位置,除了使用NiFi之外,是否可以在java中开发该流程。如果是,请通过Java提供一些参考代码来指导我。
请帮帮我!
答案 0 :(得分:1)
你可以做几件事: -
1)使用Apache flume: - https://www.dezyre.com/hadoop-tutorial/flume-tutorial。此页面显示: - " Apache Flume是一个分布式系统,用于将文件聚合到一个位置。 "这个解决方案应该比使用kafka更好,因为它是专门为文件设计的。
2)将Java代码写入ssh到您的机器并扫描在特定时间戳之后修改的文件。如果您发现此类文件打开输入流并将其保存在计算机上,则您的Java代码正在运行。
3)或者你的java代码可以在你正在创建文件的机器上运行,你可以扫描在特定时间戳之后创建的文件并将它们移动到任何新机器
4)如果你只想使用kafka。您可以编写一个java代码来读取文件,找到最新的文件/行并将其发布到kafka主题。 Flume可以开箱即用。
答案 1 :(得分:0)
我不知道Kafka中的邮件大小是否有限制,但您可以在生产者/消费者属性中使用ByteArraySerializer。将您的文件转换为字节,然后在使用者身上重新构建它。
快速搜索我发现了这个
message.max.bytes (默认值:1000000) - 邮件的最大大小 经纪人会接受。这必须小于消费者 fetch.message.max.bytes,或者代理将有不能的消息 消费,导致消费者挂起。