这个错误通常发生在 AWS Glue 作业中,原因是 AWS Glue 服务器无法访问您的数据源。解决该问题的一种方法是在 IAM 中配置适当的权限和策略,以确保 AWS Glue 可以访问您的数据源。另一个可能的解决方法是在 AWS Glue 作业脚本中添加代理设置。以下是一个使用代理设置解决 AWS Glue 的示例代码:
import os
import sys
from awsglue.utils import getResolvedOptions
from pyspark.context import SparkContext
from awsglue.context import GlueContext
myargs = getResolvedOptions(sys.argv, ['JOB_NAME'])
sc = SparkContext()
glueContext = GlueContext(sc)
_HTTP_PROXY = os.environ.get("HTTP_PROXY")
_HTTPS_PROXY = os.environ.get("HTTPS_PROXY")
if _HTTP_PROXY:
print("Setting HTTP_PROXY")
os.environ['PYSPARK_SUBMIT_ARGS'] = \
'--conf spark.driver.extraJavaOptions=-Dhttp.proxyHost={0} -Dhttp.proxyPort=80 \
--conf spark.executor.extraJavaOptions=-Dhttp.proxyHost={0} -Dhttp.proxyPort=80 \
pyspark-shell'.format(_HTTP_PROXY)
if _HTTPS_PROXY:
print("Setting HTTPS_PROXY")
os.environ['PYSPARK_SUBMIT_ARGS'] = \
'--conf spark.driver.extraJavaOptions=-Dhttps.proxyHost={0} -Dhttps.proxyPort=443 \
--conf spark.executor.extraJavaOptions=-Dhttps.proxyHost={0} -Dhttps.proxyPort=443 \
pyspark-shell'.format(_HTTPS_PROXY)
## 此处为 AWS Glue 作业代码
...
在以上代码中,我们检查了是否在环境变量中设置了代理,如果设置了,我们将相应的代理设置添加到了 PySpark 的命令行参数中。这将使 PySpark 在运行期间使用代理配置访问 AWS Glue 服务器。