Sql server 在pyspark查询中使用临时表
我需要使用SQL将一些数据读入Spark。出于性能原因,查询确实需要一个临时表。当我尝试使用一个包含临时表的查询(如下所述)时,spark坚持认为存在语法错误,尽管事实并非如此 例如,这很好:Sql server 在pyspark查询中使用临时表,sql-server,apache-spark,jdbc,pyspark,pyspark-sql,Sql Server,Apache Spark,Jdbc,Pyspark,Pyspark Sql,我需要使用SQL将一些数据读入Spark。出于性能原因,查询确实需要一个临时表。当我尝试使用一个包含临时表的查询(如下所述)时,spark坚持认为存在语法错误,尽管事实并非如此 例如,这很好: # pre-emptive stuff that loads connection parameters and whatnot query = """ select top 50 * from DW.Dim.Sales """ df = spark.read\ .format("jdbc
# pre-emptive stuff that loads connection parameters and whatnot
query = """
select top 50
*
from DW.Dim.Sales
"""
df = spark.read\
.format("jdbc")\
.option("url", url)\
.option("query", query)\
.option("user", 'svcDataBricks_DEV')\
.option("password", sql_password)\
.load()
但这会返回一个错误:
query = """
select top 50
*
into #MyData
from DW.Dim.Sales
"""
df = spark.read\
.format("jdbc")\
.option("url", url)\
.option("query", query)\
.option("user", 'svcDataBricks_DEV')\
.option("password", sql_password)\
.load()
具体而言,此错误:
com.microsoft.sqlserver.jdbc.SQLServerException:关键字“into”附近的语法不正确
我想问题在于,
spark.read()
不是设计用来做任何类型的写操作的,但是文档有点不透明,所以我不太清楚如何做到这一点。你可以在spark中创建一个临时表吗?是否有特定的原因要在SQL server中创建临时表?@jjayadeep,因为查询需要相当多的数据聚合才能加入到主表中;将聚合作为视图运行非常慢。将其作为临时表运行并添加适当的索引使其性能更高。