我正在加载高维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