我在Google Dataproc / Spark中使用Python2.7实现了推荐引擎,并且需要将输出存储为数据存储区中的记录,以供App Engine API随后使用。但是,似乎没有办法直接这样做。
据我所知,Dataproc没有Python数据存储连接器。 Python Dataflow SDK不支持写入数据存储区(尽管Java可以)。 MapReduce没有数据存储区的输出编写器。
这似乎没有留下很多选择。目前我认为我必须将记录写入Google云端存储,并在App Engine中运行单独的任务以收集它们并存储在数据存储区中。这并不理想 - 调整这两个过程有其自身的困难。
有没有更好的方法将数据从Dataproc传输到数据存储?
答案 0 :(得分:2)
我成功地从Dataproc保存了数据存储区记录。这涉及在主VM上安装其他组件(来自控制台的ssh)
使用
安装和初始化appengine sdksudo apt-get install google-cloud-sdk-app-engine-python
sudo gcloud init
这会在/usr/lib/google-cloud-sdk/platform/google_appengine/
下放置一个新的google目录。
然后通过
安装数据存储库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 :(得分:0)
过去,Cloud Dataproc团队保留了Datastore Connector for Hadoop但由于多种原因而被弃用。目前,还没有正式计划重新开发它。
上面提到的页面有几个选项,您的方法是提到的解决方案之一。此时,我认为如果您致力于云数据存储,您的设置可能是最简单的设置之一。