如何使用scala / spark从本地计算机上安装的Intellij ide读取Amazon s3存储桶文件?
答案 0 :(得分:1)
IntelliJ并不重要。重要的是hadoop配置。如果您的hadoop配置具有有关aws的凭据变量,则可以从S3加载DataFrame。 您可以在core-site.xml上设置变量,或者像这样设置spark.hadoopConfiguration的配置方法。
sparkContext.hadoopConfiguration.set("fs.s3n.awsAccessKeyId", "")
sparkContext.hadoopConfiguration.set("fs.s3n.awsSecretAccessKey","")
请注意所使用的s3连接器。有一些连接器,例如s3,s3a,s3n。如果连接器是s3,请设置fs.s3.*
,但是如果连接器是s3n,则应设置fs.s3n.*
答案 1 :(得分:0)
看看下面的Java示例: https://docs.aws.amazon.com/AmazonS3/latest/dev/RetrievingObjectUsingJava.html
在scala中,您可以执行以下操作:
val accessKey = ???
val secretKey = ???
val awsCredentials: BasicAWSCredentials = new BasicAWSCredentials(accessKey, secretKey)
val s3: AmazonS3 = AmazonS3ClientBuilder.standard()
.withCredentials(new AWSStaticCredentialsProvider(awsCredentials))
.build()
val bucketName = "myS3bucket"
val keyName = "path/to/file"
val s3Obj = s3.getObject(bucketName, keyName)
val in = s3Obj.getObjectContent
val reader = new BufferedReader(new InputStreamReader(in))
val data = Stream.continually(reader.read()).takeWhile(_ != -1).map(_.toChar).mkString