0

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

我遇到的障碍之一是我们的一些 reducer 会生成多个数据集。今天这是用副作用文件完成的,所以我们在一个 reduce 步骤中将每个记录类型写到它自己的文件中,我想知道我有什么选择可以用 HCatalog 来做这件事。

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

某些工作的另一个选择是更改我们的模式,以便所有记录都存储在一个模式中。显然,如果数据只是为了穷人的分区而被分解,这个选项很有效,因为 HCatalog 将负责根据字段对数据进行分区。但是,对于其他工作,记录的类型并不一致。

似乎我可以使用 Reader/Writer 接口来传递一组写入器上下文,每个模式一个,但我还没有真正考虑过(而且我只看了一天的 HCatalog,所以我可能会误解 Reader/Writer 接口)。

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

谢谢。

安德鲁

4

1 回答 1

0

据我所知,正确的方法是使用 MultiOutputFormat 类。对我最大的帮助是 Hive 中的 TestHCatMultiOutputFormat 测试。

安德鲁

于 2013-12-20T07:33:56.707 回答