检查 Pyspark 生成的 SQL 查询

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

有没有办法将 pyspark 命令翻译成 SQL 并检查它?例如,转动

spark.table("this_table").filter(F.col("first_col")>100).select("second_col", "third_col")

进入

SELECT second_col, third_col FROM this_table WHERE first_col > 100

以前,我认为 R 库 Sparkly 有类似的东西,但我似乎再也找不到那个函数了。

sql apache-spark pyspark
1个回答
0
投票

假设在 PySpark 中没有直接的方法来做到这一点,我能想到的最好方法如下:

import pandas as pd
import pandas_to_sql
from pyspark.sql import SparkSession
from pyspark.sql.functions import col

spark = SparkSession.builder.getOrCreate()

input_data = [
    (100, 2, 3),
    (200, 4, 5),
    (300, 6, 7),
]
pd_df = spark.createDataFrame(input_data, ["first_col", "second_col", "third_col"]).toPandas()

table_name = "this_table"
df = pandas_to_sql.wrap_df(pd_df, table_name)
df[df["first_col"]>100][["second_col", "third_col"]].get_sql_string()

输出:

'SELECT (second_col) AS second_col, (third_col) AS third_col FROM this_table WHERE ((first_col > 100)) '

我知道这并不完全是将 PySpark“转换”为 SQL。但如果您熟悉 PySpark 和 Pandas - 您可以暂时将其用作您的用例的解决方法。

正在使用的库是pandas_to_sql。它还没有准备好用于生产,并且似乎没有得到积极维护,因此请按照您自己的意愿使用它。

除此之外,我认为没有任何直接的方法可以完成您正在寻找的事情。

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