我无法从Azure Databricks建立到Oracle数据库的连接,尽管它在ADF中工作,我可以在那里查询表。但是ADF需要时间来过滤记录,所以我仍在尝试从Databricks连接。
我手动和使用init脚本遵循了这个Microsoft链接中的步骤,但错误似乎一直存在。
当我查看我的集群事件日志时,它说初始化脚本执行成功。
尝试建立连接时出现错误消息:DPI-1047:找不到64位Oracle客户端库:“/databricks/driver/Oracle\u ctl//lib/libclntsh.so:无法打开共享对象文件:没有这样的文件或目录”。
当我执行以下命令时
dbutils.fs.ls(“/databricks/driver/”)
没有这样的目录
这引发了我在这里发布一些问题:
>
这是否意味着init脚本没有执行其工作?
/databricks/driver/oracle\u ctl是dbutils.fs.ls的隐藏目录吗?
错误消息指向/databricks/driver/oracle\u ctl//lib/libclntsh。因此,当我手动检查下载的oracle客户端时,没有名为lib-althought-libclntsh的文件夹。因此存在于主目录中。databricks是否为libclntsh.so检查了错误的目录?
这种联系对其他人仍然有效吗?
连接语法:cx\u Oracle。连接(user=user\u name,password=password,dsn=IP’:“Port”/“DB\u name)
当从本地机器内部连接时,上述语法可以正常工作。
请尝试安装cx_Oracle的最新主要版本,该版本已重命名为python oracledb,请参阅发布公告。
此版本不需要Oracle Instant Client。API与cx_Oracle相同,但名称明显不同。
如果我理解说明,您的init脚本将执行以下操作:
/databricks/python/bin/pip install oracledb
应用程序代码如下:
import oracledb
connection = oracledb.connect(user='scott', password=mypw, dsn='yourdbhostname/yourdbservicename')
with connection.cursor() as cursor:
for row in cursor.execute('select city from locations'):
print(row)
资源:
主页:oracle.github.io/python-oracledb/
快速启动:快速启动python oracledb安装
文档:python-oracle.readthedocs.io/en/latest/index.html
PyPI:PyPI.org/project/oracledb/
来源:github.com/oracle/python-oracledb
升级:从cx_Oracle 8.3升级到python oracledb
如果集群中没有Oracle instant client,则会出现上述错误。
要解决azure数据库中的上述错误,请遵循以下代码:
%sh
mkdir -p /opt/oracle
cd /opt/oracle
wget https://download.oracle.com/otn_software/nt/instantclient/19600/instantclient-basic-windows.x64-19.6.0.0.0dbru.zip
unzip instantclient-basic-windows.x64-19.6.0.0.0dbru.zip
set ORACLE_HOME=%ORABAS%\instantclient_19_3
set TNS_ADMIN=%ORACLE_HOME%
set PATH=%ORACLE_HOME%;%PATH%
要创建初始化脚本,请使用以下代码:
根据官方文件,
dbutils.fs.put("dbfs:/databricks/<init-script-folder>/oracle_ctl.sh","""
#!/bin/bash
wget --quiet -O /tmp/instantclient-basiclite-linuxx64.zip https://download.oracle.com/otn_software/linux/instantclient/instantclient-basiclite-linuxx64.zip
unzip /tmp/instantclient-basiclite-linuxx64.zip -d /databricks/driver/oracle_ctl/
sudo echo 'export LD_LIBRARY_PATH="/databricks/driver/oracle_ctl/"' >> /databricks/spark/conf/spark-env.sh
sudo echo 'export ORACLE_HOME="/databricks/driver/oracle_ctl/"' >> /databricks/spark/conf/spark-env.sh
""", True)
要从PySpark中的oracle数据库读取数据,请阅读Emrah Mete的这篇文章
有关更多信息,请参阅此官方文件:
https://docs.databricks.com/data/data-sources/oracle.html#oracle
将初始化脚本中的路径从“/数据库/驱动程序/oracle_ctl/”更改为“/数据库/驱动程序/oracle_ctl/instantClient”,并且该错误不再出现。
请改用以下初始化脚本
dbutils.fs.put("dbfs:/databricks/<init-script-folder-name>/oracle_ctl.sh","""
#!/bin/bash
sudo apt-get install libaio1
wget --quiet -O /tmp/instantclient-basiclite-linuxx64.zip https://download.oracle.com/otn_software/linux/instantclient/instantclient-basiclite-linuxx64.zip
unzip /tmp/instantclient-basiclite-linuxx64.zip -d /databricks/driver/oracle_ctl/
mv /databricks/driver/oracle_ctl/instantclient* /databricks/driver/oracle_ctl/instantclient
sudo echo 'export LD_LIBRARY_PATH="/databricks/driver/oracle_ctl/instantclient/"' >> /databricks/spark/conf/spark-env.sh
sudo echo 'export ORACLE_HOME="/databricks/driver/oracle_ctl/instantclient/"' >> /databricks/spark/conf/spark-env.sh
""", True)
注意事项:
>
正如Christopher Jones在其中一条评论中提到的那样,cx_Oracle最近已升级到oracledb,具有瘦版和厚版。
基于行块分布函数的通用网页正文抽取:线性时间、不建DOM树、与HTML标签无关 对于Web信息检索来说,网页正文抽取是后续处理的关键。 虽然使用正则表达式可以准确的抽取某一固定格式的页面,但面对形形色色的HTML,使用规则处理难免捉襟见肘。能不能高效、准确的将一个页面的正文抽取出来,并做到在大规模网页范围内通用,这是一个直接关系上层应用的难题。 作者提出了《基于行块分布函数的通用网页正文抽取算法》
Scales the matrix Parameters xnumberamount to be scaled, with 1 resulting in no change ynumberamount to scale along the vertical axis.(Otherwise x appliesto both axes.) cxnumberhorizontal origin point
问题内容: 我有一个python脚本(2.7),顶部有一些“有趣的”导入。我最初想使用py2exe将其编译成一个我可以更容易分发的exe。 我已经放弃,正在尝试使用cx- freeze。但是,我在那里也有问题。问题似乎是我添加到Python中的库(jinja2和restkit)。我在python目录./Lib/site-packages/Jinja2-2.6-py2.7.egg/jinja2和这里
我的申请有什么问题?
我setup.py密码是 谁能帮我解决这个问题。
问题: 1.当我尝试安装在python或通过cmd它说: 错误:系统找不到路径:'C:\Program Files(x86)\Microsoft SDK\Windows\v8.1\lib' 正如您看到的,上面写着但我有。在我看来,这就是问题所在,但我该如何解决它呢? 2.我也下载了并在cmd中尝试了这个: python-mpip安装C:\Users\Super\Downloads\cx\u Fre