首页 > 解决方案 > 如何将 S3 存储桶中的 csv 文件转换为 RDD

问题描述

我对这个主题很陌生,所以任何帮助都将不胜感激。

我试图读取存储在 S3 存储桶中的 csv 文件并将其数据转换为 RDD 以直接使用它,而无需在本地创建文件。

到目前为止,我已经能够使用 AmazonS3ClientBuilder 加载文件,但我唯一要做的就是将文件内容放在 S3ObjectInputStream 中,我无法使用它的内容。

val bucketName = "bucket-name"

val credentials = new BasicAWSCredentials(
   "acessKey",
   "secretKey"
);

val s3client = AmazonS3ClientBuilder
    .standard()
    .withCredentials(new AWSStaticCredentialsProvider(credentials))
    .withRegion(Regions.US_EAST_2)
    .build();

val s3object = s3client.getObject(bucketName, "file-name.csv")
val inputStream = s3object.getObjectContent()
....

我也尝试使用 BufferedSource 来处理它,但是一旦完成,我不知道如何将其转换为数据帧或 RDD 来处理它。

val myData = Source.fromInputStream(inputStream)
....

标签: scalaapache-sparkamazon-s3

解决方案


最后,我能够得到我正在寻找的结果,看看https://gist.github.com/snowindy/d438cb5256f9331f5eec


推荐阅读