我已经多次尝试运行此作业,并且每次遇到许多与配额相关的警告(并每次都请求增加)之后,但最终总是以此错误消息而失败,这是我的数据集也引起的大,但我不确定。 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并减少到地图之外,还有什么想法可以减少吗?

最佳答案

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

就是说,我认为应该将此报告为Dataprep的错误。似乎它们按列值进行分组,并且可能在分组之前应将它们修整为较小的大小。我不知道他们是否正在关注StackOverflow。

10-02 07:53