質問

現在、Data WarehouseとしてRedshiftを使用しています。これは非常に満足しています。ただし、現在、倉庫のデータに対して機械学習を行う必要があります。関係するデータの量を考えると、理想的には、データをシフトするのではなく、データと同じ場所で計算を実行したいと思いますが、これはRedshiftでは不可能と思われます。 Madlibを見ましたが、RedshiftはUDFSをサポートしていないため、これはオプションではありません(Madlibが必要としています)。私は現在、データをEMRにシフトし、Apache Spark Machine Learning Library(またはH20、またはMahoutなど)で処理することを検討しています。だから私の質問は次のとおりです。

  1. より良い方法はありますか?
  2. そうでない場合、どのようにしてデータにアクセスできるようにする必要がありますか?これまでに特定したオプションには、SQOOPを使用してHDFSにロードし、DBINPUTFORMATを使用し、S3にRedshiftエクスポートを行い、そこからSparkをつかむことが含まれます。 Sparkを使用する際のこれらのさまざまなアプローチ(およびその他)の長所/短所は何ですか?

これはオフラインバッチ学習であることに注意してください。ただし、実験を迅速に反復できるように、できるだけ早くこれを実行できるようにしたいと考えています。

役に立ちましたか?

解決

新しいAmazon Machine Learning Serviceが機能する場合があります。 Redshiftで直接動作し、開始する良い方法かもしれません。 http://aws.amazon.com/machine-learning/

EMRを使用して処理する場合は、RedshiftのUNLoadコマンドを使用してS3にデータを配置できます。 EMRのSparkは、HDFSに引き込む必要なく、直接アクセスできます。

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帰属
所属していません datascience.stackexchange
scroll top