- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我是 Spark 初学者,我面临以下问题:我有一个项目集合(假设它们是笛卡尔坐标或二维点),我想获取每个项目的附近元素。决定一个项目是否靠近另一个取决于一个函数(假设我们想要所有欧几里德距离小于给定值的点)。
当然,获得一个点的邻居是微不足道的,我已经做到了。只需过滤
项目即可。我不能做的是为集合中的所有点获取它们,我不知道如何有效地做到这一点。
我在这里写了一个我想从一个小数据集中得到的结果的例子,以更清楚地说明我的需求:
sourceData = [ (0,1) , (1,1), (0,0), (50,10), (51,11) ]
result = [
(0,1) => [(1,1), (0,0)],
(1,1) => [(0,1), (0,0)],
(0,0) => [(0,1), (1,1)],
(50,10) => [(51,11)],
(51,11) => [(50,10)]
]
您知道如何以有效的方式做到这一点吗?
到目前为止,我已经试过了:
return sourceData.cartesian(sourceData)
.filter(new PairNeighborFilter<T>())
.groupByKey();
与
public class PairNeighborFilter<T extends DbScanPoint> implements Function<Tuple2<T, T>, Boolean> {
/**
*
*/
private static final long serialVersionUID = 1L;
public static double eps;
@Override
public Boolean call(Tuple2<T, T> v1) throws Exception {
return v1._1().distanceTo(v1._2()) <= eps && !v1._1().equals(v1._2());
}
}
但我确实认为这是一种非常低效的方法。此外,稍后我需要计算每个键的元素,这只能迭代所有元素并计算它们,这是性能的另一个耻辱。我想要一个 JavaRDD
类作为 JavaPairRDD
的值,而不是 Iterable
,这可能吗?
谢谢。
最佳答案
为了有效地找到邻居,您可能希望避免进行完整的笛卡尔积,因为它是 O(n^2) 操作。一种替代方法是使用局部敏感哈希来识别一组较小的候选点对,然后计算候选点对之间的确切距离。 (这是一种“近似”最近邻方法,因为任何特定点的一些真正的最近邻可能不会散列到与所讨论的点相同的桶中。)
关于java - 使用 Spark [`cartesian()` 问题创建邻居矩阵],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28727823/
我从 SpatialPolygonsDataFrame 开始,它包含用于创建加纳各地区 map 的数据(可在 http://www.diva-gis.org/datadown 获取)。我正在尝试创建一
我遇到了一个问题,我需要根据存储在前一个元素中的信息修改容器的元素。示例: 如果前一个 vector 元素可被 2 整除,则将当前元素乘以 10 vector -> [12, 11, 33, 10]
总的来说,我对脚本编写还很陌生。我正在编写一个 expect 脚本,它通过 ssh 进入 Cisco 交换机,并运行“show cdp neighbors”命令来获取连接到交换机的所有设备的列表。然后
我正在尝试比较节点的值。使用 flood-fill 算法,我能够垂直和水平检查网格的每个节点。现在我必须更新我的代码以检查位于对 Angular 线上的单元格,如下图所示: 红色是当前节点,黄色是需要
我使用预先计算的指标使用 Scikit-Learn 的最近邻/半径分类。这意味着,我将成对距离的 n_samples_train x n_samples_train 矩阵传递给分类器的拟合方法。 现在
我有一个大的稀疏图,我将其表示为邻接矩阵(100k x 100k 或更大),存储为边数组。具有(非稀疏)4 x 4 矩阵的示例: 0 7 4 0 example_array = [ [7,1,2],
从有向图中并给出两个顶点 (v, u) 我需要找到:共同的“出”邻居和共同的“入”邻居。 例如: import networkx as nx ghybrid = nx.DiGraph() ghybri
我正在使用 JavaScript 进行图像处理,我想知道是否有任何通用公式可以确定像素的 x 邻居。 我知道对于 3*3 的正方形,可以使用特定的 x 和 y 像素确定 8 个邻居。 (x-1,y-1
在 CentOS 6.4(内核 2.6.32)上,为什么下面的第二个 arping 调用会创建一个新的 ARP 表条目,而第一个不会?网络行为是相同的,我感到困惑的是,在我看来,系统调用实际上是等同的
我是一名优秀的程序员,十分优秀!