我在使用mllib RAnywhere Forest训练数据时出错。由于我的数据集很大,默认分区相对较小。所以抛出一个异常,指示“大小超过整数。MAX_VALUE”,原始堆栈跟踪如下,
15/04/16 14:13:03警告调度程序。TaskSetManager:在6.0阶段(TID 120,10.215.149.47)丢失了Task19.0:java。lang.IllegalArgumentException:大小超过整数。太阳下的最大值
。尼奥。总经理。地图(FileChannelImpl.java:828)位于org。阿帕奇。火花存储DiskStore。在org上获取字节(DiskStore.scala:123)。阿帕奇。火花存储DiskStore。org上的getBytes(DiskStore.scala:132)。阿帕奇。火花存储BlockManager。doGetLocal(BlockManager.scala:517)位于org。阿帕奇。火花存储BlockManager。getLocal(BlockManager.scala:432)位于org。阿帕奇。火花存储BlockManager。在org上获取(BlockManager.scala:618)。阿帕奇。火花缓存管理器。putInBlockManager(CacheManager.scala:146)位于org。阿帕奇。火花缓存管理器。公司经理(ScalCompute:70)
整数。最大大小为2GB,似乎有些分区内存不足。所以我将我的rdd分区重新分区到1000,这样每个分区可以像以前一样容纳更少的数据。问题终于解决了!!!
所以,我的问题是:为什么分区大小有2G限制?火花中似乎没有为限制设置配置
Spark 2.4.0版本通过将块数据复制为流来消除这一限制。详见Spark-24926。
问题是当使用Casandra、HBase或Accumulo等数据存储时,块大小是基于数据存储拆分(可能超过10 gig)。从这些数据存储加载数据时,您必须立即重新分区1000个分区,以便您可以在不超出2gig限制的情况下操作数据。
大多数使用火花的人并没有真正使用大数据;对他们来说,如果excel可以容纳或tableau对他们来说是大数据;大多数数据科学家使用高质量的数据或使用足够小的样本量来处理极限。
在处理大量数据时,我不再需要返回mapreduce,只在数据清理后使用spark。然而,不幸的是,spark社区的大多数人对解决这个问题没有兴趣。
一个简单的解决方案是创建一个抽象并使用字节数组作为默认值;但是,允许使用64位数据指针重载火花作业来处理大型作业。
火花中块的基本抽象是一个ByteBuffer
,不幸的是,它的限制是整数。MAX_VALUE(~2GB)。
这是一个关键问题,它会阻止spark在非常大的数据集上使用。增加分区的数量可以解决这个问题(如OP的情况),但并不总是可行的,例如当存在大量转换链时,部分转换链可能会增加数据(flatMap等),或者在数据倾斜的情况下。
提出的解决方案是提出一个像LargeByteBuffer这样的抽象,它可以支持一个块的字节缓冲区列表。这会影响整个火花架构,所以它很长一段时间都没有解决。
我试图优化两个spark dataframes之间的联接查询,让我们将它们称为df1、df2(在公共列“saleid”上联接)。df1非常小(5M),所以我在spark集群的节点中广播它。df2非常大(200米行),所以我尝试通过“saleid”对它进行桶/重新分区。 例如: 分区: 水桶: 我不知道哪一个是正确的技术使用。谢谢。
问题内容: 我的Java Servlet通过该方法利用了Facebook Graph API 。这已经工作了好几个星期了,但是今天我正在测试的查询的长度比以前的查询要长得多- 大约2300个字符。此查询导致引发错误。 两个小时后,我发现根本原因是App Engine 对要获取的URL的长度(即从您的GAE应用程序到网络上的其他地方)有严格的限制。此外,此问题仅在生产服务器上显现出来,因此在上线之前
本文向大家介绍为什么要有同源限制?相关面试题,主要包含被问及为什么要有同源限制?时的应答技巧和注意事项,需要的朋友参考一下 我们举例说明:比如一个黑客程序,他利用Iframe把真正的银行登录页面嵌到他的页面上,当你使用真实的用户名,密码登录时,他的页面就可以通过Javascript读取到你的表单中input中的内容,这样用户名,密码就轻松到手了。 缺点: 现在网站的JS 都会进行压缩,一些文件用了
问题内容: Python中静态嵌套的块数限制为20。也就是说,嵌套19个循环就可以了(尽管非常耗时;很疯狂),但是嵌套20个循环将失败: 有这样的限制的根本原因是什么?有没有增加限额的方法? 问题答案: 此限制不仅适用于循环,还适用于所有其他控制流程块。嵌套控制流块的数量限制在code.h内部定义,常量为: 此常数用于设置Python用于执行名为的异常和循环的堆栈的最大大小。此限制强加于所有框架对
问题内容: 为什么在JavaScript中被视为? 正在检查 与…相同 ? 并且: 和之间有什么区别? 问题答案: (name is undefined) You: What is name? () JavaScript:* ?什么啊 我不知道你在说什么您以前从未提到过。您是否在(客户端)看到其他脚本语言? You: What is name? JavaScript: I don’t know.。
问题内容: 我在尝试在Eclipse中进行编译的某些Java代码遇到了一些麻烦。我不断收到以下警告… 从这行代码… 我已经找到解决方法,但是我担心限制警告。这段代码是针对我的开源项目(CfTracker)的,如果我要破坏某种许可协议,我不想解决此限制。谁能帮我理解这一点? 问题答案: 这不是许可协议的问题。只是Eclipse试图保护您避免使用不是正式JDK API一部分(而是Oracle / Su