将数据从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,我认为您的设置可能是最简单的设置之一。
我成功地从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上缺少太多所需的服务。相反,我正在使用一个多处理池,这是实现可接受的性能
这似乎是该网页是误导。在给出的选项中,选项1似乎是不可能的,因为Python Dataflow SDK不支持写入数据存储区,而选项2至少非常困难,因为MapReduce需要Dataproc中没有的大量服务(模拟应用程序当MapReduce寻找memcache服务时,我放弃了身份服务)。选项3是可能的,但涉及在AppEngine上同步另一个任务,这不适合我的用例。选项4涉及来自数据存储的输入,而不是输出到它。 – nanojack