Comprobación de dependencias mediante el repositorio de artefactos de Amazon EMR
Puede utilizar el repositorio de artefactos de Amazon EMR para compilar el código de trabajos de Apache Hive y Apache Hadoop con las versiones exactas de las bibliotecas y dependencias que están disponibles con determinadas versiones de Amazon EMR, a partir de la versión 5.18.0 de Amazon EMR. La compilación con los artefactos de Amazon EMR del repositorio ayuda a evitar problemas de rutas de clases en tiempo de ejecución al asegurarse de que las versiones de las bibliotecas con las que se ha compilado el trabajo son exactamente las mismas versiones proporcionadas en el clúster durante el tiempo de ejecución. En la actualidad, los artefactos de Amazon EMR solo están disponibles para las compilaciones de Maven.
Para obtener acceso al repositorio de artefactos, añada la URL del repositorio al archivo de configuración de Maven o al archivo de configuración pom.xml
de un proyecto específico. A continuación, puede especificar las dependencias en la configuración del proyecto. Para las versiones de las dependencias, utilice la versión que se indica en la sección Versiones de los componentes para la versión que desee en Versiones de lanzamiento de Amazon EMR 5.x. Por ejemplo, las versiones de los componentes para la versión más reciente de Amazon EMR están disponibles en Versiones de los componentes de la versión 5.36.2. Si un artefacto de un proyecto no aparece en la lista de la sección Versiones de los componentes, especifique la versión que se muestra para Hive y Hadoop en esa versión. Por ejemplo, en el caso de los componentes de Hadoop en Amazon EMR versión 5.18.0, la versión es 2.8.4-amzn-1
.
La URL del repositorio de artefactos tiene la siguiente sintaxis:
https://
s3-endpoint
/region-ID
-emr-artifacts/emr-release-label
/repos/maven/
s3-endpoint
es el punto de conexión de Amazon Simple Storage Service (Amazon S3) de la región del repositorio yregion-ID
es la región correspondiente. Por ejemplo,s3.us-west-1.amazonaws.com
yus-west-1
. Para obtener más información, consulte Puntos de conexión para Amazon S3 en Referencia general de Amazon Web Services. No hay diferencia en los artefactos entre regiones, por lo que puede especificar la región que le resulte más cómoda para su entorno de desarrollo.emr-release-label
es la etiqueta de versión del clúster de Amazon EMR en el que se ejecutará el código. Las etiquetas de versión tienen el formatoemr-
, comox.x.x
emr-5.36.2
. Una serie de versiones de EMR puede incluir varias versiones. Por ejemplo, si utiliza la versión 5.24.1 de EMR, utilice la primera etiqueta de versión de EMR dentro de la serie 5.24emr-5.24.0
, en la URL del repositorio de artefactos:https://
s3-endpoint
/region-ID
-emr-artifacts/emr-5.24.0
/repos/maven/
ejemplo Configuración de pom.xml para Maven
El siguiente archivo pom.xml de ejemplo configura un proyecto Maven para que se compile con los artefactos de Apache Hadoop y Apache Hive de emr-5.18.0, utilizando el repositorio de artefactos de us-west-1. Las versiones de las instantáneas no están disponibles en el repositorio de artefactos, por lo que las instantáneas están deshabilitadas en el archivo pom.xml. Los puntos suspensivos (...
) del siguiente ejemplo indican la omisión de otros parámetros de configuración. No los copie en su proyecto de 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>