gpt4 book ai didi

sql-server - 在 pyspark 查询中使用临时表

转载 作者:行者123 更新时间:2023-12-05 07:17:30 24 4
gpt4 key购买 nike

我需要使用 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")\
.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: Incorrect syntax near the keyword 'into'.

我想问题是 spark.read() 不是设计用来做任何类型的写操作的,但是文档有点不透明所以我不太清楚如何使它工作.

最佳答案

See my answer over in this SO question .

简而言之,它不起作用,因为驱动程序在您的 Sql 前面加上SELECT * FROM ( 并附加 ) spark_generated_alias。这使得你写的语法不正确。您必须通过自己的自定义“Sql 注入(inject)攻击”发挥创意才能获得您想要的结果。

关于sql-server - 在 pyspark 查询中使用临时表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58804600/

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