因为我不认为这是我的主管认为的那样。
我们从FTP接收了大约8个csv文件,这些文件很小(不到1MB)。他(我认为是正确的)担心HDFS上的群集大小将被浪费。因此,他想使用“合并内容”处理器来解决此问题。他似乎相信合并内容处理器将“整理”具有相同名称的文件,从而使单个文件更大。
要澄清一下:他希望它的工作方式是,如果今天的“ sales_report.csv”进来并且目录中已经存在“ sales_report.csv”,他希望将今天的“ sales_report.csv”中的新数据保存到作为新行添加到现有文件中。我希望这是有道理的。
相反,我得到的结果截然不同。我已设置好流程,以便它从FTP提取文件,根据文件夹在HDFS上创建目录,然后根据年份创建子文件夹。当我不使用MC处理器时,这一切都可以正常工作。当我将MC处理器放入计算机时,会得到三个文件-其中一个具有其原始名称,其中两个具有一长串随机字符。我们正在使用“合并内容”处理器的默认设置。
根据我上面的描述,听起来我们正在寻找MC处理器吗?
答案 0 :(得分:1)
MergeContent
处理器通过将多个流文件组合到一个流文件中来工作。这与将新数据追加到存储在HDFS中的现有文件(经理想要的)不同。
要做到这一点,您有几种选择:
MergeContent
处理器的情况下保持当前流量; HDFS仍然会出现“小文件”问题。 MergeContent
将内容与新内容合并,然后将新合并的内容保留回HDFS。这是相当浪费的操作,不建议这样做。 (请参见艾伦·盖茨的Pig and Hive at Yahoo!中的迭代处理)。 您选择哪种选择取决于您的特定要求: