仍然是Scala和Spark的初学者,我认为我只是在这里毫无头脑。我有两个RDDS,类型之一: -如何在两个单独的RDD之间映射键/值对?
((String, String), Int) = ((" v67430612_serv78i"," fb_201906266952256"),1)
其他类型的: -
(String, String, String) = (r316079113_serv60i,fb_100007609418328,-795000)
如可以看出,这两个RDDS的前两列是相同的格式。基本上他们是ID,一个是'tid',另一个是'uid'。
问题是这样的:
是否有通过我可以以这样的方式,该TID和uid在两者匹配,并且全部为相同的匹配ID的数据被显示在比较这两个RDDS的方法一行没有任何重复?
例如:如果我得到一个匹配两个RDDS
((String, String), Int) = ((" v67430612_serv78i"," fb_201906266952256"),1)
(String, String, String) = (" v67430612_serv78i"," fb_201906266952256",-795000)
之间TID和UID的则输出是: -
((" v67430612_serv78i"," fb_201906266952256",-795000),1)
两个RDDS ID是不以任何固定的订购。它们是随机的,即在两个RDD中相同的uid和tid序列号可能不一致。
而且,怎么会当第一RDD型保持不变,但第二RDD变化键入解决方案的变化: -
((String, String, String), Int) = ((daily_reward_android_5.76,fb_193055751144610,81000),1)
我必须这样做,而无需使用SQL星火的。
为什么接受?你想要没有spark的SQL帮助,不是吗? –
没有冒犯!正式的是。但是非正式地讲,这也教会了我一些新的东西,因为我从来没有单独使用过SQL,或者之前使用过Spark。这就是接受和赞成的原因。 – PixieDev
我认为你可以使用RDD map,mapPartitions和join方法来实现你的目标。 – Tom