我创建了一个包含 Tensorflow 2.11 的虚拟环境。我使用这个虚拟环境的Python作为spark驱动程序和执行程序Python。 venv zip 已作为存档添加到 PySpark 中。我正在从 s3 读取 tf 记录文件并创建一个名为
train_dataset
. 的 tf 数据集
打电话
model.fit
:
history = model.fit(
train_dataset,
epochs=epochs,
steps_per_epoch=train_steps,
validation_data=val_dataset,
validation_steps=val_steps,
callbacks=callbacks
)
抛出以下错误:
File "/home/hadoop/environment/lib/python3.8/site-packages/keras/utils/traceback_utils.py", line 70, in error_handler
raise e.with_traceback(filtered_tb) from None
File "/home/hadoop/environment/lib/python3.8/site-packages/tensorflow/python/eager/execute.py", line 52, in quick_execute
tensors = pywrap_tfe.TFE_Py_Execute(ctx._handle, device_name, op_name,
**tensorflow.python.framework.errors_impl.PermissionDeniedError:
Graph execution error:**
[[{{node MultiDeviceIteratorGetNextFromShard}}]]
[[RemoteCall]]
[[IteratorGetNextAsOptional]] [Op:__inference_train_function_4621]
这是在 EMR 无服务器上运行的,我不确定为什么会弹出权限错误。任何建议/帮助表示赞赏。
从 s3 读取期间出现权限被拒绝错误。我尝试运行以下行并能够重现相同的错误:
import tensorflow as tf; tf.io.read_file("<s3_file_path>")
虽然我无法找出根本原因,但如here所述 在脚本顶部设置以下代码确实解决了问题:
import os; os.environ['S3_DISABLE_MULTI_PART_DOWNLOAD'] = '1'