我有一组hadoop流是在我们开始使用hive之前编写的。添加配置单元时,我们将数据文件配置为外部表。现在我们正在考虑使用hcatalog重写流以输出结果。我们进行更改的主要动机是利用动态分区。
我遇到的一个障碍是我们的一些简化程序生成多个数据集。今天,这是用副作用文件完成的,所以我们在一个reduce步骤中将每个记录类型写到它自己的文件中,我想知道用hcatalog做这件事有什么选择。
一个明显的选择是让每个作业只生成一个记录类型,为每个类型重新处理一次数据。我想避免这样。
某些作业的另一个选择是更改模式,以便将所有记录存储在单个模式中。显然,如果数据只是为了穷人的分区而被拆分,那么这个选项工作得很好,因为hcatalog将负责根据字段对数据进行分区。然而,对于其他工作,记录的类型并不一致。
似乎我可以使用reader/writer接口来传递一组writer上下文,每个模式一个,但我还没有真正考虑清楚(我只看了一天hcatalog,所以我可能误解了reader/writer接口)。
有没有人有过在一个reduce步骤中编写多个模式的经验?任何指点都将不胜感激。
谢谢。
安德鲁
1条答案
按热度按时间mwecs4sa1#
据我所知,正确的方法是使用multioutputformat类。对我最大的帮助是在hive中进行testhcatmultioutputformat测试。
安德鲁