【问题标题】:pyspark create a distinct list from a spark dataframe column and use in a spark sql where statementpyspark 从 spark 数据框列创建一个不同的列表并在 spark sql where 语句中使用
【发布时间】:2021-01-09 22:53:40
【问题描述】:

我有一个数据框 df 和一个列名 setp 来创建我写的列表

setp_list=df.select ('setp').distinct().collect()
setp_array=[row.setp for row in setp_list]
setp_array= str(setp_array)[1:-1]

我想在 spark.sql 语句中使用它

df1=spark.sql(f"select * from table where setp in ({setp_array})").

我不确定如何显示列表以查看它是如何创建的,但主要是我希望它包含在 spark sql 语句中。它在 spark sql 语句中作为无效语法引发错误

【问题讨论】:

    标签: apache-spark pyspark apache-spark-sql


    【解决方案1】:

    避免从一个表中收集项目并在另一个表的查询中使用它。使用JOIN 编写关系查询。

    df.createOrReplaceTempView('df')
    
    df1 = spark.sql("select * from table semi join df using(setp)")
    

    【讨论】:

    • 编辑使用更保守的语气...抱歉在写帖子时过于情绪化! @mazaneicha
    • @mck 哦很酷没有意识到我可以创建一个临时表并可以在 spark sql 中使用。使用半连接时出错,所以改用子查询
    猜你喜欢
    • 2017-09-12
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    • 2021-09-21
    • 1970-01-01
    • 2019-07-11
    • 1970-01-01
    相关资源
    最近更新 更多