2017-11-09 9 views
0

私はEMRクラスタをスピンアップしています。指定したバケットを作成しました。in the EMR docsですが、データをアップロードして読み込む方法はありますか?私のスパーク送信ステップでは、s3://myclusterbucket/scripts/script.pyを使ってスクリプト名を言うと、出力は自動的にs3にアップロードされませんか?依存関係はどのように処理されますか?私はs3バケット内の依存性ジップを指し示すpyfilesを使用しようとしましたが、 'ファイルが見つかりません'というメッセージが戻ってきますEMRは入出力用のs3バケットをどのように扱いますか?

+2

あなたの質問は非常に一般的です。データを読み取る最善の方法は、データの大きさとデータで何をしたいのかによって異なります。また、それはどのような形式です。 S3からデータを移動する最も一般的な方法は、awsコマンドラインツール(https://aws.amazon.com/cli/)です。これで 'aws s3 cp myfile.txt s3:// mybucket/myfile.txt'のようなものでデータをコピーすることができます。出力に関しては、スクリプトがどこに書き込むかによって異なります。 –

答えて

0

EMRのMapReduceまたはTezジョブは、EMRFSのためにS3に直接アクセスできます(AWS独自のHadoopファイルシステムS3に基づいて)、例えばApache Pigで行うことができます loaded_data = LOAD 's3://mybucket/myfile.txt' USING PigStorage();

PythonベースのSparkジョブについてはわかりません。しかし、1つの解決策は、最初にオブジェクトをS3からEMR HDFSにコピーしてそこで処理することです。

  • 使用例EMR HDFS(およびその逆)にS3からオブジェクトをコピーするためのコマンドhadoop fs

  • 使用hadoop fs -cp s3://mybucket/myobject hdfs://mypath_on_emr_hdfs S3-distの:

    コピーを行うための複数の方法があります。 -cp EMR HDFSにS3からオブジェクト(およびその逆)をコピーするhttp://docs.aws.amazon.com/emr/latest/ReleaseGuide/UsingEMR_s3distcp.html

またawscli使用することができる(または)を使用してS3からEMRマスターインスタンスのローカルディスクにオブジェクトをコピーします(逆も同様)。たとえば、aws s3 cp s3://mybucket/myobject .

関連する問題