python - 使用来自其他数据帧的条件从 pyspark 数据帧中提取数据
问题描述
我有一个 pysprak 数据框,需要根据其他 2 个单列数据框的条件从中提取选定的行。我尝试使用 join 但它太慢了,因为数据很大。我曾想过在 spark 中使用分区或 lookup(),但我无法实现这些,因为我是 pyspark 的新手。请建议我如何有效地做到这一点。以下是示例数据框:
main dataframe:
df1 = DataFrame({'CID': ['A0', 'A1', 'A2', 'A3'],'Name': ['B7', 'B4', 'B0', 'B3'],'Group':[23,34,45,67]})
conditional dataframes:
df2 = DataFrame({'CID': ['A4', 'A3', 'A7', 'A8']})
df3=Dataframe({'Group':[33,42,66,90]})
我尝试加入但效率低下。
df1=df1.join(df2,df1.CID==df2.CID)
df1=df1.join(df3,df1.Group==df3.Group)
提前致谢!
解决方案
我能想到的唯一方法是加入数据框。这里有一些技巧可以提高连接效率 -
- 如果 df2 和 df3 的大小很小,则广播它们。
- 加入前根据加入键和重新分区对数据帧进行排序。
推荐阅读
- reactjs - 片段着色器和场景更改的三个 JS GPU 滞后
- rust - 如何在 rust 中按顺序将多个字节数组从客户端发送到 tcp 服务器?
- linux - 在 Linux 上使用 Coldfusion 写入 USB 闪存驱动器
- mysql - 如何在 MySQL 中的 GROUP BY 之前使用 ORDER BY
- python - Making a program to detect if a word is a palindrome (ignoring capitalization)
- mysql - 从 2 个不同的数据库(MySQL 和 SQL)在 Listview 中插入值
- snowflake-cloud-data-platform - Snowflake External Table creation returns invalid property 'auto_refresh' for 'different storage type from cloud provider'
- javascript - How to use HTML input values in my function
- javascript - Conditional rendering inside a map function
- generics - Problem with casting the Proxy to generic type