Как загрузить данные PostgreSQL в GeoMesa (с хранилищем данных Cassandra)?

Я попытался загрузить данные Postresql в Geomesa (с хранилищем данных Cassandra) с помощью конвертера JDBC.

Загрузка из формы работает нормально, так что с настройками Cassandra и GeoMesa все в порядке.

Далее я попытался загрузить данные из PostgreSQL.

Команда:

echo "ВЫБЕРИТЕ год, геометрию, grondgebruik, код_культуры, имя_культуры, идентификатор поля, глобальный_ид, площадь, периметр, геохэш ИЗ v_gewaspercelen2018" | bin/geomesa-cassandra ingest -c catalog -P cassandraserver:9042 -k agrodatacube -f посылка -C geomesa.converters.parcel -u -p

Файл определения конвертера geomesa.converters.parcel выглядит следующим образом:

geomesa.converters.parcel = {

type = "jdbc"

connection = "dbc:postgresql://postgresserver:5432/agrodatacube"

id-field="toString($5)"

fields = [

    { name = "fieldid",    transform = "$5"        }

    { name = "global_id",    transform = "$6"        }

    { name = "year",    transform = "$0"         }

    { name = "area",  transform = "$7"        }

    { name = "perimeter",  transform = "$8"         }

    { name = "grondgebruik",   transform = "$2"      }

    { name = "crop_code",    transform = "$3"     }

    { name = "crop_name",   transform = "$4"       }

    { name = "geohash",   transform = "$9"     }

    { name = "geom",   transform = "$1"      }

]
}

Вывод геомезы:

INFO  Schema 'parcel' exists

INFO  Running ingestion in local mode

INFO  Ingesting from stdin with 1 thread
[                                                         ]   0% complete 0 i[                                                            ]   0% complete 0 ingested 0 failed in 00:00:01

ERROR Fatal error running local ingest worker on <stdin>

[                                                            ]   0% complete 0 i[                                                            ]   0% complete 0 ingested 0 failed in 00:00:01

INFO  Local ingestion complete in 00:00:01

INFO  Ingested 0 features with no failures for file: <stdin>

WARN  Some files caused errors, ingest counts may not be accurate

Кто-нибудь знает, что здесь не так?


person hugo_wur    schedule 25.04.2019    source источник


Ответы (2)


Вы можете проверить в папке logs более подробные сведения об ошибках. Однако, на первый взгляд, конвертер JDBC следует стандартному результату. установить нумерацию, то есть первое поле имеет номер $1 (а не $0). Кроме того, вам может понадобиться преобразовать вашу геометрию с помощью функции преобразования, например geometry($2).

person Emilio Lahr-Vivaz    schedule 25.04.2019

Спасибо Эмилио, оба предложения имеют смысл!

  1. Счетчик полей конвертера начинается с 1.
  2. Внутри файла определения конвертера изменено

{имя = "геометрия", преобразование = "$2"}

в

{ имя = "геометрия", преобразование = "геометрия ($ 2)" }

  1. Команда выбора SQL должна быть:

ВЫБЕРИТЕ год, ST_AsText(geom), .... FROM v_gewaspercelen2018

Кстати, имя пользователя и пароль являются частью строки подключения (которая находится внутри файла geomesa.converters.parcel):

connection = "dbc:postgresql://postgresserver:5432/agrodatacube?user=имя пользователя и пароль=пароль"

Таким образом, флаги -u и -p не появляются в финальной команде:

echo "ВЫБЕРИТЕ год, ST_AsText(geom), grondgebruik, crop_code, crop_name, fieldid, global_id, area, perimeter, geohash FROM v_gewaspercelen2018" | bin/geomesa-cassandra ingest -c catalog -P cassandraserver:9042 -k agrodatacube -f посылка -C geomesa.converters.parcel

С этими изменениями это работает.

Спасибо еще раз!

Хьюго

person hugo_wur    schedule 26.04.2019