Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Apache Spark SQL连接到Oracle的Databricks机密_Sql_Azure_Apache Spark_Apache Spark Sql_Databricks - Fatal编程技术网

使用Apache Spark SQL连接到Oracle的Databricks机密

使用Apache Spark SQL连接到Oracle的Databricks机密,sql,azure,apache-spark,apache-spark-sql,databricks,Sql,Azure,Apache Spark,Apache Spark Sql,Databricks,我正在使用spark SQL将Oracle数据库中的表(其中一些相当大)作为表拉入Azure Databrick,这样我就可以在这些表上运行作业,并让团队可以使用它们。随着数据的更改和更新,我需要每天提取它们,并且我还希望通过使用Azure Key Vault/Secrets传递经过编辑的凭据来获取它们的来源 我已经设置了秘密,我可以在Python中运行一个进程来完成所有这些,但是,对于较大的表,从数据帧写入表时速度太慢 我知道在spark SQL中使用下面的代码可以更快地完成这项工作,并且可以

我正在使用spark SQL将Oracle数据库中的表(其中一些相当大)作为表拉入Azure Databrick,这样我就可以在这些表上运行作业,并让团队可以使用它们。随着数据的更改和更新,我需要每天提取它们,并且我还希望通过使用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>');
%sql
创建表
使用org.apache.spark.sql.jdbc
选择权(
数据库表“”,
驱动程序'oracle.jdbc.driver.OracleDriver',
用户“”,
密码“”,
url“jdbc:oracle:thin:@/:”);
在Python中,我会使用dbutils获得如下秘密:

%python
jdbcUsername = dbutils.secrets.get(scope="jdbc", key="<key>")
%python
jdbcUsername=dbutils.secrets.get(scope=“jdbc”,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)