es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

spark-submit no detecta el archivo jar mysql-connector.

Tal vez alguien conozca una forma más sencilla de hacer esto. Estoy ejecutando un clúster EMR (6.x) (1 Master, 1 Slave) con Spark (3.x). Estoy intentando escribir algunos datos en MySQL RDS con un trabajo de Spark.

Obtengo este error:
Tengo que mencionar que no he instalado el jar en el master. ¿Cómo puedo hacer eso si tengo el jar en un bucket de S3?

spark-submit --jars s3://s3-bucket-jar-assignment/mysql-connector-java-8.0.25.jar s3://s3-bucket-scripts-assignment/scripts/pyspark_script.py
SLF4J: La ruta de clase contiene múltiples vinculaciones de SLF4J.
SLF4J: Se encontró una vinculación en [jar:file:/usr/lib/spark/jars/slf4j-log4j12-1.7.30.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Se encontró una vinculación en [jar:file:/usr/share/aws/emr/emrfs/lib/slf4j-log4j12-1.7.12.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Se encontró una vinculación en [jar:file:/usr/share/aws/redshift/jdbc/redshift-jdbc42-1.2.37.1061.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Consulte http://www.slf4j.org/codes.html#multiple_bindings para obtener una explicación.
SLF4J: La vinculación actual es de tipo [org.slf4j.impl.Log4jLoggerFactory]
  Archivo "/mnt/tmp/spark-079b5158-31f7-419b-9877-0e557b9aa612/pyspark_script.py", línea 11
    .config(conf=SparkConf()).getOrCreate()
    ^
IndentationError: indentación inesperada
21/12/18 20:58:16 INFO ShutdownHookManager: Se llamó al gancho de apagado
21/12/18 20:58:16 INFO ShutdownHookManager: Eliminando el directorio /mnt/tmp/spark-079b5158-31f7-419b-9877-0e557b9aa612
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error parece estar relacionado con un problema de enlace de SLF4J y un error de indentación de Python en la línea 11 del script enviado. Sin embargo, la pregunta es cómo instalar un archivo jar desde un bucket de S3 al maestro de EMR.

    Una posible solución para instalar el archivo jar del conector de MySQL desde el bucket de S3 al maestro de EMR es utilizar el comando AWS CLI aws s3 cp para copiar el archivo jar desde el bucket de S3 a un directorio local en el maestro de EMR, y luego utilizar la opción --jars con el comando spark-submit para especificar la ruta local del archivo jar.

    Por ejemplo, el siguiente comando AWS CLI se puede utilizar para copiar el archivo jar desde el bucket de S3 al directorio ~/jars en el maestro de EMR:

    aws s3 cp s3://s3-bucket-jar-assignment/mysql-connector-java-8.0.25.jar ~/jars/
    

    Luego, el comando spark-submit se puede modificar para incluir la opción --jars y especificar la ruta del archivo jar en el maestro de EMR:

    spark-submit --jars ~/jars/mysql-connector-java-8.0.25.jar s3://s3-bucket-scripts-assignment/scripts/pyspark_script.py
    

    Al proporcionar la ruta correcta al archivo jar del conector de MySQL, el error debería resolverse y el trabajo de Spark debería poder escribir datos en el RDS de MySQL.

Comments are closed.