我计划使用Spark来处理数据,其中RDD或数据帧中的每个单独元素/行有时可能很大(高达几GB)。
数据可能会存储在HDFS中的Avro文件中。
显然,每个执行程序都必须有足够的RAM来在内存中保存这些“胖行”中的一个,并留出一些。
但是,Spark/HDFS或常见序列化格式(Avro、拼花、序列文件…)的行大小是否有其他限制?例如,这些格式中的单个条目/行能否比HDFS块大小大得多?
我知道HBase和Cassandra的公开限制,但不是Spark。。。
目前,对于正在使用的分区和随机块,与块大小相关的一些基本限制都被限制为2GB,这是字节缓冲区的最大大小(因为它需要int
索引,所以被限制为Integer.MAX_VALUE
字节)。
单个行的最大大小通常需要比最大块大小小得多,因为每个分区通常包含许多行,并且最大的行可能不会在分区之间均匀分布-如果一个分区偶然包含异常多的大行,这可能会使其超过2GB限制,从而使作业崩溃。
见:
这些Spark问题的相关Jira门票:
我试图运行火花作业,基本上加载数据在卡桑德拉表。但它也产生了以下错误。
问题内容: 我在詹金斯中可以同时运行的最大作业数是多少? 问题答案: Jenkins作业的最大数量取决于您在主服务器和从服务器中设置的限制。通常,我们会限制核心数量,但是您的里程可能会因可用内存,磁盘速度,SSD的可用性以及源代码的重叠而有所不同。 对于主服务器,这是在“管理詹金斯”>“配置系统”>“执行者数量”中设置的 对于从属(节点),它是在Manage Jenkins>节点>(每个节点)>配
我试图用位于S3上的输入文件创建一个Amazon Transbe作业,该文件的大小是4.3GB,当我试图创建作业时,会显示这个错误。 我可以用我的视频做什么?我应该转换视频,提取音频,还是有什么方法可以用一些AWS服务来做
在一个14节点的Google Dataproc集群中,我有大约600万个名字,它们被两个不同的系统转换为ID:和。每个包含、和。我的目标是生成从到的映射,以便对于每个,对应的是附加到的所有名称中最常见的id。 让我们试着用一个例子来澄清一下。如果我有以下行: 我的目标是生成从到的映射。实际上,与关联的名称是、和,它们分别映射到、,因此是与关联的名称中最常见的映射。同样,将映射到。假设总会有赢家是可
我使用了以下格式的输入数据: 我已经使用以下代码段使用多线程将RDD保存为文本文件: 在本例中,我遇到了以下例外情况
我正在尝试获取给定数组中的最大元素,以下是要求: > var obj={key:[1,2,4]}; 有人能给我解释一下为什么当我把 在IF函数的末尾,我得到了错误:如果属性不存在,应该返回未定义。但是当我把它放在IF函数的开头时,它毫无问题地通过了。