使用scala / spark

时间:2018-10-21 14:53:58

标签: scala apache-spark intellij-idea amazon-s3

如何使用scala / spark从本地计算机上安装的Intellij ide读取Amazon s3存储桶文件?

2 个答案:

答案 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