Код Python из Databricks для подключения к SQL-серверу - PullRequest
0 голосов
/ 30 октября 2019

Я пытаюсь выполнить код Python из Databricks, который в основном устанавливает соединение между Python и SQL-сервером, используя JDBC.

Я использовал библиотеку Python 'jaydebeapi', и когда я запускаю код, он выдает ошибку, говоря "JayDeBeApi выбрасывает AttributeError: у объекта '_jpype.PyJPField' нет атрибута 'getStaticAttribute' "

Я искал в Интернете и обнаружил, что в jaydebeapi используется библиотека Jpype, и я понизил ее до версии 0.6.3.

Но все равно я получаю ту же ошибку. Может кто-нибудь объяснить мне, как сделать это изменение и запустить в блоках данных.

Или есть какая-нибудь альтернативная библиотека, которую я могу использовать.

Ответы [ 2 ]

0 голосов
/ 30 октября 2019

Почему бы непосредственно не следовать официальным документам, приведенным ниже, для установки драйвера Microsoft JDBC для SQL Server для Spark Connector и ссылаться на пример кода Python с использованием JDBC connect SQL Server.

  1. Базы данных SQL с использованием Apache Spark Connector
  2. Базы данных SQL с использованием JDBC и его Пример Python с URL-адресом jdbc MS SQL Server

Если вы использовали Azure, для блоков данных Azure используются те же документы, что и ниже.

  1. Базы данных SQL с использованием Apache Spark Connector для блоков данных Azure
  2. Базы данных SQL с использованием JDBC для блоков данных Azure

enter image description here

0 голосов
/ 30 октября 2019

Это известная проблема с JayDeBeApi, вы можете проверить ее на GitHub .

Из-за ошибки в 0.6.3 закрытые переменные были выставлены как часть интерфейса. Также 0.6.3 имел настройщик класса по умолчанию, который автоматически создавал свойство для получения и установки, если методы соответствовали шаблону Java-бина. Этот настройщик свойств был загружен поздно после того, как многие распространенные классы java.lang уже были загружены, и не имел обратной силы, таким образом, только пользовательские классы, загруженные после инициализатора, будут иметь настройку. Ошибка закрытой переменной может замаскировать настройщик свойств, поскольку настройщик свойств не должен переопределять поля. Некоторые библиотеки по незнанию обращались к закрытым переменным, предполагая, что они используют настройщик свойств. Настройщик был и ненужным, и приводил к частым ошибкам для новых программистов. Поведение с ошибками было удалено, а настройщик проблемных свойств по умолчанию отключен в 0.7.

Добавьте строки в модуль, чтобы включить старое поведение свойства. Но это не приведет к повторному включению предыдущего глючного доступа к приватным переменным. Таким образом, коду, который использовал предыдущее поведение, которое обошло метод получения / установки java, нужно будет использовать API отражения.

Чтобы включить настройщик свойств, используйте

try:
   import jpype.beans
except ImportError:
   pass

Надеюсь, это поможет.

...