0

Я применил механизм рекомендаций, используя Python2.7 в Google Dataproc/Spark, и вам нужно сохранить вывод в виде записей в Datastore для последующего использования API-интерфейсом App Engine. Однако, похоже, нет способа сделать это напрямую.Сохранить данные из Dataproc в Datastore

Не существует соединителя Datastore для Python для Dataproc, насколько я могу судить. SDK Python Dataflow не поддерживает запись в Datastore (хотя Java-версия). MapReduce не имеет записи для Datastore.

Это не оставляет много вариантов. На данный момент я думаю, что мне придется записывать записи в Google Cloud Storage и иметь отдельную задачу, выполняемую в App Engine, чтобы собирать их и хранить в Datastore. Это не идеальное - согласование двух процессов имеет свои трудности.

Есть ли лучший способ получить данные из Dataproc в хранилище данных?

ответ

0

В прошлом команда Cloud Dataproc поддерживала Datastore Connector for Hadoop, но она была устаревшей по ряду причин. В настоящее время нет официальных планов по его возобновлению.

На упомянутой выше странице есть несколько вариантов, и ваш подход является одним из упомянутых решений. На данный момент, я думаю, что ваша установка, вероятно, одна из самых простых, если вы привержены облачному хранилищу данных.

+0

Кажется, что эта страница вводит в заблуждение. Из приведенных опций вариант 1 кажется невозможным, поскольку SDK Python Dataflow не поддерживает запись в Datastore, а опция 2 по крайней мере является непозволительно трудной, поскольку MapReduce ожидает, что ряд сервисов, которых нет в Dataproc (имитируя приложение служба идентификации, я отказался, когда MapReduce искал службу memcache). Вариант 3 возможен, но включает в себя синхронизацию другой задачи с AppEngine, которая не подходит для моего использования. Вариант 4 относится к входу из хранилища данных, а не к нему. – nanojack

2

Мне удалось сохранить записи Datastore из Dataproc. Это включало установку дополнительных компонентов на мастер VM (SSH из консоли)

AppEngine SDK установлен и инициализирован с помощью

sudo apt-get install google-cloud-sdk-app-engine-python 
sudo gcloud init 

Это помещает новый каталог Google под /usr/lib/google-cloud-sdk/platform/google_appengine/.

Библиотека датастор затем устанавливается с помощью

sudo apt-get install python-dev 
sudo apt-get install python-pip 
sudo pip install -t /usr/lib/google-cloud-sdk/platform/google_appengine/ google-cloud-datastore 

По причинам, которые еще не понимают, это на самом деле установлен на один уровень ниже, то есть в /usr/lib/google-cloud-sdk/platform/google_appengine/google/google, так что для моих целей было необходимо вручную переместить компоненты на один уровень в пути.

Чтобы включить интерпретатор, чтобы найти этот код, мне пришлось добавить /usr/lib/google-cloud-sdk/platform/google_appengine/ на путь. Обычные трюки BASH не были устойчивыми, поэтому я закончил это с самого начала моей рекомендации.

Из-за большого объема данных, которые нужно сохранить, я также потратил много времени на его сохранение через MapReduce. В конечном итоге я пришел к выводу, что слишком много необходимых услуг пропало в Dataproc. Вместо этого я использую многопроцессорный пул, который достигает приемлемой производительности.

Смежные вопросы