问题描述
val vertices = df.rdd.flatMap(row => row.getAs[Seq[Row]](3)
.map(element => (element.getLong(0),element.getBoolean(1),element.getBoolean(2))))
val verticesTrain = vertices.filter{case(id,test,validation) => (test==false)&&(validation==false)}.map(_._1)
val edges = df.rdd.flatMap(row => row.getAs[Seq[Row]](1)
.map(element => (element.getLong(0),element.getLong(1))))
val graph = Graph.apply(verticesTrain.map(vertex => (vertex,1.0)),edges.map{case(s,d)=>Edge(s,d,1.0)})
但是,当我计算图形的顶点时,似乎我拥有所有的顶点,而不仅仅是顶点顶点中的顶点。
graph.vertices.count()
Out: Long
56944
verticesTrain.count()
Out: Long
44906
如何仅使用顶点火车作为顶点来构建图形?
解决方法
使用有效的子图:
当您要从图形的边缘或顶点过滤掉时,应使用此功能。
这是我用于解决此特定问题的代码:
var CACHE_NAME = 'my-cache-v1';
var urlsToCache = [
'/'
// More to be added later
];
self.addEventListener('install',function(event) {
// Perform install steps
event.waitUntil(
caches.open(CACHE_NAME)
.then(function(cache) {
console.log('Opened cache');
return cache.addAll(urlsToCache);
})
);
});
self.addEventListener('activate',function(event) {
event.waitUntil(
createDB() //Use this function to create or open the database
);
});
self.addEventListener('fetch',function(event) {
event.respondWith(
caches.match(event.request)
.then(function(response) {
// Cache hit - return response
if (response) {
return response;
}
return fetch(event.request).then(
function(response) {
// Check if we received a valid response
if(!response || response.status !== 200 || response.type !== 'basic') {
return response;
}
var responseToCache = response.clone();
caches.open(CACHE_NAME)
.then(function(cache) {
cache.put(event.request,responseToCache);
});
return response;
}
);
})
);
});
function createDB() {
idb.open('mydata',1,function(upgradeDB) {
var store = upgradeDB.createObjectStore('user',{
keyPath: 'id'
});
store.put({id: 1,name: 'John Doe'}); //This can be updated with an AJAX call to the database later
});
}