当前位置: 首页 > 知识库问答 >
问题:

如何克服AWS胶水作业中的Spark“设备上没有空间”错误

彭宏义
2023-03-14

我曾将AWS Glue作业与PySpark一起使用,从超过10 TB的s3拼花文件中读取数据,但该作业在执行Spark SQL查询时失败,出现了错误

java.io.IOException: No space left on the device

经过分析,我发现AWS Glue工人G1. x有4个vCPU、16 GB内存、64 GB磁盘。所以我们试图增加工作人员的数量

即使在将粘合工人的数量(G1.X)增加到50个之后,粘合作业仍会继续失败,并出现相同的错误。

有没有办法将Spark本地临时目录配置为s3而不是本地文件系统?或者我们可以在胶水工上安装EBS卷。

我尝试在Spark会话构建器中配置属性,但Spark仍然使用本地tmp目录

SparkSession.builder.appName("app").config("spark.local.dir", "s3a://s3bucket/temp").getOrCreate()

共有3个答案

陈业
2023-03-14

文档说明spark。地方的dir仅用于指定本地目录。

此错误可以通过修改日志记录属性来解决,或者根据使用的集群管理器,集群管理器属性,例如此答案中的yarn。

刘泰
2023-03-14

根据错误消息,在写入DynamicFrame时,粘合作业似乎磁盘空间不足。如您所知,Spark将对某些操作执行随机洗牌,并将结果写入磁盘。当洗牌太大时,作业将失败

有2个选项可以考虑。

>

  • 将您的辅助角色类型升级到G.2X和/或增加辅助角色的数量。

    使用S3[1]实现AWS Glue Spark Shuffle管理器。要实现此选项,您需要降级到Glue 2.0版。Glue Spark shuffle管理器会将随机文件和随机溢出数据写入S3,从而降低您的作业运行内存溢出和失败的可能性。请添加以下附加作业参数。您可以通过以下步骤执行此操作:

    • 打开胶水控制台中的“作业”选项卡
    • 键:---write-shuffle-files-to-s3值:true

    记住更换三角支架

  • 谷梁存
    2023-03-14

    正如@Prajappati所言,有几种解决方案。

    aws博客中详细介绍了这些解决方案,该博客介绍了s3随机播放功能。我打算对洗牌配置进行调整,因为它不太可靠。因此,基本上,您可以:

    >

  • 垂直扩展,增加机器的大小(即从G.1X到G.2X),这会增加成本。

    分解计算和存储:在这种情况下,这意味着使用s3作为溢出和洗牌的存储服务。

    写入时,要配置此分解,必须使用以下设置配置作业:

    • 胶水2.0发动机

  •  类似资料:
    • 我在ec2集群上运行一个pyspark作业,有4个工作人员。我得到这个错误: 尝试增加洗牌分区-同样的问题。我的数据在执行器中的分区看起来相当均匀。我想尝试将Null或None分配给dataframes的变通方法,问题是它是否真的会移除中间洗牌文件,以及linage是否会被保留。 例如,如果我的代码如下所示: 我会把

    • Ubuntu 14.04 MongoDB shell版本:2.4.9 在OpenStack Kilo中备份mongodb用于测高仪。后退过程中没有空格错误。部分回档在哪里?删除什么文件才能删除部分备份文件。如何恢复失败备份占用的空间?

    • 我正在使用AWS Glue爬行器来爬行大约170 GB的avro数据,以创建一个数据目录表。 avro数据中有几个不同的模式版本,但爬虫程序仍然能够将数据合并到一个表中(我启用了“按数据兼容性和模式相似性分组-模式”)。 这就是事情出现问题的时候。 我只能使用雅典娜从 一个简短的Google检查让我相信这与avro文件中的模式有关。 通常,这是我集中精力的地方,但是:我已经能够做完全相同的程序(A

    • 当我处理掉所有的图像和容器时,它确实释放了一些空间,图像构建运行了更长时间,然后以同样的错误失败。所以问题是,这是指哪个空间,我如何配置它?

    • 我每天都有csv文件被传递到S3,这些文件在当月是增量的。所以file1包含第1天的数据,file2包含第1天和第2天的数据,等等。每天我都想对该数据运行一个ETL并将其写入不同的S3位置,这样我就可以使用Athena查询它,而不会出现重复的行。本质上,我只想查询聚合数据的最新状态(这只是最近交付给S3的文件的内容)。 我认为书签不会起作用,因为增量交付包含以前文件中的数据,因此会产生重复。我知道

    • 问题内容: 当我尝试将某些文件保存到centos计算机上时,出现错误“设备上没有剩余空间” 我试过了 当我这样做 ->只有5G 似乎文件系统已满。我怎么能找到哪一个尺寸这么大? 问题答案: 和的输出之间的这种差异可能会在某些大文件已被删除但仍由某些进程打开的情况下发生。检查命令以查看哪些进程已打开描述符以删除文件。您可以重新启动该过程,空间将被释放。