将数据从Dataproc保存到数据存储

问题描述:

我已经在Google Dataproc/Spark中实现了一个使用Python2.7的推荐引擎,并且需要将输出存储为数据存储中的记录,供App Engine API随后使用。但是,似乎没有办法直接做到这一点。将数据从Dataproc保存到数据存储

据我所见,Dataproc没有Python Datastore连接器。 Python Dataflow SDK不支持写入数据存储(尽管Java是这样做的)。 MapReduce没有Datastore的输出写入器。

这似乎没有留下很多选择。目前,我认为我必须将记录写入Google云端存储,并在App Engine中运行单独的任务以收集它们并存储在数据存储中。这并不理想 - 对齐这两个过程有其自身的困难。

有没有更好的方法将Dataproc中的数据存入数据存储区?

过去,云端Dataproc团队维护Datastore Connector for Hadoop,但由于多种原因而不推荐使用。目前还没有正式的计划来重新开发它。

上述页面有几个选项,您的方法是提到的解决方案之一。此时,如果您致力于Cloud Datastore,我认为您的设置可能是最简单的设置之一。

+0

这似乎是该网页是误导。在给出的选项中,选项1似乎是不可能的,因为Python Dataflow SDK不支持写入数据存储区,而选项2至少非常困难,因为MapReduce需要Dataproc中没有的大量服务(模拟应用程序当MapReduce寻找memcache服务时,我放弃了身份服务)。选项3是可能的,但涉及在AppEngine上同步另一个任务,这不适合我的用例。选项4涉及来自数据存储的输入,而不是输出到它。 – nanojack

我成功地从Dataproc保存数据存储记录。这涉及到对

的AppEngine上SDK安装在主VM(SSH从控制台)安装附加组件,并使用

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

这会将一个新的谷歌目录/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上缺少太多所需的服务。相反,我正在使用一个多处理池,这是实现可接受的性能