Как предоставить сертификат SSL-сервера/сертификат клиента/ключи SSL в соединении Pyspark JDBC. Попытка подключить PostgreSQL в GCP из Prem

Я пытаюсь подключиться из 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

Вы загрузили сертификат ЦС сервера и сертификат клиента на свой локальный сервер из GCP? Если да, то вам необходимо установить параметры sslrootcert и sslcert в текущем коде и указать соответствующие пути к файлам для сертификата ЦС сервера и сертификата клиента.

Dipanjan Mallick 31.03.2023 07:45

Да, у меня есть server_cert.pem/client_cert.pem/psql_client.pk8.. Но я не уверен, как использовать их в синтаксисе подключения pyspark.. Не могли бы вы помочь мне с правильным синтаксисом для указания сертификатов..

Mani Shankar.S 31.03.2023 08:10

Попробуйте добавить .option('sslrootcert','<path_to_server_ca_certificate>') и .option('sslcert','<path_to_client_certificate>') перед вызовом метода load(). Надеюсь, это должно сработать.

Dipanjan Mallick 31.03.2023 09:07

Рад, что это сработало для вас. Я также добавляю его к ответу, пожалуйста, примите его, чтобы закрыть ветку.

Dipanjan Mallick 31.03.2023 11:25
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
4
133
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам нужно установить параметры 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()

Я не смог проголосовать, так как я новый пользователь..

Mani Shankar.S 31.03.2023 11:53

нам может понадобиться включить sslkey в опции.. не могли бы вы обновить решение, Dipanjan..

Mani Shankar.S 04.05.2023 11:53

Вы можете просто добавить это .option('sslkey', '<PATH_TO_CLIENT_KEY>') в приведенный выше код перед вызовом .load()

Dipanjan Mallick 04.05.2023 12:22

да, Дипанджан.. правильно.. ради других, я просто прошу обновить решение..

Mani Shankar.S 04.05.2023 12:31

Сделанный! Проголосуйте тоже, если хотите :)

Dipanjan Mallick 04.05.2023 12:34

У меня есть возможность голосовать..

Mani Shankar.S 04.05.2023 12:41

Другие вопросы по теме

Секрет репозитория GitHub Actions неправильно передается повторно используемому рабочему процессу
Получение ошибки 403 Forbidden при попытке публикации в GCP из приложения Spring Boot
Невозможно передать ответ API в приложении Flask в приложении Google Cloud
Как просто получить информацию о том, почему функции тратят процессорное время и вызывают затраты?
Учетной записи облачной службы Google на виртуальной машине отказано в разрешении на отправку в реестр артефактов
GKE: балансировщик нагрузки стандартного уровня
Проблема при организации рабочего процесса формы данных с помощью рабочих процессов GCP
Поддерживает ли AlloyDB аутентификацию в базах данных Postgres с учетными записями службы IAM, как это делает Cloud SQL?
Я столкнулся с проблемой в Dataprep Google Cloud (выполнение базовых данных, машинного обучения и задач ИИ в Google Cloud: Challenge Lab)
Pod автоматически масштабируется без необходимости