在创建cloudql / mysql for python apache beam sdk

时间:2018-05-31 18:10:22

标签: java python google-cloud-dataflow google-cloud-sql apache-beam-io

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

然而,当我在数据流中运行时,我收到错误“找不到JVM共享库文件。请尝试正确设置JAVA_HOME环境变量。这是因为在数据流中我无法安装Java Developer Kit(JDK)或创建环境变量

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

0 个答案:

没有答案