我最近在spark工作,遇到了一些我仍然无法解决的问题。
假设我有一个100GB的数据集,集群的ram大小是16GB。
现在,我知道在简单地读取文件并将其保存在HDFS中的情况下,Spark将为每个分区执行它。当我对100GB数据执行排序或聚合转换时会发生什么?它将如何在内存中处理100GB,因为我们需要整个数据来进行排序?
我已经通过下面的链接,但这只告诉我们火花在持久化的情况下做什么,我正在寻找的是火花聚合或对大于ram大小的数据集进行排序。
Spark RDD——分区是否总是在RAM中?
感谢任何帮助。
你需要考虑很多事情。因为您有16RAM和100GB的数据集,所以最好在磁盘中保持持久性。如果数据集具有很高的基数,则可能很难进行聚合。如果基数较低,最好在合并到整个数据集之前在每个RDD上进行聚合。还要记得确保RDD中的每个分区都小于内存(默认值为0.4*container_size)
有两件事你可能想知道。
回答你的问题时,你并不需要像我之前解释的那样,为了对数据进行排序而将数据放入内存中。现在,我鼓励您考虑一种数据聚合算法,将数据按块划分,就像外部排序一样。
我们不确定从这里到哪里去,完全被困住了。有人能帮忙吗?我们到处找了一些例子来帮忙。
我有一个500GB的csv文件和一个1.5 TB数据的mysql数据库,我想运行aws sagemaker分类和回归算法和随机森林。 aws sagemaker能支持吗?模型可以批量或分块读取和训练吗?它的任何例子
我有一个h2数据库文件,文件大小已经增长到5GB。我删除了一些数据以缩小文件的大小。但即使从数据库中删除了一半记录,文件大小仍然保持不变。 我已经尝试了以下所有选项来减少数据库大小,但没有一个对我有用。 我的连接字符串如下所示: 注: 我们正在结清我们已经开始的交易 文件中没有5GB的数据 有人能给我建议一些解决方法或修复方法来减少我的数据库大小吗
我有一个庞大的CA的csv数据集。7GB,它有不同类型的列:string和Float。那么将其导入到Neo4J中的超快解决方案是什么呢? 我也尝试使用neo4j-admin导入工具,但每次我都被以下错误所困扰: Invoke-Neo4jAdmin:c:\users\shafigh.neo4jdesktop\neo4jdatabases\database-417e361b-f273-496c-983
好吧,我对使用Scala/Spark还比较陌生,我想知道是否有一种设计模式可以在流媒体应用程序中使用大量数据帧(几个100k)? 在我的示例中,我有一个SparkStreaming应用程序,其消息负载类似于: 因此,当用户id为123的消息传入时,我需要使用特定于相关用户的SparkSQL拉入一些外部数据,并将其本地缓存,然后执行一些额外的计算,然后将新数据持久保存到数据库中。然后对流外传入的每条
//{this.props.params.item}来自反应路由器(路径('/detail/item/id')) 为什么我的调度是无限循环,直到出错(超过最大调用堆栈大小)