gpt4 book ai didi

python - 从 Hive 查询深度复制过滤后的 PySpark 数据框

转载 作者:太空狗 更新时间:2023-10-30 02:42:12 24 4
gpt4 key购买 nike

我从 Hive 表中获取一些数据并插入数据框:

df = sqlContext.table('mydb.mytable')

我正在过滤一些无用的值:

df = df[df.myfield != "BADVALUE"]

出于代码设计原因,我想在数据框上执行此操作,而不是作为 select 查询。我注意到,即使在我过滤了数据帧之后,似乎每次我稍后对 df 进行操作时,Hive 的查询和加载操作似乎都会完成:

df.groupBy('myfield').mean()

这会花费很长时间,就像我不过滤数据框一样。有没有办法对其进行深层复制以提高性能并减少内存占用?

最佳答案

听起来您需要缓存数据框

df.cache()

Spark 是惰性求值的。当您执行转换(例如过滤器)时,spark 实际上不会做任何事情。在您执行操作(例如显示、计数等)之前,不会进行计算。并且 Spark 不会保留任何中间(最终)结果。它只保留创建所有数据框所需的步骤。为避免在执行多个操作时执行多个冗余步骤(例如,读取表、过滤掉错误的值),您需要将中间数据帧缓存到内存中。

关于python - 从 Hive 查询深度复制过滤后的 PySpark 数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37327293/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com