![](/img/trans.png)
[英]ClassCast Exception Encountered When Trying To Connect To Delta Lake From Spark K8s Operator
[英]ADAL4J javax mail parse exception when trying to connect to Azure SQL DB from Spark Submit
我正在嘗試使用 Azure SQL 數據庫庫 ( GitHub ) 的 Spark 連接器從 Spark 獲取數據並將其批量插入到 Azure 數據庫中。 我正在嘗試使用“ActiveDirectoryPassword”作為身份驗證方法,但 adal4j 總是拋出一個 AuthenticationException 異常,指出拋出了 javax.mail.internet.ParseException。
我正在構建一個包含所有庫的胖 jar 並使用 spark-submit 運行它。
Azure 組織有一個自定義域。
對於我嘗試過的用戶配置選項:
當我將該字段留空時,它會引發用戶名為空的錯誤。
我可以使用該用戶通過 Azure Active Directory 登錄到 Azure Data Studio。
這是我用來加載數據的片段:
val config = Config(Map(
"url" -> "myDB.database.windows.net",
"databaseName" -> "DatabaseName",
"user" -> "myUser@myDomain.com",
"password" -> "****",
"authentication" -> "ActiveDirectoryPassword",
"encrypt" -> "true",
"trustServerCertificate" -> "false",
"hostNameInCertificate" -> "myDB.database.windows.net",
"dbTable" -> "test.testing",
"bulkCopyBatchSize" -> "2500",
"bulkCopyTableLock" -> "true",
"bulkCopyTimeout" -> "600"
))
val session = SparkSession.builder.appName("App").enableHiveSupport.getOrCreate
val sqlContext = session.sqlContext
val df = sqlContext.sql(s"SELECT * FROM myTable")
df.bulkCopyToSqlDB(config)
在這里拋出的異常:
com.microsoft.sqlserver.jdbc.SQLServerException: Failed to authenticate the user myUser@myDomain.com in Active Directory (Authentication=ActiveDirectoryPassword).
at com.microsoft.sqlserver.jdbc.SQLServerADAL4JUtils.getSqlFedAuthToken(SQLServerADAL4JUtils.java:62)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.getFedAuthToken(SQLServerConnection.java:4264)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.onFedAuthInfo(SQLServerConnection.java:4237)
......Truncated for readability......
at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
Caused by: java.util.concurrent.ExecutionException: com.microsoft.aad.adal4j.AuthenticationException: javax/mail/internet/ParseException
at com.microsoft.sqlserver.jdbc.SQLServerADAL4JUtils.getSqlFedAuthToken(SQLServerADAL4JUtils.java:60)
... 48 more
Caused by: com.microsoft.aad.adal4j.AuthenticationException: javax/mail/internet/ParseException
at com.microsoft.sqlserver.jdbc.SQLServerADAL4JUtils.getSqlFedAuthToken(SQLServerADAL4JUtils.java:53)
... 48 more
提前致謝
使用 spark-submit 命令中的“spark.driver.extraClassPath”和“spark.executor.extraClassPath”選項覆蓋最新版本的 javax.mail jar → javax.mail-1.6.2.jar 並運行它,應該可以工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.