【发布时间】:2018-08-20 22:39:30
【问题描述】:
我正在开展一个项目,其测试数据接近 100 万条记录和 4 个此类文件。 任务是执行大约 40 次计算,连接来自 4 个不同文件的数据,每个文件接近 1gb。
目前,我使用 saveastable 将每个数据保存到 spark 表中并执行操作。例如-table1 与 table2 连接,结果保存到 table3。 Table3(1 和 2 的结果)与 table4 连接,依此类推。最后,我将这些计算保存在不同的表上并生成报告。
整个过程大约需要 20 分钟,我担心当这段代码进入生产环境时,数据可能比这多 5 倍,会不会出现性能问题。
或者最好以分区方式保存每个文件中的这些数据,然后执行连接并到达最终结果集。
P.S - 目标是获得即时结果,并且可能存在用户正在更新文件中的几行并期望即时结果的情况。而且数据是按月计算的,基本上每个月一次,里面有分类和子分类。
【问题讨论】:
-
它们需要应用相同的分区,但实际上可能已经如此。尝试比较结果。
-
你能详细说明一下吗?
-
你帖子的标题有点令人困惑。反正。听起来您没有将大表与较小的表连接起来。而是N个大表。线索是以相同的方式对数据帧进行分区以减少洗牌。希望连接键是通用的,如果不是,您可以明智地选择以减少洗牌。
-
更新有很多含义。
标签: apache-spark-sql