2017-04-16 171 views
0

我有一个情况,文本分隔文件每隔30分钟从不同的服务器(大约10个)到达hadoop系统。处理hadoop python中的多个文件

每个文件有大约250万条记录,可能不会在同一时间到达,我正在寻找一种方法,可以每30分钟处理一次这些文件。

我的问题是:

  1. 如何处理在不同时间到达的文件吗?
  2. 我想要将数据汇总到10个文件中。是否应该将这些大文件合并或分开处理?

我想这个解决方案在python中实现,但在hadoop中使用任何工具/技术的解决方案将不胜感激。

+0

你可以看看Apache Oozie。它能够根据数据可用性发出火花动作/作业。 – Pushkr

回答

0

如何处理在不同时间到达的文件?

除非您的数据对时间敏感,否则无关紧要。如果是这样,那么你的原始数据应该包括记录被写入的时间戳。

这样的大文件应该分开组合还是处理?

大,单独的文件是最好的。记下HDFS块大小。这个大小取决于你的安装。

我想在Python中实现该解决方案

欢迎你使用星火流的手表文件的目录,或者Oozie的+火花,只是安排定期分批,但其他的工具,可以说是简单。

一些你可以研究

  • 阿帕奇NiFi
  • Streamsets数据采集
  • 阿帕奇水槽

水槽会要求你的10台外部服务器上安装代理。

每个列出的服务都可以近乎实时地读取数据,因此您不需要明确需要30分钟的批次。