PySpark:将 python 列表中的元素添加到 spark.sql() 语句中

PySpark: Adding elements from python list into spark.sql() statement

在我的代码中使用的 python 列表:

pylist = ['A', 'B', 'C', 'D']

我还有一个简单的 spark.sql() 行需要执行:

query = spark.sql(
    """
    SELECT col1, col2, col3
    FROM database.table
    WHERE col3 IN ('A', 'B', 'C', 'D')
    """
)

我想用 python 列表替换 spark.sql() 语句中的元素列表,以便 SQL 中的最后一行是

...
AND col3 IN pylist

我知道使用 {}str.format,但我很难理解这是否是正确的选择,以及它是如何工作的。

好的,经过更多研究,我想我找到了使用 .format(tuple(pylist))

的解决方案

现在的说法是:

pylist = ['A', 'B', 'C', 'D']

s = """
    SELECT col1, col2, col3
    FROM database.table
    WHERE col3 IN {}
    """.format(tuple(pylist))

query = spark.sql(s)

在转换为字符串时转换为元组以获取“()”而不是“[]”

sql_str="SELECT col1, col2, col3 FROM database.table WHERE col3 IN " + str(tuple(pylist))

query = spark.sql(sql_str)