Как выбрать каждую пару записей в таблице в Hive? - PullRequest
0 голосов
/ 09 июня 2018

В Hive у меня есть таблица, которая содержит два поля (lat и long).Я хотел бы найти топ N кратчайших записей для каждой записи в таблице.Я думаю, что я могу написать простой UDF (или использовать некоторую существующую библиотеку UDF), чтобы вычислить расстояние на основе широты и долготы с учетом пары широты и долготы.

Теперь, чтобы сделать это, мне нужно написать SQL, чтобы выбрать каждую пару записей в таблице.Например, если в таблице 4 записи (A, B, C и D), я хочу сгенерировать следующие 6 пар:

A, B
A, C
A, D
B, C
B, D
C, D

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 09 июня 2018

Hive поддерживает cross join, поэтому я написал бы это как:

select t1.col, t2.col
from t t1 cross join
     t t2
where t1.col < t2.col;

В этой формулировке предполагается, что col уникален - как в вашем примере.

0 голосов
/ 09 июня 2018

Я думаю, вам нужно подать заявление.

 Select 
     t1.column as c1, 
     t2.column as c2
  From table as t1
Cross apply
   Table as t2
Where t1.column <> t2.column
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...