pyspark jdb c создание фрейма данных с использованием соединений LDAP из Oracle - PullRequest
1 голос
/ 07 апреля 2020

Я пытаюсь создать фрейм данных pyspark jdb c, используя соединения LDAP из Oracle.

Ниже приведен код, работающий для создания JDB C с нормальным строком соединения, который работал.

creds = {"user":"USER_NAME",
             "password":"PASSWORD",
             "driver": "oracle.jdbc.OracleDriver"}


connection_string = "jdbc:oracle:thin:@//hostname.com:1521/myint.domain.com"

df = spark_session.read.jdbc(url=connection_string, table=query, properties=creds)

Теперь конфигурации нашей базы данных изменились, и мы должны использовать только аутентификацию на основе LDAP.

Поэтому я попытался изменить connection_string, как показано ниже.

connection_string  = "myint"

Но это выдает ниже проблему.

py4j.protocol.Py4JJavaError: Произошла ошибка при вызове o51.jdb c. : java .lang.NullPointerException

Без Spark я попытался подключиться, используя модуль cx_Oracle (python модуль для подключения к Oracle) для тестирования, и это сработало.

До:

host = 'myint.domain.com'
ip = 'jdbc:oracle:thin:@//hostname.com'
port = 1521
conn = cx_Oracle.makedsn(ip, port, service_name=host)

db = cx_Oracle.connect('USER_NAME', 'PASSWORD', conn)  # giving the conn object
cursor = db.cursor()
cursor.execute("""select * from myschema.mytable fetch first 5 rows only""")

for row in cursor:
    print(row)

После:

db = cx_Oracle.connect('USER_NAME', 'PASSWORD', "myint")  # Now, just giving only the database
cursor = db.cursor()
cursor.execute("""select * from myschema.mytable fetch first 5 rows only""")

for row in cursor:
    print(row)

Мне нужно добиться того же в кадре данных Pyspark JDB C, просто передавая только имя базы данных. Пожалуйста, предложите, что нужно сделать.

Я надеюсь, что этот вопрос может быть применим и для scala искры.

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