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)
...
我得到了几次配额的增加,虽然这让作业比以前继续,但它仍然以相同的错误结束(尽管shuffle键的大小更大了)它现在似乎没有因为配额相关问题而碰壁。
除了放弃Dataprep和回到map Reduce之外,还有什么想法吗?
我试图实现一个函数,我使用实现了它,该函数运行良好,但用于并行化。我正在将函数转换为可拆分的Do函数。我使用在本地运行了一个包含5000个元素的单元测试,而在DataFlow中运行了相同的单元测试,但失败了,错误如下。 下面给出了本地DirectRunner和云数据流运行器之间的数据差异。 本地中的DirectRunner: 在示例输入PCollection元素中有5000个ABC 云中的Data
大多数纸牌游戏都需要洗牌,也就是让纸牌随机排列。在第10.5节,我们看到了怎样生成随机数,但怎样利用随机数实现洗牌功能却并非显然意见的。 一种可行的方案是,模拟人洗牌的方法,将牌分为两堆,然后通过在每个牌堆中轮流选择的方式实现原牌堆的重新组织。因为一般而言,人并不能做到完美地洗牌,而程序经过大约7次迭代之后,牌堆中纸牌的顺序已经相当随机了。但是计算机程序每次在做完美洗牌的时候有一个令人讨厌的属性—
在第13.6节我们编写了一个洗牌算法的伪代码。假设shuffleDeck函数实现洗牌功能,其参数为一个牌堆,我们就可以这样创建牌堆并洗牌: Deck deck; // 创建一个标准的52张牌的牌堆 deck.shuffle (); // 洗牌 然后,使用subdeck函数来分几手牌: Deck hand1 = deck.subdeck (0, 4); Deck hand2 = dec
问题内容: 我想知道,是否有某种方法可以在mysql / sql中改组字符串的字母,即类似 伪代码的内容 :? 从http://dev.mysql.com/doc/refman/5.0/en/string- functions.html 找不到任何内容,对其进行搜索似乎只是找到改组结果的解决方案,而不是字符串。 问题答案: 干得好: 有关输出,请参见sqlfiddle.com。 已使用mariad
我有以下数据帧: 数据帧是从csv文件中读取的。所有类型为1的行都位于顶部,后面是类型为2的行,后面是类型为3的行,以此类推。 我想改变数据帧行的顺序,这样所有的都是混合的。一个可能的结果可能是: 我怎样才能做到这一点?
Reference 关于乱序(shuffle)与随机采样(sample)的一点探究 - xybaby - 博客园 洗牌算法 Fisher–Yates shuffle - Wikipedia Knuth-Durstenfeld Shuffle(Fisher–Yates Shuffle 改进版) Knuth-Durstenfeld Shuffle 是一个“原地”(in-place)算法 伪代码 To