実現したいこと
お世話になります。
EMRで、他の会社名義のS3バケットにあるログファイルを処理させたいです。
その会社からは、S3バケットの認証情報(アクセスキー・シークレットキー)は提供されますが、IAMは変更してもらえないです。
発生している問題・分からないこと
EMRは自社のAWSアカウントで構築しているので、S3を含めて全てのリソースにアクセスできます。
ソースデータが格納しているS3には、アクセスキー・シークレットキーしか提供されないです。
その認証情報をEMRのEC2インスタンスにaws configureで権限を設定すればソースのS3にアクセスできるのですが、EMRで利用するS3バケットにアクセスできなくなり、EMRの処理がエラーとなりました。
今は、いったん自社のS3バケットにデータをコピーしてからEMRに処理させているのですが、もっと処理を効率化させたいです。(S3バケット間で直接コピーできないので、EC2のローカルディスクを介してコピーしています)
該当のソースコード
Python
1### PysparkでS3バケットを指定して読み込み2df = spark.read.csv("s3//my-backet/file")3
試したこと・調べたこと
上記の詳細・結果
boto3を使えば認証情報をパラメータで指定してS3にアクセスできましたが、ファイル数が多いので処理に時間がかかりすぎます。
https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/emr.html
s3DistCpコマンドでHDFSにコピーしようとすると、時間が異様にかかる・エラーが発生するでうまくいかないです。
https://docs.aws.amazon.com/emr/latest/ReleaseGuide/UsingEMR_s3distcp.html
補足
特になし

0 コメント