Я пытаюсь подключиться из prem pyspark к GCP PostgreSQL, как предоставить необходимые сертификаты и синтаксис в Pyspark для подключения GCP PostgreSQL
df2=spark.read.format('jdbc')\
.option('driver','org.postgresql.Driver')\
.option('url','XXXXXX')\
.option("dbtable",'XXXXXX')\
.option('user','XXXXX')\
.option('password','XXXXXX')\
.option('ssl',True)\
.option('sslmode','require')\
.load()
Я получаю эту ошибку -
org.postgresql.util.PSQLException: FATAL: connection requires a valid client certificate
Да, у меня есть server_cert.pem/client_cert.pem/psql_client.pk8.. Но я не уверен, как использовать их в синтаксисе подключения pyspark.. Не могли бы вы помочь мне с правильным синтаксисом для указания сертификатов..
Попробуйте добавить .option('sslrootcert','<path_to_server_ca_certificate>')
и .option('sslcert','<path_to_client_certificate>')
перед вызовом метода load()
. Надеюсь, это должно сработать.
Рад, что это сработало для вас. Я также добавляю его к ответу, пожалуйста, примите его, чтобы закрыть ветку.
Вам нужно установить параметры sslrootcert
и sslcert
в вашем существующем, чтобы решить проблему. Подробности смотрите в приведенной ниже реализации -
df2=spark.read.format('jdbc')\
.option('driver','org.postgresql.Driver')\
.option('url','jdbc:postgresql://<host>:<port>/<database>')\
.option('url','XXXXXX')\
.option("dbtable",'XXXXXX')\
.option('user','XXXXX')\
.option('password','XXXXXX')\
.option('ssl',True)\
.option('sslmode','require')\
.option('sslrootcert','<path_to_server_ca_certificate>')\
.option('sslcert','<path_to_client_certificate>')\
.option('sslkey', '<path_to_client_key>')
.load()
Я не смог проголосовать, так как я новый пользователь..
нам может понадобиться включить sslkey в опции.. не могли бы вы обновить решение, Dipanjan..
Вы можете просто добавить это .option('sslkey', '<PATH_TO_CLIENT_KEY>')
в приведенный выше код перед вызовом .load()
да, Дипанджан.. правильно.. ради других, я просто прошу обновить решение..
Сделанный! Проголосуйте тоже, если хотите :)
У меня есть возможность голосовать..
Вы загрузили сертификат ЦС сервера и сертификат клиента на свой локальный сервер из GCP? Если да, то вам необходимо установить параметры
sslrootcert
иsslcert
в текущем коде и указать соответствующие пути к файлам для сертификата ЦС сервера и сертификата клиента.