복붙노트

[HADOOP] 하둡 GIS 프레임 워크를 사용하여 공간 데이터를로드하는 방법

HADOOP

하둡 GIS 프레임 워크를 사용하여 공간 데이터를로드하는 방법

나는 하이브 공간 지원을 추가하기 위해, 하둡 GIS 프레임 워크를 사용하는 것을 시도하고있다. 내가하고 싶은 것 중 하나는 외부 데이터에서 (PostGIS와의) 공간 테이블을 만드는 것입니다. 불행하게도, ESRI가 제공하는 시리얼은 오히려 같은 WKT, GeoJSON와 같은 표준보다는 ESRI JSON 형식으로 매핑합니다. 내가하고 결국 무엇을, 해결의 조금이었다.

우선, GeoJSON에 기하학적 필드를 변환, 탭 분리 파일로 내 PostGIS와 데이터를 내보낼 수 있었다.

\COPY (select id, ST_AsGeoJSON(geom) from grid_10) TO '/tmp/grid_10.geojson';

그럼 난 S3 파일 시스템의 어딘가에 넣어, 그리고 CSV 시리얼 라이저를 사용하여로드. 정수, 텍스트 (GeoJSON를 포함) : 그것은 두 개의 필드와 테이블을 만들었습니다.

CREATE EXTERNAL TABLE grid_10 (id bigint, json STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\n'
STORED AS TEXTFILE
LOCATION 's3://some-url/data/grids/geojson';

나는이 쿼리를 사용하여,이 GeoJSON에서 제대로 형상을 생성 할 수 있습니다 :

SELECT ID, ST_AsText(ST_GeomFromGeoJSON(json)) from grid_10 limit 3;

어떤 출력 :

지금은 구조가 BLOB이 아닌 텍스트로 저장됩니다 실제 공간 테이블에이 테이블을 변환하고 싶었다. 나는 다음과 같은 쿼리를했다 :

create table new_grid as SELECT ID, ST_GeomFromGeoJSON(json) as geom from grid_10;  

놀랍게도,이 테이블의 내용은 반복 반복 같은 형상이다.

WKT / GeoJSON으로부터 기하학을 생성하고 테이블에 그것을 쓰기 - - 동일한 결과와 나는 같은 접근 방식을 시도했다. 이 버그인가요? 그것이 의미 하는가, 나는 그런데 그것은에 BLOB를 조작하는 것보다 계산면에서 훨씬 비용이 많이 드는되지 변환 - 온 - 더 - 플라이를 사용하여 공간 쿼리를 수행하는 비난, 그리고 무엇입니까?

create table grid_cnt as 
SELECT grid_10.id, count(grid_10.id) as ptcnt FROM grid_10 JOIN tweets WHERE     ST_Contains(ST_GeomFromGeoJSON(grid_10.json),ST_Point(tweets.longitude, tweets.latitude))=true GROUP BY grid_10.id;

사람이 같은 문제를 경험하고 있는지 궁금했다.

최신 정보: 이 문제는 하이브 0.11 일어나고 아마존 하둡의 배포 3.3.1에서 실행되었다. 나는 또한이 링크에서의 ESRI 단지를 당겨했다 :

https://github.com/Esri/gis-tools-for-hadoop/archive/master.zip

나는 단지 2.0 및 최신 하이브 (0.13)로 전환 할 때, 문제는 사라졌다.

당신은 여기 내 문제 보고서를 찾을 수 있습니다. 이 같은 문제가 발생하는 사람을 도움이되기를 바랍니다.

해결법

  1. ==============================

    1.나는에 당신이 시도 WKT 즉 텍스트 형식 대신 기하학 형식으로 형상 정보를 저장하고있어 일부 전문가의 솔루션 ... 위의 당신에 의해 기술 같은 문제를 통해 갔다.

    나는에 당신이 시도 WKT 즉 텍스트 형식 대신 기하학 형식으로 형상 정보를 저장하고있어 일부 전문가의 솔루션 ... 위의 당신에 의해 기술 같은 문제를 통해 갔다.

  2. from https://stackoverflow.com/questions/27147274/how-to-load-spatial-data-using-the-hadoop-gis-framework by cc-by-sa and MIT license