首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Amazon EMR S3A支持

Amazon EMR S3A支持
EN

Stack Overflow用户
提问于 2018-07-31 03:16:59
回答 2查看 1.9K关注 0票数 0

Amazon EMR does not currently support use of the Apache Hadoop S3A file system, The s3a:// URI is not compatible with Amazon EMR说:我和Spark一起开发了Amazon EMR,基于亚马逊(https://aws.amazon.com/premiumsupport/knowledge-center/emr-file-system-s3/)的这篇文档。

但是,我可以使用"s3a://“在spark作业中进行读写,而不会出现问题。(注意:我使用的是"com.amazonaws" % "aws-java-sdk-s3" % "1.11.286",EMR版本是emr-5.11.0)。我做了一些搜索,但仍然发现自己对当前建议与EMR一起使用的文件系统感到困惑。

任何帮助都将不胜感激。

EN

回答 2

Stack Overflow用户

发布于 2018-07-31 05:00:33

编辑:忘记说明这一点,但这是使用Spark版本2.3.0构建的。

AWS EMR有三个可用于Spark s3a、s3e和s3的策略。s3a和s3e是相对较旧的策略,用于连接到可以在亚马逊网络服务内外使用的环境。然而,s3是专门为连接到s3的AWS EMR构建的策略。通过测试,我发现使用s3策略的读写速度更快,而且与其他策略不同的是,您不需要传递用户/密码/密钥/库。唯一需要的是,当spark shell处于活动状态时,VPC或其他环境中的用户可以访问存储桶和spark。下面是使用S3进行读写的方法:

代码语言:javascript
复制
spark-shell
///In this case I am reading a csv from a bucket called myBucket into the environment
val inputDF = spark.read.format("csv").option("header","true").load("s3://myBucket/fooBar.csv")
///I am then writing that file back out using the s3 policy back to the environment
inputDF.write.format("csv").save("s3://myBucket/ODS/")

从spark读取加载时,你会看到最大的问题是partitions,这意味着在读取之前,Spark决定在object元素上拥有多少部分文件。如果您希望提高读写速度,则可能需要考虑实现重新分区策略。

导入org.apache.spark.util.SizeEstimator

代码语言:javascript
复制
val inputDF2 : Long = SizeEstimator.estimate(inputDF.rdd)
//find its appropiate number of partitions
val numPartitions : Long = (inputDF2/134217728) + 1
//write it out with that many partitions
val outputDF = inputDF.repartition(numPartitions.toInt)
票数 3
EN

Stack Overflow用户

发布于 2019-11-13 02:22:42

"s3a“是Apache Hadoop的一部分,因此在电子病历中仍然可用。

电子病历中推荐的s3客户端是EMRFS,因此您仍然可以使用s3a (Apache Hadoop)或s3/s3n (EMRFS)。最后一种有它自己的优势,比如一致的观点。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51600859

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档