Невозможно прочитать из SQL Azure через Jupyter, используя учетную запись AAD - PullRequest
0 голосов
/ 18 января 2019

Я пытался использовать соединитель Spark и пакет AAD для подключения к Azure SQL, как описано по ссылке ниже ...

https://docs.microsoft.com/en-us/azure/sql-database/sql-database-spark-connector#connect-spark-to-azure-sql-database-using-aad-authentication

но получаю ошибку независимо от использования типа аутентификации как «ActiveDirectoryPassword» или «accessToken».

При "accessToken" я получаю "сбой входа для пользователя" NT Authority \ Anonymous Logon ".. и с" ActiveDirectoryPassword "я получаю сообщение об ошибке типа: (Я могу успешно запустить импорт com.microsoft.aad .adal4j.AuthenticationException ... все еще не повезло).

java.lang.NoClassDefFoundError: com/microsoft/aad/adal4j/AuthenticationException
  at com.microsoft.sqlserver.jdbc.SQLServerConnection.getFedAuthToken(SQLServerConnection.java:4035)
  at com.microsoft.sqlserver.jdbc.SQLServerConnection.onFedAuthInfo(SQLServerConnection.java:4011)
  at com.microsoft.sqlserver.jdbc.SQLServerConnection.processFedAuthInfo(SQLServerConnection.java:3980)
  at com.microsoft.sqlserver.jdbc.TDSTokenHandler.onFedAuthInfo(tdsparser.java:264)
  at com.microsoft.sqlserver.jdbc.TDSParser.parse(tdsparser.java:100)
  at com.microsoft.sqlserver.jdbc.SQLServerConnection.sendLogon(SQLServerConnection.java:4772)
  at com.microsoft.sqlserver.jdbc.SQLServerConnection.logon(SQLServerConnection.java:3581)
  at com.microsoft.sqlserver.jdbc.SQLServerConnection.access$000(SQLServerConnection.java:81)
  at com.microsoft.sqlserver.jdbc.SQLServerConnection$LogonCommand.doExecute(SQLServerConnection.java:3541)
  at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:7240)
  at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:2869)
  at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:2395)
  at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:2042)
  at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectInternal(SQLServerConnection.java:1889)
  at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:1120)
  at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:700)
  at org.apache.spark.sql.execution.datasources.jdbc.JdbcUtils$$anonfun$createConnectionFactory$1.apply(JdbcUtils.scala:63)
  at org.apache.spark.sql.execution.datasources.jdbc.JdbcUtils$$anonfun$createConnectionFactory$1.apply(JdbcUtils.scala:54)
  at org.apache.spark.sql.execution.datasources.jdbc.JDBCRDD$.resolveTable(JDBCRDD.scala:56)
  at org.apache.spark.sql.execution.datasources.jdbc.JDBCRelation.<init>(JDBCRelation.scala:115)
  at org.apache.spark.sql.execution.datasources.jdbc.JdbcRelationProvider.createRelation(JdbcRelationProvider.scala:52)
  at org.apache.spark.sql.execution.datasources.DataSource.resolveRelation(DataSource.scala:341)
  at org.apache.spark.sql.DataFrameReader.loadV1Source(DataFrameReader.scala:239)
  at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:227)
  at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:164)
  at org.apache.spark.sql.DataFrameReader.jdbc(DataFrameReader.scala:254)
  at com.microsoft.azure.sqldb.spark.connect.DataFrameReaderFunctions.sqlDB(DataFrameReaderFunctions.scala:44)
  ... 55 elided

Следуйте инструкциям, приведенным на ссылке ниже: https://docs.microsoft.com/en-us/azure/sql-database/sql-database-spark-connector#connect-spark-to-azure-sql-database-using-aad-authentication

Последующие шаги, чтобы воспроизвести проблему:

  1. Вращайте кластер HDInsight и открывайте пользовательский интерфейс Jupyter
  2. Создайте новый блокнот с ядром Spark для команд Scala и выполните команду ниже:

    %% configure -f {"conf": { "spark.jars.packages": "com.microsoft.azure:azure-sqldb-spark:1.0.2,com.microsoft.azure:adal4j:1.6.3" } }

  3. Затем запустите:

    import com.microsoft.azure.sqldb.spark.config.Config импорт com.microsoft.azure.sqldb.spark.connect._ импорт com.microsoft.aad.adal4j._ import com.microsoft.aad.adal4j.AuthenticationException

  4. Далее:

    val config = Config (Карта ( "url" -> "xxxxx.database.windows.net", "databasename" -> "db1", "dbtable" -> "dbo.BuildVersion", "пользователь" -> "xyz@domain.com", "пароль" -> "xxxxxxxx", «аутентификация» -> «ActiveDirectoryPassword», "hostNameInCertificate" -> "* .database.windows.net", "шифровать" -> "правда" ))

  5. Чтобы прочитать приведенную выше таблицу, выполните:

    val collection = spark.read.sqlDB (config)

Здесь появляется ошибка.

Ожидается получение результатов таблицы, но получение исключения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...