0

我有 4 路并行 i/p 文件,6 路并行 i/p 文件。我想将数据写入 8 路多文件。你怎么能这样做?

4

1 回答 1

2

您必须使用 Partition 组件将两个输入流重新分区为 8 路。

  • 如果顺序无关紧要并且下游无关紧要,请使用轮询分区,这听起来像:记录被均匀地重新分配到输出流的分区。
  • 如果记录已排序或将在下游排序,请使用排序键在 4 路和 6 路输入流上使用 Partition by Key。Partition by Key 确保所有具有相同 key 的记录都在同一个并行分区上,因此它们可以被正确排序。如果记录已在输入流上排序,则使用相同的键将两个 Partition by Key 组件连接到 Merge 组件,以便在保持顺序的同时将它们组合起来。如果您将在组合输入流之后进行排序,则可以使用 Gather 组件,因为每个分区中各个记录的顺序并不重要——您将在 8 路流中对它们进行排序。
  • 如果记录将在下游分组处理,例如 Rollup 或 Join,那么您必须至少按多部分键的第一个字段进行分区。这更加微妙,因为一个键可能包含多个字段,例如 {state;city}。您可以在汇总之前按更少的字段进行分区,因为这足以确保具有相同键的所有记录都在同一个分区上。{state} 分区确保具有任何唯一 {city;state} 值的所有记录都将位于同一分区上。
于 2019-05-09T16:11:00.843 回答