我们目前使用RedShift作为数据仓库,我们对此感到非常满意。但是,我们现在需要对仓库中的数据进行机器学习。鉴于涉及的数据量,理想情况下,我想在与数据相同的位置运行计算,而不是将数据转移到周围,但是RedShift似乎不可能。我看了Madlib,但这不是一个选择,因为RedShift不支持UDFS(Madlib需要)。我目前正在考虑将数据转移到EMR并使用Apache Spark Machine Learning库(或H20,Mahout或其他任何内容)处理。所以我的问题是:

  1. 有没有更好的办法?
  2. 如果没有,我应该如何使数据可以访问?到目前为止,我确定的选项包括:使用SQOOP将其加载到HDF中,使用DBINPUTFORMAT,进行红移导出到S3,并从那里抓住它。使用Spark时,这些不同的方法(以及其他任何方法)有哪些优势?

请注意,这是离线批处理学习,但是我们希望能够尽快执行此操作,以便我们可以快速迭代实验。

有帮助吗?

解决方案

新的亚马逊机器学习服务可能对您有用。它直接与红移一起使用,可能是一种好方法。 http://aws.amazon.com/machine-learning/

如果您想使用EMR处理,则可以使用RedShift的卸载命令将数据降落在S3上。然后,EMR上的Spark可以直接访问它,而无需将其拉入HDF。

在EMR上火花: https://aws.amazon.com/articles/elastic-mapreduce/4926593393724923

其他提示

您可以尝试一下。https://github.com/databricks/spark-redshift

否则,请使用Rahul的答案,将数据卸载到S3,然后将其加载到Spark中。 EMR Spark位于纱线顶部,Spark Context的TextFile方法本地支持“ S3 //”。

许可以下: CC-BY-SA归因
scroll top