无法与s3连接并在本地触发

czfnxgou  于 2021-06-01  发布在  Hadoop
关注(0)|答案(1)|浏览(341)

下面是我的代码:我试图从spark本地访问s3文件。但是获取错误:线程“main”org.apache.hadoop.security.accesscontrolexception中出现异常:权限被拒绝:s3n://bucketname/folder我还在使用jars: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()
    }
}

任何帮助都将不胜感激。仅供参考:我使用的是spark 2.1

kcwpcxri

kcwpcxri1#

不应该设置fs.s3a.impl选项;这是一种迷信,似乎一直存在。
相反,只需使用s3a://前缀
hadoop的一致版本-*jar版本。是的,hadoop-aws-2.7.3需要hadoop-common-2.7.3
设置特定于s3a的认证选项, fs.s3a.access.key 和'fs.s3a.secret.key'
如果这不起作用,请查看s3a故障排除文档

相关问题