【问题标题】:Unable to connect Azure SQL DB in Spark YARN Cluster using Java using azure-activedirectory-library-for-java library无法使用 azure-activedirectory-library-for-java 库使用 Java 连接 Spark YARN 集群中的 Azure SQL DB
【发布时间】:2019-03-11 22:48:56
【问题描述】:

在我们的一个项目中,我们使用的是 Azure SQL DB,身份验证模式是基于访问令牌的。我们正在使用 Spark Java 进行连接。当我们以独立方式运行 Spark 作业时,我们能够连接到 DB,但是当我们在 YARN 模式下运行时,我们无法连接。 我们正在使用库“azure-activedirectory-library-for-java”

我们收到错误:用户登录失败:''。客户端连接ID:

例外: 信息客户: 客户令牌:不适用 诊断:用户类抛出异常:com.microsoft.sqlserver.jdbc.SQLServerException:用户“”登录失败。 ClientConnectionId:2b288e9e-15cc-448a-8210-0d184d27a12b ApplicationMaster主机:172.25.3.7 ApplicationMaster RPC 端口:0 队列:默认 开始时间:1538583454649 最终状态:失败 跟踪网址:

参考资料:

https://github.com/Azure/azure-sqldb-spark

https://docs.microsoft.com/en-us/azure/sql-database/sql-database-spark-connector

提前致谢。

感谢和问候,

-文卡特

下面是异常堆栈跟踪:

18/10/08 10:07:16 WARN SparkSession$Builder:使用现有的 SparkSession;某些配置可能不会生效。 18/10/08 10:07:16 错误 ApplicationMaster:用户类抛出异常:com.microsoft.sqlserver.jdbc.SQLServerException:用户“”登录失败。 ClientConnectionId:8ecbc2ae-cede-4b1d-8eba-f362010f71e6 com.microsoft.sqlserver.jdbc.SQLServerException:用户“”登录失败。 ClientConnectionId:8ecbc2ae-cede-4b1d-8eba-f362010f71e6 在 com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:217) 在 com.microsoft.sqlserver.jdbc.TDSTokenHandler.onEOF(tdsparser.java:251) 在 com.microsoft.sqlserver.jdbc.TDSParser.parse(tdsparser.java:81) 在 com.microsoft.sqlserver.jdbc.SQLServerConnection.sendLogon(SQLServerConnection.java:3077) 在 com.microsoft.sqlserver.jdbc.SQLServerConnection.logon(SQLServerConnection.java:2360) 在 com.microsoft.sqlserver.jdbc.SQLServerConnection.access$100(SQLServerConnection.java:43) 在 com.microsoft.sqlserver.jdbc.SQLServerConnection$LogonCommand.doExecute(SQLServerConnection.java:2346) 在 com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:6276) 在 com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1793) 在 com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1404) 在 com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:1068) 在 com.microsoft.sqlserver.jdbc.SQLServerConnection.connectInternal(SQLServerConnection.java:904) 在 com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:451) 在 com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:1014) 在 org.apache.spark.sql.execution.datasources.jdbc.JdbcUtils$$anonfun$createConnectionFactory$1.apply(JdbcUtils.scala:61) 在 org.apache.spark.sql.execution.datasources.jdbc.JdbcUtils$$anonfun$createConnectionFactory$1.apply(JdbcUtils.scala:52) 在 org.apache.spark.sql.execution.datasources.jdbc.JDBCRDD$.resolveTable(JDBCRDD.scala:58) 在 org.apache.spark.sql.execution.datasources.jdbc.JDBCRelation.(JDBCRelation.scala:114) 在 org.apache.spark.sql.execution.datasources.jdbc.JdbcRelationProvider.createRelation(JdbcRelationProvider.scala:52) 在 org.apache.spark.sql.execution.datasources.DataSource.resolveRelation(DataSource.scala:309) 在 org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:178) 在 org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:146) 在 org.apache.spark.sql.DataFrameReader.jdbc(DataFrameReader.scala:193) 在 com.microsoft.azure.sqldb.spark.connect.DataFrameReaderFunctions.sqlDB(DataFrameReaderFunctions.scala:44) 在 com.sew.data.SQLDBConnectionEngine$.main(SQLDBConnectionEngine.scala:71) 在 com.sew.data.SQLDBConnectionEngine.main(SQLDBConnectionEngine.scala) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:498) 在 org.apache.spark.deploy.yarn.ApplicationMaster$$anon$3.run(ApplicationMaster.scala:646) 18/10/08 10:07:16 INFO ApplicationMaster:最终应用程序状态:FAILED,exitCode:15,(原因:用户类抛出异常:com.microsoft.sqlserver.jdbc.SQLServerException:用户''登录失败。ClientConnectionId: 8ecbc2ae-cede-4b1d-8eba-f362010f71e6) 18/10/08 10:07:16 INFO SparkContext:从关闭挂钩调用 stop() 18/10/08 10:07:16 INFO AbstractConnector: 停止 Spark@683861d4{HTTP/1.1,[http/1.1]}{0.0.0.0:0}

【问题讨论】:

    标签: java apache-spark azure-sql-database azure-active-directory adal


    【解决方案1】:

    问题是Login failed for user ''.,我没有看到登录尝试使用的用户名?

    18/10/08 10:07:16 错误 ApplicationMaster:用户类抛出异常:com.microsoft.sqlserver.jdbc.SQLServerException:用户 '' 登录失败。 ClientConnectionId:8ecbc2ae-cede -4b1d-8eba-f362010f71e6 com.microsoft.sqlserver.jdbc.SQLServerException:用户 '' 登录失败。 com.microsoft.sqlserver.jdbc 上的 ClientConnectionId:8ecbc2ae-cede-4b1d-8eba-f362010f71e6。 SQLServerException.makeFromDatabaseError

    您尝试以什么用户身份连接?是否按照创建 Azure Active Directory 的说明将此标识添加为“包含的数据库用户”:

    Create and populate an Azure AD

    如果上述步骤已正确完成,您可以继续:

    Connecting using Access Token

    设置要求

    如果您使用的是基于访问令牌的身份验证方式,则需要下载azure-activedirectory-library-for-java及其依赖项,并将它们包含在Java构建路径中。

    请参阅Use Azure Active Directory Authentication for authentication with SQL Database,了解如何获取 Azure SQL 数据库的访问令牌。

    【讨论】:

      猜你喜欢
      • 2022-08-19
      • 2021-12-17
      • 2020-05-22
      • 1970-01-01
      • 2019-06-26
      • 2023-03-30
      • 2018-01-05
      • 2019-03-30
      • 1970-01-01
      相关资源
      最近更新 更多