Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.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
Sql server 在pyspark查询中使用临时表_Sql Server_Apache Spark_Jdbc_Pyspark_Pyspark Sql - Fatal编程技术网

Sql server 在pyspark查询中使用临时表

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

我需要使用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:关键字“into”附近的语法不正确


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

你可以在spark中创建一个临时表吗?是否有特定的原因要在SQL server中创建临时表?@jjayadeep,因为查询需要相当多的数据聚合才能加入到主表中;将聚合作为视图运行非常慢。将其作为临时表运行并添加适当的索引使其性能更高。