0

您好我正在尝试在 python 中为 apache Beam 创建一个数据源。我知道使用 Java,您可以使用 JDBC 库连接到 cloudsql。同样,我正在尝试在 Google Cloud Platform 中创建数据流(apache 光束)的源。我继承了有界源类并使用了 jaydebeapi 库(jdbc 库的 python 包装器)连接到 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 文件驱动程序,我已将其存储在临时文件位置的谷歌云存储中。但是,python 需要 Java Developer Kit 来运行 java 代码,并且在我的计算机上本地运行时,我可以设置 JAVA_HOME 变量并指向我本地计算机上的 /bin 位置。

但是,当我在数据流中运行它时,我收到一个错误“没有找到 JVM 共享库文件。尝试正确设置 JAVA_HOME 环境变量。这是因为在数据流中我无法安装 Java 开发工具包 (JDK) 或创建环境变量。

有没有办法在数据流上安装 JDK 并引用环境变量。还有关于如何运行 python apache Beam 作业以这种方式从云 sql 数据库中提取数据的任何想法?

4

0 回答 0