You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PySpark在AWS SageMaker中执行filter后show报400错误求助

AWS SageMaker PySpark过滤后show DataFrame报400错误(Session isn't active)解决建议

问题背景

环境信息

  • Python版本:3.7.6
  • PySpark版本:'2.4.5-amzn-0'
  • SageMaker Notebook实例:ml.t2.2xlarge

EMR集群配置

{"classification":"livy-conf","properties":{"livy.server.session.timeout":"5h"}},
{"classification":"spark-defaults","properties":{"spark.driver.memory":"20G"}}

操作与错误现象

数据清理缩减后,执行以下代码可正常返回结果:

print(df.count(), len(df.columns))
print(df.show())

返回结果:

(1642, 9)

 stock     date     time   spread  time_diff    ...
  VOD      01-01    9:05    0.01     1132       ...
  VOD      01-01    9:12    0.03     465        ...
  VOD      01-02   10:04    0.02     245
  VOD      01-02   10:15    0.01     364     
  VOD      01-02   10:04    0.02     12

但执行过滤操作后调用show()时报错:

new_df= df.filter(f.col('time_diff')<= 1800)
new_df.show()

错误信息:

An error was encountered:
Invalid status code '400' from http://11.146.133.8:8990/sessions/34/statements/8 with error payload: {"msg":"requirement failed: Session isn't active."}

解决建议

  • 调整Livy会话相关配置
    已设置livy.server.session.timeout=5h,可补充配置livy.server.session.timeout-check-interval(例如设为10m),确保会话超时检查机制正常运作。同时检查livy.server.max-sessions参数,避免因会话数上限导致现有会话被强制回收。

  • 优化Spark资源配置
    增加spark.driver.cores配置(对应ml.t2.2xlarge实例可设为4),提升驱动节点的处理能力;同时设置spark.driver.maxResultSize(例如设为10G),避免结果集过大导致驱动内存溢出进而断开会话。

  • 验证网络连通性
    确认SageMaker Notebook实例的安全组允许访问EMR集群的8990端口(Livy服务端口),EMR集群的安全组也需开放来自Notebook实例的入站流量。

  • 重启Livy会话
    在SageMaker Notebook中关闭当前Spark会话,重新连接EMR集群,清除会话可能存在的异常状态。

  • 优化DataFrame操作方式
    尝试用new_df.take(10)或new_df.show(10, truncate=False)替代直接调用show(),减少单次返回的数据量,降低会话传输压力。

  • 检查EMR集群资源状态
    登录EMR集群控制台,查看驱动节点的CPU、内存使用率,确认是否因资源耗尽导致会话终止。若存在资源瓶颈,可升级驱动节点实例类型或增加执行器数量。

内容的提问来源于stack exchange,提问作者FlyUFalcon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 18:27:28