2012-04-23 67 views
0

在hadoop文件系统中,我有两个文件,分别是X和Y.通常,hadoop会生成大小为64 MB的文件X和Y的块。是否有可能迫使hadoop分割这两个文件,使得从X中32 MB创建64 MB块并从Y中创建32 MB。换句话说,是否可以重写文件分区的默认行为?hadoop中的文件分割/分区

+0

在将文件转储到HDFS之前预处理文件可能更有意义。做你喜欢的东西是可能的,只是相当丑陋。 – rICh 2012-12-02 03:59:50

回答

0

文件分区是FileInputFormat的函数,因为它在逻辑上取决于文件格式。您可以使用任何其他格式创建自己的输入。所以每个文件 - 你可以做到。
在单个分割声音中混合两部分不同的文件会产生问题 - 因为文件是处理的基本单元。
为什么你有这样的要求? 我看到下面的要求。可以说数据局部性必须至少部分被牺牲 - 我们可以将地图本地运行到一个文件,但不能同时运行到两个文件。
我会建议构建某种“文件对”文件,将其放入分布式缓存,然后在映射函数中加载来自HDFS的第二个文件。

+0

我的应用程序是这样的,我需要一个地图任务中的两个文件的一部分来处理它们。如果我在地图任务中只有一个文件的内容,那么它不能被独立处理。 – 2012-04-23 19:00:55

+0

我正在做你所建议的。谢谢。 – 2012-04-25 03:29:56