![](/img/trans.png)
[英]How to retrieve .dcm image files from the ADLS gen2 using Azure Synapse and pySpark notebook?
[英]How to connect to an Oracle DB from a Python Azure Synapse notebook?
我正在尝试从 Azure Synapse 笔记本中查询 Oracle 数据库,最好使用 Pyodbc,但 pyspark 解决方案也是可以接受的。 我相信这里的复杂性来自火花池的低可配置性——我相信代码通常是正确的。
host = 'my_endpoint.com:[port here as plain numbers, e.g. 1111]/orcl'
database = 'my_db_name'
username = 'my_username'
password = 'my_password'
conn = pyodbc.connect( 'DRIVER={ODBC Driver 17 for SQL Server};'
'SERVER=' + host + ';'
'DATABASE=' + database + ';'
'UID=' + username + ';'
'PWD=' + password + ';')
我尝试过的方法:
Pyodbc - 我可以使用可用的默认驱动程序({ODBC Driver 17 for SQL Server})并且我得到登录超时。 我已经尝试了服务器的普通 URL 和 IP,并且使用了端口、无端口、逗号端口、冒号端口的所有组合,并且没有附加服务名称“orcl”。 代码示例在上面,但我认为问题出在驱动程序上。
Pyspark.read - 没有指定 JDBC 驱动程序,我收到“没有合适的驱动程序”错误。 我能够将 OJDBC.jar 添加到工作区或我的文件目录,但我无法弄清楚如何告诉 spark 应该使用它。
cx_oracle - 我的工作区不允许这样做。
如果解决方案需要设置环境变量或使用 spark-submit,请提供一个链接,说明如何在 Synapse 中最好地做到这一点。 我会对 JDBC 或 ODBC 解决方案感到满意。
通过将此处的.jar (ojdbc8-19.15.0.0.1.jar) 添加到 Synapse 工作区包,然后将 package 添加到 ZE9713AE04A02A810D6F33DD9,我能够执行以下代码包
host = 'my_host_url'
port = 1521
service_name = 'my_service_name'
jdbcUrl = f'jdbc:oracle:thin:@{host}:{port}:{service_name}'
sql = 'SELECT * FROM my_table'
user = 'my_username'
password = 'my_password'
jdbcDriver = 'oracle.jdbc.driver.OracleDriver'
jdbcDF = spark.read.format('jdbc') \
.option('url', jdbcUrl) \
.option('query', sql) \
.option('user', user) \
.option('password', password) \
.option('driver', jdbcDriver) \
.load()
display(jdbcDF)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.