在 PySpark DataFrame 上运行 sql 查询

Geo*_*los 8 apache-spark-sql

我正在使用 Databricks,并且已经加载了一些数据表。

但是,我有一个复杂的 SQL 查询,我想对这些数据表进行操作,我想知道是否可以避免在 pyspark 中翻译它。

那可能吗?

举个例子:

在 SQL 中:

with table2 as (
   select column1, column1
   from database.table1
   where
         start_date <= DATE '2019-03-01' and
         end_date >= DATE '2019-03-31'            )
Run Code Online (Sandbox Code Playgroud)

在 pyspark 中,我已经table1加载了,但以下内容不起作用,因为它找不到table1.

query = "(
    select column1, column1
           from table1
               where
         start_date <= DATE '2019-03-01' and
         end_date >= DATE '2019-03-31'            )"
table2 = spark.sql(query)
Run Code Online (Sandbox Code Playgroud)

谢谢

kra*_*mar 8

尝试给予databasename.tablename而不是tablename询问。

query = "(
    select column1, column1
           from *database_name.table_name* 
               where
         start_date <= DATE '2019-03-01' and
         end_date >= DATE '2019-03-31' )" 
Run Code Online (Sandbox Code Playgroud)

如果您正在使用pyspark那么它一定是

spark.sql(query)
Run Code Online (Sandbox Code Playgroud)

  • 不起作用,查询甚至不是有效的 python 字符串。 (2认同)