当前位置: 首页 > 知识库问答 >
问题:

尝试从Spark Submit连接到Azure SQL DB时发生ADAL4J javax邮件解析异常

夏侯英纵
2023-03-14

我正在尝试使用Spark connector for Azure SQL Databases library(GitHub)从Spark获取数据并将其批量插入Azure数据库。我试图使用“ActiveDirectoryPassword”作为身份验证方法,但adal4j总是抛出一个声明javax的AuthenticationException异常。邮政互联网已引发ParseException。

我正在构建一个包含所有库的胖罐子,并使用火花提交来运行它。

Azure组织有一个自定义域。

对于用户配置选项,我已尝试:

  • myUser@myDomain.com
  • myUser
  • 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

提前谢谢

共有1个答案

郝峰
2023-03-14

重写javax。最新版本的邮件jar→ javax。邮件-1.6.2。使用“火花”的罐子。驾驶员“路径”和“火花”。遗嘱执行人。spark submit命令中的extraClassPath选项并运行它,应该可以工作。

 类似资料:
  • 问题内容: 我正在使用以下时间戳格式: 以下方法可以正常工作: 而且,当我使用该格式字符串传递时间戳时,它返回,例如: 然后,我需要再次从该字符串映射到时间戳,本质上是相反的操作。我知道我可以使用和及其方法,但是如果可能的话,我宁愿坚持使用样式格式。 我写了这段代码(相当hacky),它适用于某些格式,但不适用于特定格式: 在第二部分,它失败了。 堆栈跟踪: 有没有一种更简单的方法可以在不利用我的

  • 问题内容: 在Windows上安装了Docker,并额外安装了2个Oracle VM VirualBox和Kitematic。我在Windows 10 PC中禁用了Hyper-V。现在的问题是我无法从DockerHub下载任何Docker映像,甚至我都无法以如下方式运行命令 两端都显示以下错误。 尝试连接时发生错误:获取 http:// localhost:2375 / v1.21 / info

  • 我遇到了一个问题,JAVA mail(JavaMail Version1.5.3)在发送电子邮件消息时抛出了一个未连接异常,而电子邮件确实被发送出去了。我从4周前就开始遇到这个问题了。该问题似乎主要与托管的exchange服务器有关。例外情况如下:

  • 我对Windows Azure完全陌生。 我目前有一个本地db用于我的。NET应用程序。我已经创建了一个azure帐户以及相关的SQL azure数据库。 我正在添加C代码,以便将数据从本地应用程序传递到云。为了测试此功能,我添加了一个随机用户,我想将其插入Azure DB。 我使用了以下教程:http://www.windowsazure.com/en-us/develop/net/how-to

  • 我正在尝试通过smtp发送邮件,但它显示错误消息。我正在使用主机号578.after执行程序,它显示无法将套接字转换为TLS;嵌套异常是:javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:PKIX路径构建失败:sun.security.provider.certpath.SunCertPath

  • 我还更新了相关的XML文件,其中提到了spring security bean。我在用Postgres数据库。而且,在我的系统中,一切都运行良好,当我将这些更改提交到QA环境时,登录不工作。我在登录到应用程序时检查了日志,它显示了一些错误。这是日志 还有,如何检查ubuntu服务器中的PostgreSQL JDBC驱动程序版本?有人能帮我解决这个问题吗?谢谢