在火花流中我可以在worker上创建RDD

时间:2016-09-27 05:10:28

标签: apache-spark rdd

我想知道如何在工人上创建包含Map的RDD。这个Map / RDD很小,我希望这个RDD完全驻留在一台机器/执行器上(我猜重新分区(1)可以实现这一点)。此外,我希望能够在本地执行程序上缓存此Map / RDD,并将其用于在此执行程序上运行的任务中进行查找。

我该怎么做?

2 个答案:

答案 0 :(得分:0)

您可以使用sc.parallelize(data)驱动程序上创建RDD。对于存储Map,它可以分为两部分作为键,值,然后可以作为两个单独的列存储在RDD / Dataframe中。

答案 1 :(得分:0)

不,您无法在工作节点中创建RDD。只有驱动程序才能创建RDD。

在你的情况下,广播变量似乎是解决方案。它会将数据发送给所有工作人员,但是如果您的地图很小,那么它就不是问题。

你无法控制你的RDD放在哪个分区上,所以你不能只进行重新分区(1) - 你不知道这个RDD是否会放在同一个节点上;)广播变量将在每个节点,所以查找会很快