python - 尝试写入 S3 时,Docker 容器中的 Spark 返回“任何本地目录中没有可用空间”
问题描述
我在 SO 上发现了类似的问题,但建议的答案似乎都不适合我的用例——因为它们不起作用。我也是 Spark 的新手,所以请多多包涵。
我正在使用 Jupyter Notebooks 作为开发环境运行基于此映像的 Docker 容器,因此我可以在本地运行 PySpark/Glue 作业,而无需使用 AWS。我已经使用这个容器大约 10 个月了,没有任何问题 - 直到现在。
当我尝试运行此代码以简单地将 CSV 文件转换为 Parquet 时:
from awsglue.transforms import *
from pyspark.context import SparkContext
from awsglue.context import GlueContext
from awsglue.job import Job
sc = SparkContext.getOrCreate()
glueContext = GlueContext(sc)
spark = glueContext.spark_session
job = Job(glueContext)
source = glueContext.create_dynamic_frame_from_options(
connection_type='s3',
connection_options = {
'paths': ['s3://datalake_bucket/source/file.csv']
},
format='csv',
format_options={
'separator': '|',
'encoding': 'utf-16'},
transformation_ctx = ''
)
glueContext.write_dynamic_frame_from_options(frame = source,
connection_type = 's3',
connection_options = {
'path': 's3://datalake_bucket/stage'
},
format = 'parquet',
format_options={
'compression': 'gzip'
},
transformation_ctx = '')
我收到以下错误(如果需要,可以发布完整的堆栈跟踪):
由于阶段故障而中止作业:阶段 1.0 中的任务 0 失败 1 次,最近一次失败:阶段 1.0 中丢失任务 0.0(TID 1,本地主机,执行程序驱动程序):org.apache.hadoop.util.DiskChecker$DiskErrorException:没有空间可在任何本地目录中使用。
我的本地磁盘上有足够的空间,我已经清除了 /tmp,其中有大约 46k 文件 - 但错误仍然存在。
所以我的问题是,这个错误指的是什么“本地目录”,我如何才能将其追溯到发生空间不足的地方并解决问题?
解决方案
推荐阅读
- javascript - 防止处理程序在 vuejs 中重叠
- python - 如何标记 csv 文件数据集?
- python - ValueError:通过了 9 列,传递的数据有 3 列
- php - Laravel 在不可为空的字段中插入 0 并且没有默认值
- r - 多次检查 tryCatch
- c++ - 在 SFML 中的按钮顶部居中文本
- javascript - Socket 不能从外部网络工作(PHP+JS+Apache+SSL+Linux)
- html - 仅显示第一行文本,然后在 safari 和 firefox 上省略
- c++ - 无法从不同的文件夹添加 CodeQL 库:“无法解析模块
" - icap - 如何向 C-ICAP 服务器发送 POST 请求?