【发布时间】:2021-03-01 03:22:37
【问题描述】:
我正在使用 spark SQL 从 Oracle 数据库中提取表,其中一些相当大,作为表放入 Azure 数据块中,这样我就可以在它们上运行作业并让它们可见以供团队使用。随着数据的变化和更新,我需要每天提取它们,并且我还想通过使用 Azure Key Vault / Secrets 传递我的编辑凭据来获取它们。
我已经设置了秘密,我可以在 Python 中运行一个进程来完成所有这些操作,但是,对于较大的表,从数据帧写入表时速度太慢。
我知道我可以在 spark SQL 中使用以下方法更快地完成此操作,并且可以在比使用 python 的一小部分时间内成功提取几乎所有表。但是,我似乎无法将其设置为来源并传递用户名和密码的秘密。
%sql
CREATE TABLE <table-out>
USING org.apache.spark.sql.jdbc
OPTIONS (
dbtable '<table-source>',
driver 'oracle.jdbc.driver.OracleDriver',
user '<username>',
password '<password>',
url 'jdbc:oracle:thin:@//<server>:<port>');
在 Python 中,我会使用 dbutils 获得以下秘密:
%python
jdbcUsername = dbutils.secrets.get(scope="jdbc", key="<key>")
在上面的 SQL 方法中,有没有等效的方法可以做到这一点。 我意识到我仍然需要优化任何表格,但当我到达它时会跨越那座桥。
任何帮助将不胜感激。
谢谢, c2
【问题讨论】:
标签: sql azure apache-spark apache-spark-sql databricks