读取带有json格式记录的序列文件。
- 读取输入序列文件
- sqlcontext.read.json()以转换为数据帧
- 从上面的数据帧和缓存中选择子集数据
我面临的问题是,当spark进入步骤2时,它似乎触发了操作,从而读取输入数据并创建数据帧。
但当我进入步骤3时,由于它是实现DF的缓存触发动作,它再次读取输入数据,因此浪费了两次读取输入数据的时间。
我不想缓存输入数据。
如何避免两次读取输入数据?
一种替代方案是保存sqlcontext.read.json()
之后读取的数据帧并进行回读,然后为后续进程进行缓存。
您可以执行dataframe checkpointing
或将其保存到HDFS以实现这一点。
这将消除对输入序列文件的多次读取