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