我正在加載高維Parquet文件,但只需要幾列。我當前的代碼看起來像:如何在Spark中更有效地加載Parquet文件(pySpark v1.2.0)
dat = sqc.parquetFile(path) \
.filter(lambda r: len(r.a)>0) \
.map(lambda r: (r.a, r.b, r.c))
我發生了什麼事的心理模型是它加載的所有數據,然後扔出去,我不想要的列。我顯然更喜歡它甚至沒有閱讀這些專欄,從我所瞭解的木地板看來,這似乎是可能的。
因此,有兩個問題:
- 是我的心智模式錯了嗎?還是火花編譯器足夠聰明,只能讀取上例中的a,b和c列?
- 如何強制
sqc.parquetFile()
更有效地讀取數據?
我覺得你的機會來獲得只讀需要的列會更高,如果你'map' _before_'filter' – sds