pyspark 从 spark 数据框列创建一个不同的列表并在 spark sql where 语句中使用
Posted
技术标签:
【中文标题】pyspark 从 spark 数据框列创建一个不同的列表并在 spark sql where 语句中使用【英文标题】:pyspark create a distinct list from a spark dataframe column and use in a spark sql where statement 【发布时间】: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 语句中作为无效语法引发错误
【问题讨论】:
【参考方案1】:避免从一个表中收集项目并在另一个表的查询中使用它。使用JOIN
编写关系查询。
df.createOrReplaceTempView('df')
df1 = spark.sql("select * from table semi join df using(setp)")
【讨论】:
编辑使用更保守的语气...抱歉在写帖子时过于情绪化! @mazaneicha @mck 哦很酷没有意识到我可以创建一个临时表并可以在 spark sql 中使用。使用半连接时出错,所以改用子查询以上是关于pyspark 从 spark 数据框列创建一个不同的列表并在 spark sql where 语句中使用的主要内容,如果未能解决你的问题,请参考以下文章
Pyspark - 在作为列表的 spark 数据框列上使用 reducebykey
Pyspark 通过使用另一列中的值替换 Spark 数据框列中的字符串
数据框列中的嵌套列表,提取数据框列中列表的值 Pyspark Spark