在开始使用Hive之前,我编写了一组Hadoop流。当添加Hive时,我们将数据文件配置为外部表。现在,我们正在考虑重写流以使用HCatalog输出结果。我们进行更改的主要动机是利用动态分区。

我遇到的障碍之一是我们的某些化简器生成多个数据集。今天,这是通过副作用文件完成的,因此我们可以在单个减少步骤中将每种记录类型写到其自己的文件中,我想知道使用HCatalog的方法是什么。

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

一些作业的另一种选择是更改架构,以便将所有记录存储在单个架构中。显然,如果只是为了穷人分区而将数据分解,则此选项很好用,因为HCatalog会根据字段对数据进行分区。但是,对于其他作业,记录类型不一致。

似乎我可以使用Reader / Writer界面传递一组编写器上下文,每个模式一个,但是我还没有真正考虑过(而且我只看了HCatalog一天,因此我可能会误会Reader / Writer界面)。

是否有人在一个reduce步骤中编写多个模式有任何经验?任何指针将不胜感激。

谢谢。

安德鲁

最佳答案

尽我所知,执行此操作的正确方法是使用MultiOutputFormat类。对我最大的帮助是Hive中的TestHCatMultiOutputFormat测试。

安德鲁

关于hadoop - 在单个reducer中写入多个HCatalog模式?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20577235/

10-10 05:19