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

时间:2016-11-10 10:06:54

标签: python google-app-engine google-cloud-datastore google-cloud-dataproc

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

据我所知,Dataproc没有Python数据存储连接器。 Python Dataflow SDK不支持写入数据存储区(尽管Java可以)。 MapReduce没有数据存储区的输出编写器。

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

有没有更好的方法将数据从Dataproc传输到数据存储?

2 个答案:

答案 0 :(得分:2)

我成功地从Dataproc保存了数据存储区记录。这涉及在主VM上安装其他组件(来自控制台的ssh)

使用

安装和初始化appengine sdk
sudo 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但由于多种原因而被弃用。目前,还没有正式计划重新开发它。

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