scala - 无法在本地连接 S3 和 Spark
问题描述
下面是我的代码:我正在尝试从本地 spark 访问 s3 文件。但是出现错误:线程“main”中的异常 org.apache.hadoop.security.AccessControlException:权限被拒绝:s3n://bucketname/folder 我也在使用罐子:hadoop-aws-2.7.3.jar,aws-java- sdk-1.7.4.jar,hadoop-auth-2.7.1.jar,同时从 cmd 提交 spark 作业。
package org.test.snow
import org.apache.spark._
import org.apache.spark.SparkContext._
import org.apache.log4j._
import org.apache.spark.storage.StorageLevel
import org.apache.spark.sql.SparkSession
import org.apache.spark.util.Utils
import org.apache.spark.sql._
import org.apache.hadoop.fs.FileSystem
import org.apache.hadoop.fs.Path
object SnowS3 {
def main(args: Array[String]) {
val conf = new SparkConf().setAppName("IDV4")
val sc = new SparkContext(conf)
val spark = new org.apache.spark.sql.SQLContext(sc)
import spark.implicits._
sc.hadoopConfiguration.set("fs.s3a.impl","org.apache.hadoop.fs.s3native.NativeS3FileSystem")
sc.hadoopConfiguration.set("fs.s3a.awsAccessKeyId", "A*******************A")
sc.hadoopConfiguration.set("fs.s3a.awsSecretAccessKey","A********************A")
val cus_1=spark.read.format("com.databricks.spark.csv")
.option("header","true")
.option("inferSchema","true")
.load("s3a://tb-us-east/working/customer.csv")
cus_1.show()
}
}
任何帮助,将不胜感激。仅供参考:我正在使用火花 2.1
解决方案
你不应该设置那个 fs.s3a.impl 选项;这是一种迷信,似乎在火花例子中持续存在。
而是通过使用 s3a:// 前缀来使用 S3A 连接器
- hadoop-* jar 版本的一致版本。是的,hadoop-aws-2.7.3 需要 hadoop-common-2.7.3
- 设置 s3a 特定的身份验证选项
fs.s3a.access.key
和“fs.s3a.secret.key”
如果这不起作用,请查看s3a 故障排除文档
推荐阅读
- python - if statement only executes else block
- python - 在python中为矩阵赋值
- java - 基于部分嵌套对象的 DynamoDB 条件更新
- codenameone - Codenameone How to detect if device in on wifi or cellular?
- sql-server - SQL Server - 使用虚拟 CSV 调用 REST API
- c# - 按下更新分数按钮时具有完全不同的表格
- compilation - 如何为另一个操作系统编译 ROS2
- python - 如何立即更新用户名而不是重新运行程序
- c# - 在 Windows 窗体设计器中锁定窗体大小
- angular - Angular Jasmine 间谍没有被调用