Установка переменных окружения в apache beam при создании источника данных для cloudsql / mysql для python apache beam sdk - PullRequest
0 голосов
/ 31 мая 2018

Привет, я пытаюсь создать источник данных для 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 таким образом?

...