Облачный SQL / NiFi: подключение к облачной SQL-базе данных с Python и NiFi - PullRequest
0 голосов
/ 28 апреля 2019

Итак, я выполняю процесс etl, в котором я использую Apache NiFi в качестве инструмента etl вместе с базой данных postgresql из google cloud sql для чтения csv-файла из GCS. В рамках этого процесса мне нужно написать запрос для преобразования данных, считываемых из файла CSV, и вставки их в таблицу в облачной базе данных SQL. Итак, на основе NIFi мне нужно написать Python для автоматического выполнения SQL-запросов на ежедневной основе. Но вопрос здесь заключается в том, как я могу написать Python для соединения с облачной базой данных SQL? Какой конфиг что надо сделать? Я прочитал что-то о прокси-сервере cloud sql, но могу ли я просто использовать внутренний ip-адрес экземпляра cloud sql и поместить его в какой-нибудь файл конфигурации и создать из него какой-нибудь dbconnector?

Спасибо

Редактировать: я могу подключиться к облачной базе данных sql из моего виртуального компьютера, используя psql -h [CLOUD_SQL_PRIVATE_IP_ADDR] -U postgres, но мне нужно запустить скрипт python для процесса etl, и есть часть процесса, которая должна выполнить sql. Я пытаюсь спросить, как я могу написать файл Python, который используется для выполнения sql

например. В python, query = 'select * from table ....', а затем запустить postgres.run_sql(query), который выполнит запрос. Так как я могу создать такого исполнителя?

Ответы [ 3 ]

0 голосов
/ 28 апреля 2019

Вы можете напрямую подключиться к экземпляру Cloud SQL через Общедоступный IP-адрес (общедоступный смысл, доступный через общедоступный Интернет), в основном аналогичный локальной базе данных. По умолчанию соединения через публичный IP требуют определенной формы авторизации. Здесь у вас есть 3 (возможно, 4 *) варианта:

  1. Облачный прокси-сервер SQL - это исполняемый файл, который прослушивает локальный порт или сокет Unix и использует IAM-разрешения для аутентификации, шифрования и перенаправления соединений с базой данных. .

  2. Самоуправляемый SSL / TLS - Создайте пару ключей SSL / TLS, предоставляя клиентский ключ для NiFi в качестве доказательства аутентификации.

  3. Белый список IP-адресов - Белый список, к которым разрешено подключаться IP-адресам (то есть IP-адрес, на котором публично размещается NiFi). Это наименее безопасный вариант по ряду причин.

Любая из этих опций должна работать для прямого подключения к базе данных. Если вам все еще нужны особенности для Python, я предлагаю изучить SQLAlchemy и использовать эти фрагменты здесь в качестве ссылки.

  • Еще один возможный вариант: похоже, что NiFi использует Java и позволяет вам указать jar в качестве драйвера, так что вы можете также предоставить драйвер в комплекте с Cloud SQL JDBC SocketFactory для проверки подлинности соединения а также.
0 голосов
/ 29 апреля 2019

Чтобы подключиться к экземпляру Cloud SQL с Python, вам нужен Cloud SQL Proxy .Также вы должны установить файл конфигурации.

В этого урока вы можете шаг за шагом найти способ достижения этого.Описано, как установить файл конфигурации, необходимый для соединения ( здесь , вы также можете найти пример этого файла).

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

0 голосов
/ 28 апреля 2019

Я не понимаю, зачем вам писать какой-либо код на Python?Я проделал аналогичный процесс, в котором я использовал GetFile (локально) для чтения CSV-файла, его анализа и преобразования, а затем использовал ExecuteSQLRecord для вставки строк в SQL-сервер (работающий на облачном провайдере).DBCPConnectionPool должен ссылаться на вашего облачного провайдера согласно их инструкциям по подключению.Это означает, что URL, вероятно, ссылается на something.google.com, и вам может потребоваться открыть правила брандмауэра, используя администрацию вашего облачного провайдера.

...