我在一个作业中用pyspark运行3个查询。执行第一个查询,然后在第二个查询中使用此查询的结果,在第三个查询中使用第二个查询的结果。最后,保存第三个查询。
这项工作需要几个小时。我有一个15个实例的spark集群和32 GB内存,每个实例有8个内核。在优化这个场景时需要帮助。
所有这些查询都循环运行,如下所示:
对于存储中的id : Execute Query- 1执行Query-2执行Query -3
然后保存最终输出。
For循环迭代2400次。
发布于 2021-05-12 19:53:30
迭代地使用数据帧是很慢的
在循环等中迭代使用Dataframe的
val rdd = df.rdd rdd.cache() sqlCtx.createDataFrame(rdd.df.schema)
来自spark文档:检查点可用于截断此DataFrame的逻辑计划,这在计划可能呈指数增长的迭代算法中特别有用。它将保存到使用SparkContext.setCheckpointDir().设置的检查点目录内的文件中
采取的任何操作
https://stackoverflow.com/questions/57916024
复制相似问题