我有一对格式为RDD[(String, String)]
的RDD和来自文件的键列表。我想要一个RDD,它只包含那些与列表中的键匹配的键值对。我怎样才能实现这一点(最好是Scala)?
谢谢。
答案 0 :(得分:4)
答案 1 :(得分:2)
这取决于您拥有多少数据。
使用广播变量向每个执行者发送列表,然后使用变量:
进行过滤val allowedSet = Source.fromFile("filename.txt").getLines.toSet
val allowedBV = sparkContext.broadcast(allowedSet)
val filtered = pairRDD.filter (x => allowedBV.value.contains(x._1))
我没有看到加入非对RDD的简单方法,但您可以使用数据集:
val allowedDS = sc.parallelize(allowedSet).toDF("allowedKey").as[String]
然后使用此数据集加入您的数据集:
val joined = pairRDD.toDF("key", "value").join (allowedDS, 'key === 'allowedKey).dropColumn('allowedKey);
或者你可以做这两个RDD的笛卡儿,但它可能很慢
答案 2 :(得分:1)
其实很简单:
<div class="container">
<div class="row">
<a href="/blog"><h4>News</h4></a>
<% blog.forEach(function(blog) { %> // Creates a blog and adds a title, image and body to it
<div class="col-md-4 col-sm-6">
<div class="thumbnail">
<img src="<%= blog.image %>"> //Adds image
</div>
<div class="caption">
<a href="#"><h4><%= blog.title %></h4></a> //Adds image
</div>
<span><%= blog.created %></span>
<div class="relative">
<p><%- blog.body %></p> //Adds body content
<div class="absolute"></div>
</div>
<a href="/blog/<%= blog._id %>">Read More</a>
</div>
<% }) %>
</div>
是的。