PySpark -并行执行每列 Dataframe 的操作

b5buobof  于 2023-05-28  发布在  Spark
关注(0)|答案(1)|浏览(199)

我有一个包含50个特征列和一个输出列的spark数据框架,并且希望并行地将每个特征的单个模型拟合到输出。在PySpark中有没有一种简单的方法可以做到这一点?
顺序地执行每个模型的拟合似乎是低效的,因为每个模型彼此独立。
谢谢你的帮助

ylamdve6

ylamdve61#

虽然Spark-dataFrames可以在列抽象中承载许多模型,但核心缺失在于忘记了Spark在“延迟”的流处理流中使用它们,阿拉普发生执行(用于“驱逐”dataFrame计算中无用部分的技巧(如果这些“稍后”不进一步使用,那么为什么要计算它们呢?)和用于通过分割工作的延迟掩蔽)
这是什么意思?
我们可以想象一下,如果我们将沙子装入前1000辆马车,水泥装入下一个1000辆马车,水装入下一个1000辆马车,如果目标是混合BETON(来自沙子,水泥和水)并将其装入最后1000辆马车,将最后一辆马车后面几英里的地方与水连接,这种“Spark”-o-train将永远不会更快。
如果人们将断开这种组合的“Spark”列车,并将所有与BETON过程相关的货车并排“对齐”移动(因此,人们还必须建造至少4个平行的铁轨,并添加如此多的发动机以“运动”),
仅此而已
将允许以真正的[PARALLEL]方式混合(计算)和存储所得到的BETON,
给定
没有顺序(重新)排序和没有并发(重新)使用,阻塞越少,
足够多的资源,足以在这种超快的专用BETON混合ASAP Quad-o-train中一次获取、处理和存储1000个货车的所有块,无论有多少货车仍然挂在最后一辆货车后面,我们的“DATA”-for-BETON(无论它是附在各自铁轨上的水-,沙子-或水泥-进料货车上-这仍然尽快运行BETON,具有单个等待时间步长-获取时间-{ SAND|水泥|水}-一次进入BETON-混合车,我们在这里,没有更快的过程存在)
在这样一个无阻塞、零共享、零延迟的资源丰富的生态系统中,没有那么多资源的容量?
然后期待任何东西,但比这更少的性能。
共享资源,串行数据获取(在dataFrames的流中),只是将进程推迟到稍后的某个时刻,阿拉普被称为延迟掩蔽是公平的,有时是有用的,如果数据内容和计算图允许的话,而不是一般的。
对不起,但这就是真实的世界的执行实际发生的情况,一旦我们去看内部工作,忽略营销福音神话。
一旦所有 Dataframe 都必须“通过”并且所有资源都保持忙碌,将许多功能加载到同一个“Spark”-o-train上并不能帮助多模型训练更快地运行。

相关问题