Привет, я пытаюсь создать источник данных для Apache Beam в Python.Я знаю, что с Java вы можете подключиться к cloudql с помощью библиотеки JDBC.Аналогичным образом я пытаюсь создать источник потока данных (Apache Beam) в Google Cloud Platform.Я унаследовал от исходного класса Bounded и использовал библиотеку jaydebeapi (оболочку Python для библиотеки JDBC) для подключения к базе данных MySQL.Пожалуйста, смотрите код ниже.
# Create new source for Cloud SQL
class odbcsource(iobase.BoundedSource):
def __init__(self, server=None, driver=None, database=None, username=None, password=None, sql=None, port=None, driver_path=None):
self.server = server
self.driver = driver
self.database = database
self.username = username
self.password = password
self.sql = sql
self.port = port
self.driver_path = driver_path
def read(self):
cursor = self._query_mssql()
results = []
for row in cursor.fetchall():
results.append(row)
def _query_mssql(self):
"""
Queries mssql and returns a cursor to the results.
"""
conn = jaydebeapi.connect(self.driver,
"jdbc:mysql://"+self.server+":"+self.port+"/"+self.database,
{'user': self.username, 'password': self.password},
self.driver_path,)
cursor = conn.cursor()
cursor.execute(self.sql)
return cursor
Для драйвера файла .jar я сохранил его в облачном хранилище Google в папке временного файла.Тем не менее, python требует Java Developer Kit для запуска Java-кода, и, работая локально на моем компьютере, я могу установить переменную JAVA_HOME и указать местоположение / bin на моем локальном компьютере.
Однако, когда я запускаю это вВ потоке данных не получается файл общей библиотеки JVM. Попробуйте правильно установить переменную среды JAVA_HOME. Это потому, что в потоке данных я не могу установить Java Developer Kit (JDK) или создать переменную среды.
Есть лиспособ установить JDK на поток данных и ссылочные переменные среды. Также есть мысли о том, как запустить задание Python Apache Beam для извлечения данных из облачной базы данных SQL таким образом?