如何在Azure Databricks PySpark中执行存储过程?

问题描述 投票:1回答:1

我能够在Azure Databricks中使用PySpark执行简单的SQL语句,但我想改为执行存储过程。下面是我尝试过的PySpark代码。

#initialize pyspark
import findspark
findspark.init('C:\Spark\spark-2.4.5-bin-hadoop2.7')
#import required modules
from pyspark import SparkConf, SparkContext
from pyspark.sql import SparkSession
from pyspark.sql import *
import pandas as pd

#Create spark configuration object
conf = SparkConf()
conf.setMaster("local").setAppName("My app")
#Create spark context and sparksession
sc = SparkContext.getOrCreate(conf=conf)
spark = SparkSession(sc)

table = "dbo.test"
#read table data into a spark dataframe
jdbcDF = spark.read.format("jdbc") \
    .option("url", f"jdbc:sqlserver://localhost:1433;databaseName=Demo;integratedSecurity=true;") \
    .option("dbtable", table) \
    .option("driver", "com.microsoft.sqlserver.jdbc.SQLServerDriver") \
    .load()

#show the data loaded into dataframe
#jdbcDF.show()
sqlQueries="execute testJoin"
resultDF=spark.sql(sqlQueries)
resultDF.show(resultDF.count(),False)

这不起作用-我该怎么做?

python pyspark-sql azure-databricks pyspark-dataframes
1个回答
1
投票

截止目前,尚不支持通过来自azure databricks的JDBC连接运行存储过程。但是您的选择是:

1-使用pyodbc库连接并执行您的过程。但是,通过使用此库,这意味着您将在所有工作线程空闲时在驱动程序节点上运行代码。有关详细信息,请参见本文。https://datathirst.net/blog/2018/10/12/executing-sql-server-stored-procedures-on-databricks-pyspark

2-使用SQL表函数而不是过程。从某种意义上说,您可以使用在SQL查询的FORM子句中可以使用的任何东西。

3-由于您处于天蓝色环境中,因此结合使用天蓝色数据工厂(以执行您的过程)和天蓝色数据砖可以帮助您构建功能强大的管道。

© www.soinside.com 2019 - 2024. All rights reserved.