簡體   English   中英

嘗試從 Spark Submit 連接到 Azure SQL DB 時 ADAL4J javax 郵件解析異常

[英]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 組織有一個自定義域。

對於我嘗試過的用戶配置選項:

  • myUser@myDomain.com
  • 我的用戶
  • myUser@myDomain.com@myDB.database.windows.net
  • myUser@myDomain.com@database.windows.net
  • myUser@organization.onmicrosoft.com

當我將該字段留空時,它會引發用戶名為空的錯誤。

我可以使用該用戶通過 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM