Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

300
Vistas
NoClassDefFoundError com/microsoft/aad/adal4j/AuthenticationException al conectarse a Azure SQL desde GCP

Tengo mi proyecto Spark en data_proc en GCP, y en el envío de Spark, ejecuto el programa del controlador. Cuando intento conectarme a Azure SQL DB, aparece la siguiente excepción:

 20:39:15 DOCKER: Exception in thread "main" java.lang.NoClassDefFoundError: com/microsoft/aad/adal4j/AuthenticationException 20:39:15 DOCKER: at com.microsoft.sqlserver.jdbc.SQLServerConnection.getFedAuthToken(SQLServerConnection.java:3609) 20:39:15 DOCKER: at com.microsoft.sqlserver.jdbc.SQLServerConnection.onFedAuthInfo(SQLServerConnection.java:3580) 20:39:15 DOCKER: at com.microsoft.sqlserver.jdbc.SQLServerConnection.processFedAuthInfo(SQLServerConnection.java:3548) 20:39:15 DOCKER: at com.microsoft.sqlserver.jdbc.TDSTokenHandler.onFedAuthInfo(tdsparser.java:261) 20:39:15 DOCKER: at com.microsoft.sqlserver.jdbc.TDSParser.parse(tdsparser.java:103) 20:39:15 DOCKER: at com.microsoft.sqlserver.jdbc.SQLServerConnection.sendLogon(SQLServerConnection.java:4290) 20:39:15 DOCKER: at com.microsoft.sqlserver.jdbc.SQLServerConnection.logon(SQLServerConnection.java:3157) 20:39:15 DOCKER: at com.microsoft.sqlserver.jdbc.SQLServerConnection.access$100(SQLServerConnection.java:82) 20:39:15 DOCKER: at com.microsoft.sqlserver.jdbc.SQLServerConnection$LogonCommand.doExecute(SQLServerConnection.java:3121) 20:39:15 DOCKER: at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:7151) 20:39:15 DOCKER: at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:2478) 20:39:15 DOCKER: at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:2026) 20:39:15 DOCKER: at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:1687) 20:39:15 DOCKER: at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectInternal(SQLServerConnection.java:1528) 20:39:15 DOCKER: at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:866) 20:39:15 DOCKER: at com.microsoft.sqlserver.jdbc.SQLServerDataSource.getConnectionInternal(SQLServerDataSource.java:968) 20:39:15 DOCKER: at com.microsoft.sqlserver.jdbc.SQLServerDataSource.getConnection(SQLServerDataSource.java:69)

A continuación se muestran las versiones de los componentes:

  • proceso de datos: 1.5
  • adal4j : 1.6.7
  • azure-sqldb-chispa: 1.0.2

La autenticación es a través de Active Directory. Lo mismo funciona en local, pero no en dataproc. Agradezco cualquier ayuda!!

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Parece que estás usando Docker. Si es así, debe asegurarse de que adal4j.jar esté incluido en el contenedor Docker del controlador o que se haya agregado a través del indicador --jars en el comando de envío de Spark:

 gcloud dataproc jobs spark submit \ --cluster-name $CLUSTER_NAME \ . . . \ --jars adal4j.jar

Como referencia, vea cómo administrar las dependencias de Java en Spark: https://cloud.google.com/dataproc/docs/guides/manage-spark-dependencies

over 4 years ago · Santiago Trujillo Denunciar

0

Si empaquetó su código de trabajo como un archivo fat jar con todas sus dependencias y lo envió correctamente a su clúster de Dataproc, e incluso entonces enfrenta el error, una posible razón del problema es que un conflicto de classpath relacionado con el controlador de SQL Server la biblioteca existe en alguna parte. Como también señalé en mi comentario, aunque en un contexto diferente, se informa un comportamiento similar en varios problemas de Github como este o este otro .

Además de intentar eliminar la biblioteca en conflicto, no sé si corresponde a su caso de uso, probablemente no sea un controlador de base de datos, pero tal vez podría intentar reubicar el código de SQL Server en un paquete diferente y usar ese paquete en su lugar.

El enfoque se describe en la documentación de GCP Dataproc , por ejemplo , utilizando el complemento de sombreado de Maven .

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda