我有一个mapreduce作业,它读取文本文件并从中创建Parquet文件,同时将其作为输出写入简单的文本文件。我使用了多种输出格式。但可以初始化多个输出格式对象,以便一次写入Parquet文件或文本文件。我需要在一个Map器中同时容纳两者。非常感谢您的帮助。
gmxoilav1#
不确定这是不是最好的方法,但您可以在我们的Map程序中初始化stringbuilder setup() 方法,在 map() 方法,然后将其写入 cleanup 方法。取决于文本输出的大小以及是否有足够的内存。这样,文本文件根本不需要是Map器输出,Map器输出只能是Parquet数据。你可以用 context.getInputSplit() 或者类似于文本输出文件名的东西,以便每个Map器输出一个唯一的文件名,并且您知道哪个输出对应于哪个输入。
setup()
map()
cleanup
context.getInputSplit()
1条答案
按热度按时间gmxoilav1#
不确定这是不是最好的方法,但您可以在我们的Map程序中初始化stringbuilder
setup()
方法,在map()
方法,然后将其写入cleanup
方法。取决于文本输出的大小以及是否有足够的内存。这样,文本文件根本不需要是Map器输出,Map器输出只能是Parquet数据。你可以用
context.getInputSplit()
或者类似于文本输出文件名的东西,以便每个Map器输出一个唯一的文件名,并且您知道哪个输出对应于哪个输入。