Google Dataflow/Dataprep 随机键太大 (INVALID_ARGUMENT)

Google Dataflow / Dataprep Shuffle key too large (INVALID_ARGUMENT)

我已经尝试运行这个工作好几次了,每次都遇到很多与配额相关的警告(并且每次都要求增加配额),但最后总是以失败告终,并显示此错误消息,这我相信是由于我的数据集太大造成的,但我不确定。 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.output(GroupAlsoByWindowsParDoFn.java:182)
at com.google.cloud.dataflow.worker.GroupAlsoByWindowFnRunner.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 之外还有什么想法吗?

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

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