我有一个场景,文本分隔的文件每30分钟从不同的服务器(大约10个)到达hadoop系统。每个文件有大约250万条记录,可能不会在同一时间到达,我正在寻找一种方法,这些文件可以每30分钟处理一次。我的问题是:如何处理不同时间到达的文件?我想把数据汇总到10个文件中。这么大的文件应该合并还是分开处理?我希望这个解决方案可以用python实现,但是使用hadoop中的任何工具/技术的解决方案都会受到赞赏。
ecfdbz9o1#
如何处理不同时间到达的文件?除非你的数据对时间敏感,否则这无关紧要。如果是这样,那么原始数据应该包括写入记录的时间戳。这么大的文件应该合并还是分开处理?大的,独立的文件是最好的。注意hdfs块的大小。此大小取决于您的安装。我想用python实现这个解决方案欢迎您使用spark streaming来监视文件目录,或者使用oozie+spark来安排常规批处理,但其他工具可能更简单。有些你可以研究Apache尼菲流集数据采集器ApacheFlumeflume将要求您在这10个外部服务器上安装代理。列出的每个服务都可以近实时地读取数据,因此不需要显式地进行30分钟的批处理。
1条答案
按热度按时间ecfdbz9o1#
如何处理不同时间到达的文件?
除非你的数据对时间敏感,否则这无关紧要。如果是这样,那么原始数据应该包括写入记录的时间戳。
这么大的文件应该合并还是分开处理?
大的,独立的文件是最好的。注意hdfs块的大小。此大小取决于您的安装。
我想用python实现这个解决方案
欢迎您使用spark streaming来监视文件目录,或者使用oozie+spark来安排常规批处理,但其他工具可能更简单。
有些你可以研究
Apache尼菲
流集数据采集器
ApacheFlume
flume将要求您在这10个外部服务器上安装代理。
列出的每个服务都可以近实时地读取数据,因此不需要显式地进行30分钟的批处理。