2013-12-13 23 views
0

我有一套Hadoop流程是在我们开始使用Hive之前编写的。当我们添加Hive时,我们将数据文件配置为外部表。现在我们考虑重写流程以使用HCatalog输出结果。我们做出改变的主要动机是利用动态分区。在单个reducer中写入多个HCatalog架构?

我遇到的一个障碍是我们的某些reducer生成多个数据集。今天,这是通过副作用文件完成的,所以我们在单个reduce步骤中将每个记录类型写入其自己的文件,并且我想知道我的选项是用HCatalog完成的。

显然,一个选项是让每个作业只生成一种记录类型,为每种类型重新处理一次数据。我想避免这种情况。

某些作业的另一种选择是更改我们的模式,以便所有记录都存储在一个模式中。显然,如果数据只是为了穷人的分区而分解,那么这个选项就可以很好地工作,因为HCatalog会根据字段来分区数据。然而,对于其他工作,记录类型并不一致。

看来,我可能能够使用Reader/Writer接口传递一组作家上下文,每个模式一个,但我没有真正想过它(我只看HCatalog一天,所以我可能会误解读者/作家界面)。

有没有人有任何经验在单个reduce步骤中写入多个模式?任何指针将不胜感激。

谢谢。

安德鲁

回答

0

尽我可以告诉,这样做的正确方法是使用MultiOutputFormat类。对我来说最大的帮助是Hive中的TestHCatMultiOutputFormat测试。

Andrew

相关问题