Как оптимизировать сканирование 1 огромного файла / таблицы в Hive, чтобы подтвердить / проверить, содержится ли длинная точка в форме геометрии wkt
В настоящее время я пытаюсь связать каждый широковещательный пинг с устройства с его почтовым индексом.
Я удалил нормализованные данные проверки связи по длинному латинскому устройству и создал таблицу соединений между продуктами и декартовыми продуктами, в которой каждая строка имеет ST_Point (long, lat), geometry_shape_of_ZIP и связанный почтовый индекс для этой геометрии. для тестирования у меня в таблице около 45 миллионов строк, и она будет увеличиваться до 1 миллиарда каждый день.
Несмотря на то, что данные сглажены и условия соединения отсутствуют, выполнение запроса занимает около 2 часов. Есть ли более быстрый способ вычисления пространственных запросов? Или как я могу оптимизировать следующий запрос.
Inline - это некоторые шаги оптимизации, которые я уже выполнил. При использовании оптимизаций все остальные операции выполняются не более чем за 5 минут, за исключением одного шага. Я использую кластер AWS 2 узловых узлов и 5 узлов данных.
set hive.vectorized.execution.enabled = true;
set hive.execution.engine=tez;
set hive.enforce.sorting=true;
set hive.cbo.enable=true;
set hive.compute.query.using.stats=true;
set hive.stats.fetch.column.stats=true;
set hive.stats.fetch.partition.stats=true;
analyze table tele_us_zipmatch compute statistics for columns;
CREATE TABLE zipcheck (
`long4` double,
`lat4` double,
state_name string,
country_code string,
country_name string, region string,
zip int,
countyname string) PARTITIONED by (state_id string)
STORED AS ORC TBLPROPERTIES ("orc.compress" = "SNAPPY",
'orc.create.index'='true',
'orc.bloom.filter.columns'='');
INSERT OVERWRITE TABLE zipcheck PARTITION(state_id)
select long4, lat4, state_name, country_code, country_name, region, zip, countyname, state_id from tele_us_zipmatch
where ST_Contains(wkt_shape,zip_point)=TRUE;
ST_Contains - это функция от esri (ссылка:https://github.com/Esri/spatial-framework-for-hadoop/wiki/UDF-Documentation#relationship-tests ).
Любая помощь очень ценится.
Благодарю.