spark 1.6 sqlContext.read.json会触发动作吗?如何避免这种情况

时间:2017-10-06 18:02:19

标签: apache-spark apache-spark-sql spark-dataframe

使用json格式记录读取序列文件。

  1. 读取输入序列文件
  2. sqlcontext.read.json()转换为dataframe
  3. 从上面的数据框和缓存中选择子集数据。
  4. 我面临的问题是,当spark到达第2步时,它似乎会触发操作,从而读取输入数据并创建数据帧。

    但是当我从缓存触发动作实现DF到达第3步时,它再次读取输入数据,因此浪费时间读取输入数据两次。

    我不想缓存输入数据。

    如何避免两次读取输入数据?

1 个答案:

答案 0 :(得分:0)

另一种方法是在sqlcontext.read.json()之后保存读取的数据帧并读回,然后为后续进程执行缓存。

您可以执行dataframe checkpointing或将其保存到HDFS以实现此目的。

这将消除输入序列文件的多次读取