【发布时间】:2017-11-17 02:25:29
【问题描述】:
我是 Spark Scala 的新手,我想使用两个数据帧或 RDD 计算相似性变量。我没有他们两个之间的共同键,我做了一个笛卡尔连接,但加入的 Df 很大。是否可以从两个 DF 计算一个新变量而不加入它们?
例如:
df1.show
+----+------------+------+
| id1| food| level|
+----+------------+------+
|id11| pasta| first|
|id11| pizza|second|
|id11| ice cream| first|
|id12| spanish| first|
|id12| ice cream|second|
|id13| fruits| first|
+----+------------+------+
df2.show
+----+---------+
| id2| food|
+----+---------+
|id21| pizza|
|id21| fruits|
|id22| pasta|
|id22| pizza|
|id22|ice cream|
+----+---------+
对于来自 df1 的每个 id1,我想循环来自 df2 的食物变量,按 id2 分组。
我想得到这个输出:
+----+----+----------------+
| id1| id2|count_similarity|
+----+----+----------------+
|id11|id21| 1|id11 and id21 have only "pizza' in common
|id11|id22| 3|
|id12|id21| 0|
|id12|id22| 1|
|id13|id21| 1|
|id13|id22| 0|
+----+----+----------------+
是否可以在 RDD 上使用 map 语句来计算? 谢谢
【问题讨论】:
标签: scala apache-spark rdd