【发布时间】:2016-01-24 03:11:38
【问题描述】:
我有两个 rdd,一个 rdd 只有一列,另外有两列连接键上的两个 RDD 我添加了 0 的虚拟值,有没有其他有效的方法来使用 join ?
val lines = sc.textFile("ml-100k/u.data")
val movienamesfile = sc.textFile("Cml-100k/u.item")
val moviesid = lines.map(x => x.split("\t")).map(x => (x(1),0))
val test = moviesid.map(x => x._1)
val movienames = movienamesfile.map(x => x.split("\\|")).map(x => (x(0),x(1)))
val shit = movienames.join(moviesid).distinct()
编辑:
让我把这个问题转换成 SQL。比如说我有table1 (moveid) 和table2 (movieid,moviename)。在 SQL 中,我们编写如下内容:
select moviename, movieid, count(1)
from table2 inner join table table1 on table1.movieid=table2.moveid
group by ....
在 SQL 中,table1 只有一列,而 table2 有两列,join 仍然有效,在 Spark 中同样的方式可以连接来自两个 RDD 的键。
【问题讨论】:
-
你的问题不是很清楚。你能重新制定吗?
-
您是否正在尝试实现过滤,例如内部连接?
-
是和内连接 dataset1=123,starwars 一样;数据集2=123; dataset1.join(datset2) 失败,因为 dataset2 缺少一个元素,所以我需要在 dataset2=123,0 中添加默认值;那么如果 dataset2 包含的元素数量较少,连接是否有效?
-
你能给出你声明的值的类型吗?
-
我认为this post 有您正在寻找的答案。
标签: scala apache-spark