在Hive中,我有一个包含两个字段(lat和long)的表。我想找到表中每条记录的前N个最短记录。我想我可以编写一个简单的UDF(或利用一些现有的UDF库)来计算基于lat和long的距离,给出一对lat和long。
现在要做到这一点,我需要编写一个SQL来选择表中的每对记录。例如,如果表有4条记录(A,B,C和D),那么我想生成以下6对:
A, B
A, C
A, D
B, C
B, D
C, D
提前致谢!
答案 0 :(得分:1)
Hive支持cross join
,因此我将其写为:
select t1.col, t2.col
from t t1 cross join
t t2
where t1.col < t2.col;
此公式假定col
是唯一的 - 如您的示例所示。
答案 1 :(得分:0)
我认为你需要交叉申请。
Select
t1.column as c1,
t2.column as c2
From table as t1
Cross apply
Table as t2
Where t1.column <> t2.column