您好我正在尝试在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数据库中提取数据?