在Amazon S3上保留RDD

 索马里7_244 发布于 2023-01-06 14:07

我在Amazon S3上有一个包含JSON对象的大文本文件.我计划在Amazon EMR上使用Spark处理这些数据.

这是我的问题:

    如何将包含JSON对象的文本文件加载到Spark中?

    在EMR集群关闭后,是否可以在S3上保留此数据的内部RDD表示?

    如果我能够持久保存RDD表示,下次需要分析相同数据时是否可以直接加载RDD格式的数据?

Abe.. 10

这应该涵盖#1,只要你使用pyspark:

#Configure spark with your S3 access keys
sc._jsc.hadoopConfiguration().set("fs.s3n.awsAccessKeyId", "MY-ACCESS-KEY")
sc._jsc.hadoopConfiguration().set("fs.s3n.awsSecretAccessKey", "MY-SECRET-ACCESS-KEY")

#Retrieve the data
my_data = sc.textFile("s3n://my-bucket-name/my-key")
my_data.count() #Count all rows
my_data.take(20) #Take the first 20 rows

#Parse it
import json
my_data.map(lambda x: json.loads(x)).take(20) #Take the first 20 rows of json-parsed content

注意s3地址s3n://不是s3://.这是hadoop的遗产.

此外,my-key可以指向整个S3目录*.如果您正在使用spark群集,则导入多个中等大小的文件通常比单个大文件快.

对于#2和#3,我建议查找spark的镶木地板支架.您还可以将文本保存回s3:

my_data.map(lambda x: json.dumps(x)).saveAsTextFile('s3://my-bucket-name/my-new-key')

不知道数据集的大小和管道的计算复杂性,我不知道将中间数据存储到S3的哪种方式将最有效地利用您的资源.

*S3没有真正的目录,但你知道我的意思.

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有