Amazon EMR
Amazon EMR 版本指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

使用 Amazon EMR 项目存储库检查依赖项

您可以使用 Amazon EMR 项目存储库构建针对特定 Amazon EMR 发布版(从 Amazon EMR 发布版 5.18.0 开始)附带的准确版本的库和依赖项的 Apache Hive 和 Apache Hadoop 任务代码。针对存储库中的 Amazon EMR 项目进行构建可确保针对其创建任务的库的版本是在集群上运行时提供的相同版本,从而帮助避免运行时类路径问题。目前,Amazon EMR 项目仅适用于 Maven 构建。

要访问项目存储库,请将存储库 URL 添加到 Maven 设置文件或特定项目的 pom.xml 配置文件。之后,您可以在项目配置中指定依赖项。对于依赖项版本,对Amazon EMR 5.x 发布版本上的所需发行版使用 Component Versions (组件版本) 下列出的版本。例如,组件版本上提供了最新 Amazon EMR 发行版的组件版本。如果项目的构件未在 Component Versions (组件版本) 下列出,请指定为该发行版中的 Hive 和 Hadoop 列出的版本。例如,对于 Amazon EMR 发行版 5.18.0 中的 Hadoop 组件,版本为 2.8.4-amzn-1

项目存储库 URL 具有以下语法:

https://s3-endpoint/region-ID-emr-artifacts/emr-release-label/repos/maven/
  • s3-endpoint 是存储库的区域的 Amazon Simple Storage Service (Amazon S3) 终端节点,region-ID 是相应的区域。例如,s3.us-west-1.amazonaws.comus-west-1。有关更多信息,请参阅 Amazon Web Services 一般参考中的 Amazon S3 终端节点。由于区域之间的项目不存在差异,因此,您可以为开发环境指定最方便的区域。

  • emr-release-label 是将运行代码的 Amazon EMR 集群的发行版标签。版本标签的格式是 emr-x.x.x,例如 emr-5.27.0。一个 EMR 版本系列可能包含多个版本。例如,如果您使用的是 EMR 发行版 5.24.1,请在构件存储库 URL 中使用 5.24 系列中的第一个 EMR 版本标签,即 emr-5.24.0

    https://s3-endpoint/region-ID-emr-artifacts/emr-5.24.0/repos/maven/

例 Maven pom.xml 的配置

以下 pom.xml 示例配置 Maven 项目以使用 us-west-1 中的项目存储库针对 emr-5.18.0 Apache Hadoop 和 Apache Hive 项目进行构建。由于快照版本在项目存储库中不可用,因此已在 pom.xml 中禁用快照。以下示例中的省略号 (...) 指示忽略其他配置参数。请勿将它们复制到 Maven 项目。

<project> ... <repositories> ... <repository> <id>emr-5.18.0-artifacts</id> <name>EMR 5.18.0 Releases Repository</name> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> <url>https://s3.us-west-1.amazonaws.com/us-west-1-emr-artifacts/emr-5.18.0/repos/maven/</url> </repository> ... </repositories> ... <dependencies> ... <dependency> <groupId>org.apache.hive</groupId> <artifactId>hive-exec</artifactId> <version>2.3.3-amzn-2</version> </dependency> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-common</artifactId> <version>2.8.4-amzn-1</version> </dependency> ... </dependencies> </project>