我想知道如何在工人上创建包含Map的RDD。这个Map / RDD很小,我希望这个RDD完全驻留在一台机器/执行器上(我猜重新分区(1)可以实现这一点)。此外,我希望能够在本地执行程序上缓存此Map / RDD,并将其用于在此执行程序上运行的任务中进行查找。
我该怎么做?
答案 0 :(得分:0)
您可以使用sc.parallelize(data)
在驱动程序上创建RDD。对于存储Map,它可以分为两部分作为键,值,然后可以作为两个单独的列存储在RDD / Dataframe中。
答案 1 :(得分:0)
不,您无法在工作节点中创建RDD。只有驱动程序才能创建RDD。
在你的情况下,广播变量似乎是解决方案。它会将数据发送给所有工作人员,但是如果您的地图很小,那么它就不是问题。
你无法控制你的RDD放在哪个分区上,所以你不能只进行重新分区(1) - 你不知道这个RDD是否会放在同一个节点上;)广播变量将在每个节点,所以查找会很快