Извлечение записей из массива HIVE - PullRequest
0 голосов
/ 03 октября 2018

У меня есть таблица HIVE, в которой данные загружаются для tripid как tripid, gps_location_1, gps_location_2 местоположения, это может быть 10 gps местоположений для одной поездки, а для другой поездки может быть 500 gps местоположений, когда я запрашиваю данные, мои результатыследующим образом

выберите tripid, размер (gps) в качестве числа от поездки;

tripid gps_location_1 | gps_location_2 |count |

1451f2b3d | 44.1145 |44,1148 |9 |

выберите tripid, gps.gps_location_1, gps.gps_location_1 в качестве отсчета от поездки;

+ --------- + ----------------------------------------------------------- +---------------------------------------------------------- +

tripid |gps_location_1 |gps_location_2 |count |

+ --------- + ------------------------------------------------------------- + ---------------------------------------------------------- + 1451f2b3d | [44.1145,44.1146,44.1147,44.1148, 44.1148,44.1129,44.1127,44.1121] |[44.1148,44.1146,44.1146,44.1141,44.1138,44.1129,44.1127] |9 |+ --------- + ------------------------------------------------------------------ + ---------------------------------------------------------- +

Я вижу первое значение из поездкитаблица массива.

выберите tripid, gps [0] .gps_location_1, gps [0] .gps_location_1 из поездки;

tripid gps_location_1 gps_location_2

1451f2b3d 44.1145 44.1148

2-я строка из таблицы массивов поездок

выберите tripid, gps [1] .gps_location_1, gps [1] .gps_location_1 из поездки;

tripid gps_location_1 gps_location_2

1451f2b3d 44.114644.1146

Последняя строка таблицы массивов поездок

выберите tripid, gps [размер (gps)]. Gps_location_1, gps [размер (gps)]. Gps_location_1 из поездки;

1451f2b3d 44.1121 44.1127

Мне нужно сохранить каждую строку в моей новой таблице target_trip следующим образом, перебрать все строки для одного tripid в таблице trip и вставить в target_table, как показано ниже.

Как мне достичьэто?

tripid gps_location_1 gps_location_2

1451f2b3d 44.1145 44.1148

1451f2b3d 44.1146 44.1146

1451f2b3d 44.1147 44.1146

1451f2b3d 44.1148 44.1141

2 522 * 5251054 * 1451f2b3d 44,1127 44,1129

1451f2b3d 44,1121 44,1127

1 Ответ

0 голосов
/ 03 октября 2018

Использовать lateral view explode:

elect tripid, coordinates.gps_location_1, coordinates.gps_location_1 
  from trip
       lateral view outer explode(gps) s as coordinates

explode() UDTF генерирует строки для каждого элемента массива.вид сбоку применяет UDTF к каждой строке базовой таблицы, а затем присоединяет результирующие строки к входным строкам, чтобы сформировать виртуальную таблицу с указанным псевдонимом таблицы.

См. также this ответьте для получения дополнительной информации о боковой проекции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...