java - Google Dataflow/Dataprep Shuffle key 太大 (INVALID_ARGUMENT)

标签 java tableau-api google-cloud-dataflow google-cloud-dataprep

我已经尝试多次运行这个作业,每次都遇到许多与配额相关的警告(并且每次都请求增加),但最后它总是以失败告终并显示此错误消息,我认为这是我的原因造成的数据集太大,但我不确定。 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 之外,还有什么想法吗?

最佳答案

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

也就是说,我认为这应该作为错误报告给 Dataprep。看起来他们按列值执行分组,他们可能应该在分组之前将它们修剪成更小的尺寸。我不知道他们是否在关注 StackOverflow。

关于java - Google Dataflow/Dataprep Shuffle key 太大 (INVALID_ARGUMENT),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49078146/

相关文章:

java - LibGDX 文本不在较小视口(viewport)中居中

java - 初学者android帮助从可运行内部播放音频

tableau-api - 改变过滤器类型

java - 即使我正在传递 View ,"calling sideInput() with unknown view"异常?

google-cloud-dataflow - Google Cloud Dataflow 中的自动缩放功能未按预期运行

google-cloud-dataflow - 更新/刷新侧输入数据或传递一些额外的数据集,这些数据在处理主输入时可以在转换中访问

java - 字符串的高级正则表达式处理

java - 既然 Oracle 不再支持 OpenJDK 8 和 11,Corretto 会发生什么情况?

python - 如何将 pandas 数据框转换为 .tde?

python - 从 Tableau Public 仪表板中抓取数据