gpt4 book ai didi

sql - 使用 Apache Spark SQL 连接到 Oracle 的 Databricks Secret

转载 作者:行者123 更新时间:2023-12-02 08:25:37 25 4
gpt4 key购买 nike

我正在使用 Spark SQL 将表(其中一些相当大)作为表从 Oracle 数据库中提取到 Azure databricks 中,以便我可以在它们上运行作业并使它们可见以供团队使用。随着数据的变化和更新,我需要每天提取它们,并且我还想通过使用 Azure Key Vault/Secrets 传递我的编辑凭据来获取它们。

我已经设置了 secret ,并且可以运行一个进程来在 Python 中完成所有这些操作,但是,对于较大的表,从数据帧写入表时速度太慢。

我知道我可以使用下面的 Spark SQL 更快地完成此操作,并且可以在比使用 python 更短的时间内成功提取几乎所有表。但是,我似乎无法将其设置为来源并传递用户名和密码的 secret 。

%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 获取 secret ,如下所示:

%python
jdbcUsername = dbutils.secrets.get(scope="jdbc", key="<key>")

在上面的 SQL 方法中是否有等效的方法可以做到这一点。我意识到我仍然需要优化任何表格,但当我到达它时我会跨过那座桥。

如有任何帮助,我们将不胜感激。

谢谢,c2

最佳答案

因此,我设法通过将 SQL 语句作为字符串提交到 Spark.sql 执行中来做到这一点:

sqlQry = '''
CREATE TABLE IF NOT EXISTS {4}{1}
USING org.apache.spark.sql.jdbc
OPTIONS (
driver 'oracle.jdbc.driver.OracleDriver',
url '{0}',
dbtable '{1}',
user '{2}',
password '{3}')'''.format(jdbcUrl, line, jdbcUsername, jdbcPassword, dbloc)

spark.sql(sqlQry)

关于sql - 使用 Apache Spark SQL 连接到 Oracle 的 Databricks Secret,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64883245/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com