我在Hive上有一张table,结构如下:传感器;温度;压力1;23;232;34;45三;45;55我想知道是否有可能用hiveql udf实现knn算法。目标是获得一个表作为输出(例如,对于k=3),如下所示:传感器;温度;压力;1传感器;第二传感器;3传感器我很感激你的帮助汤
ijnw1ujt1#
我假设你正在寻找一些免费的开源软件。有hivemall,但目前不支持欧几里得距离:https://github.com/myui/hivemall但是,它支持几个距离度量。
ee7vknir2#
euclid_distance / euclid_similarity 从hivemall v0.3.2-3开始支持此功能。您可以使用各种相似性函数(余弦相似性、jaccard相似性、Angular 相似性和欧几里德相似性)执行k-nn,如下所示:https://github.com/myui/hivemall/wiki/news20-nearest-neighbor-(knn)-搜索#knn使用minhashing搜索输入格式为字符串数组 features .
euclid_distance
euclid_similarity
features
|: rowid :|: features :| ----------------------------------------------------- | 1 | [Sensor:1, Temperature:23, Pressure:23] | | 2 | [Sensor:2, Temperature:34, Pressure:55] |
您需要如下自联接:
select l.rowid, euclid_distance(l.features, r.features) as distance from mytable l LEFT OUTER JOIN mytable r
注意:为了高效的top-k相似性列表,您可以使用 each_top_k 功能如下:https://github.com/myui/hivemall/wiki/efficient-top-k-computation-on-apache-hive-using-hivemall-udtf#top-k-相似计算
each_top_k
2条答案
按热度按时间ijnw1ujt1#
我假设你正在寻找一些免费的开源软件。
有hivemall,但目前不支持欧几里得距离:https://github.com/myui/hivemall
但是,它支持几个距离度量。
ee7vknir2#
euclid_distance
/euclid_similarity
从hivemall v0.3.2-3开始支持此功能。您可以使用各种相似性函数(余弦相似性、jaccard相似性、Angular 相似性和欧几里德相似性)执行k-nn,如下所示:
https://github.com/myui/hivemall/wiki/news20-nearest-neighbor-(knn)-搜索#knn使用minhashing搜索
输入格式为字符串数组
features
.您需要如下自联接:
注意:为了高效的top-k相似性列表,您可以使用
each_top_k
功能如下:https://github.com/myui/hivemall/wiki/efficient-top-k-computation-on-apache-hive-using-hivemall-udtf#top-k-相似计算