簡體   English   中英

從Hive查詢深層復制過濾的PySpark數據幀

[英]Deep copy a filtered PySpark dataframe from a Hive query

我從Hive表中獲取一些數據並插入數據幀:

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

我正在過濾一些沒用的值:

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

我想在數據框上執行此操作,而不是出於代碼設計原因而select查詢。 我注意到,即使在我過濾了數據幀之后,似乎Hive的查詢和加載操作在我每次操作df時都會完成:

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

這將花費很長時間,就像我沒有過濾數據幀一樣。 有沒有辦法對其進行深層復制以提高性能並減少內存占用?

聽起來你需要緩存你的數據幀

df.cache()

Spark被懶惰地評估了。 當您執行轉換(例如過濾器)時,spark實際上不會執行任何操作。 在您執行操作(例如顯示,計數等)之前,不會進行計算。 Spark不會保留任何中間(最終)結果。 它只保留創建所有數據幀所需的步驟。 要避免多個冗余步驟(例如,在表中讀取,過濾掉錯誤的值),如果執行多個操作,則需要將中間數據幀緩存到內存中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM