1

我已经尝试过多次运行这项工作,并且每次在遇到许多与配额相关的警告(并且每次都要求增加)之后,但最终它总是以这个错误消息结束,我相信这是由于我的数据集太大,但我不确定。Dataprep 应该能够处理任何规模的 ETL 作业,而这甚至不是那么大的作业。无论如何,这是错误消息,任何帮助将不胜感激:

java.lang.RuntimeException: org.apache.beam.sdk.util.UserCodeException: java.lang.RuntimeException: java.io.IOException: INVALID_ARGUMENT: Shuffle key too large:2001941 > 1572864
at com.google.cloud.dataflow.worker.GroupAlsoByWindowsParDoFn$1.output(GroupAlsoByWindowsParDoFn.java:182)
at com.google.cloud.dataflow.worker.GroupAlsoByWindowFnRunner$1.outputWindowedValue(GroupAlsoByWindowFnRunner.java:104)
at com.google.cloud.dataflow.worker.util.BatchGroupAlsoByWindowViaIteratorsFn.processElement(BatchGroupAlsoByWindowViaIteratorsFn.java:121)
at com.google.cloud.dataflow.worker.util.BatchGroupAlsoByWindowViaIteratorsFn.processElement(BatchGroupAlsoByWindowViaIteratorsFn.java:53)
at com.google.cloud.dataflow.worker.GroupAlsoByWindowFnRunner.invokeProcessElement(GroupAlsoByWindowFnRunner.java:117)
...

完整的错误信息可以在这里找到:https ://pastebin.com/raw/QTtmm5D2

我已经获得了几次配额增加,虽然这让工作比以前继续父亲,但它仍然以同样的错误结束(尽管随机键大小更大。)由于配额,它现在似乎没有撞墙相关问题。

除了放弃 Dataprep 并回到 map reduce 之外,还有什么想法吗?

4

1 回答 1

3

在我看来,这更可能是一个错误,即单个列中的单个值太大,而不是数据集太大。你有值这么长的列吗?(显然这里大约 2MB)

也就是说,我认为这应该作为一个错误报告给 Dataprep。似乎他们按列值执行分组,并且他们可能应该在分组之前将它们修剪为较小的大小。我不知道他们是否关注 StackOverflow。

于 2018-03-04T22:36:32.807 回答