【发布时间】:2013-11-17 01:40:51
【问题描述】:
我有一个现有的 Python 程序,它有一系列操作,如下所示:
- 连接到 MySQL DB 并将文件检索到本地 FS。
- 运行对这些文件进行操作的程序 X。类似于:
java -jar X.jar <folder_name>这将打开文件夹中的每个文件并对它们执行一些操作,并将相同数量的转换文件写入另一个文件夹。 - 然后,运行一个程序 Y,该程序对 这些 文件进行操作:
java -jar Y.jar <folder_name>这将创建一行的多个文件,然后使用合并函数将这些文件合并为一个文件。 - 然后,此合并文件是一些进一步操作和分析的输入,这些操作和分析对于这个问题并不重要。
我想使用 Hadoop 来加速操作 Y,因为如果有以下情况需要很长时间才能完成:a)更多数量的文件或 b)要操作的大型输入文件。
我想知道的是,首先使用 Hadoop 来做这种性质的事情是否是个好主意,以及线程在这种情况下是否更有意义。请记住,X 和 Y 是不能以任何方式替换或更改的东西。
我想出了这个主意:
- 在上面的第 2 步之后,在映射器中,将文件复制到 HDFS 并再次退出,运行 jar 文件,此时将结果写回 HDFS。我将结果复制回文件系统并将其发送以进行进一步处理。
我想知道这是否有意义,特别是考虑到映射器需要一个(键,值)对,在这种情况下我什至会有一个 k-v 对吗?
我知道这听起来像是一个项目,因为它确实是,但我不是在寻找代码,只是关于这是否可行的一些指导,如果可行,正确的做法是什么如果我提出的解决方案不准确(足够)。
谢谢!
【问题讨论】:
标签: python hadoop jar mapreduce hdfs