H20数据帧和Spark RDD之间的差异

时间:2017-05-21 08:34:55

标签: h2o

我正在调查h2o框架以使用其额外的机器学习工具。我很好奇H20数据帧和Spark RDD之间的区别是什么。是否可以像Spark RDD一样缓存或持久化h2o数据帧?

1 个答案:

答案 0 :(得分:3)

与Spark的数据结构相反,H2O帧并不是懒惰的。因此,无论如何我们将整个帧加载到内存中都不需要显式的缓存/持久化。如果您的数据集大于群集的内存,但是出于性能原因,我们会以这种方式执行此操作,这可能会出现问题。无论如何,无论如何,您都可以将RDD缓存到机器学习中。 H2O框架有2个要求:

  • 总的群集内存必须足够大才能容纳整个框架
  • 框架的一行必须完全适合每台机器(我们不按列分配框架,只是逐行分配,这意味着我们将X行,一个块,并将它们全部放在一个节点上)

H2O帧就像RDD一样是完全分布式的,只有部分帧位于每个节点上。我们的大部分算法利用数据局部性(即每个节点仅使用存储在其上的行进行计算),但您也可以随机播放数据,因此每个节点都使用整个帧。

将RDD转换为H2O帧时,我们在内存中实现了整个数据。当反过来时,没有内存开销,因为我们只是迭代H2O帧。

H2O帧的通用性不如RDD,但由于我们可以高度压缩内存中的数据。