Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

295
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!