python - com.amazonaws.AmazonClientException:无法执行 HTTP 请求:不知道这样的主机(spark-tunes.s3a.ap-south-1.amazonaws.com)
问题描述
我正在尝试通过pycharm以本地模式从spark中读取存储在S3存储桶中的json文件。但我收到以下错误消息:
“py4j.protocol.Py4JJavaError:调用 o37.json 时出错。:com.amazonaws.AmazonClientException:无法执行 HTTP 请求:不知道这样的主机(spark-tunes.s3a.ap-south-1.amazonaws.com )"
(spark-tunes 是我的 S3 存储桶名称)。
下面是我执行的代码。请帮助我知道我是否遗漏了什么。
spark = SparkSession.builder.appName('DF Read').config('spark.master', 'local').getOrCreate()
spark._jsc.hadoopConfiguration().set("fs.s3a.access.key", "access_key")
spark._jsc.hadoopConfiguration().set("fs.s3a.secret.key", "secret_key")
spark._jsc.hadoopConfiguration().set("fs.s3a.endpoint", "s3a.ap-south-1.amazonaws.com")
spark._jsc.hadoopConfiguration().set("com.amazonaws.services.s3a.enableV4", "true")
spark._jsc.hadoopConfiguration().set("fs.s3a.impl", "org.apache.hadoop.fs.s3a.S3AFileSystem")
df = spark.read.json("s3a://bucket-name/folder_name/*.json")
df.show(5)
解决方案
尝试将 fs.s3a.path.style.access 设置为 false,而不是将存储桶名称作为主机的前缀,aws s3 客户端将使用端点下的路径
另外:删除 fs.s3a.impl 行。那是通过堆栈溢出示例传递的迷信。这不是必需的。真的。
推荐阅读
- python - Python 将 lambda 函数应用于 csv 文件(大文件)
- c# - 使用 Vector3.up 让玩家进行超过 1 次跳跃
- javascript - 通过单击按钮将 mp3 作为 blob 发送
- json - 将具有模板 JSON 数据的 JObject 转换为 XAML
- javascript - 随机 - 为测验中的错误答案添加偏见(javascript)
- r - 在ggplot中为直方图添加边框
- javascript - stopPropagation() 是否从捕获阶段停止执行事件?
- java - JAVA构造函数不接受枚举值
- django - “运行 manage.py 任务”和 .env 文件环境变量
- javascript - 如何在应用内禁用 Chrome 节流后台选项卡?