당신은 하둡/스파크 인터페이스를 사용하고 있기 때문에이 (같은 sc.textFile
는) 모든 것이 참으로 오히려 어떤 ~/.aws
또는 /etc/boto.cfg
설정을 통해 와이어를 시도보다 fs.s3.*
또는 fs.s3n.*
또는 fs.s3a.*
키를 통해 수행해야합니다. 클러스터 작성시
: 귀하 통해 Dataproc 클러스터로 당신을 통해 이러한 설정을 측량 할 수있는 몇 가지 방법이 있습니다
가
gcloud dataproc clusters create --properties \
core:fs.s3.awsAccessKeyId=<s3AccessKey>,core:fs.s3.awsSecretAccessKey=<s3SecretKey> \
--num-workers ...
core
접두사 여기 당신이 설정 한, core-site.xml
파일에 배치도록합니다 Cluster Properties documentation에서 설명합니다. 당신이 Dataproc에서의 API를 사용하는 경우
또는 작업 제출시,이 경우
gcloud dataproc jobs submit pyspark --cluster <your-cluster> \
--properties spark.hadoop.fs.s3.awsAccessKeyId=<s3AccessKey>,spark.hadoop.fs.s3.awsSecretAccessKey=<s3SecretKey> \
...
을, 우리는 스파크의 건물에서 등록 정보를 전달하는, 및 스파크 정의하는 편리한 메커니즘을 제공합니다 "hadoop"conf 속성을 간단히 spark.hadoop.*
접두어로 사용하여 Spark conf의 하위 집합으로 만듭니다. 당신은 클러스터 작성시에 그것을 설정하고 싶지만 액세스 키를 명시 적으로 통해 Dataproc에서 설정하지 않으려면,
spark-submit --conf spark.hadoop.fs.s3.awsAccessKeyId=<s3AccessKey> \
--conf spark.hadoop.fs.s3.awsSecretAccessKey=<s3SecretKey>
마지막 : SSH을 통해 명령 줄에서 제출하는 경우,이 동일합니다 메타 데이터를 사용하는 대신 initialization action을 대신 사용할 수 있습니다.
#!/bin/bash
# Create this shell script, name it something like init-aws.sh
bdconfig set_property \
--configuration_file /etc/hadoop/conf/core-site.xml \
--name 'fs.s3.awsAccessKeyId' \
--value '<s3AccessKey>' \
--clobber
bdconfig set_property \
--configuration_file /etc/hadoop/conf/core-site.xml \
--name 'fs.s3.awsSecretAccessKey' \
--value '<s3SecretKey>' \
--clobber
어딘가 GCS 버킷에 그 업로드 및 클러스터 작성시에 사용 :
gsutil cp init-aws.sh gs://<your-bucket>/init-aws.sh
gcloud dataproc clustres create --initialization-actions \
gs://<your-bucket>/init-aws.sh
쉽게 XML 설정을 수정할 수있는 경로에 존재해야
bdconfig
라는 편리한 도구가있다
Dataproc 메타 데이터는 실제로는 다른 모든 사용자 데이터와 마찬가지로 안전하게 암호화되고 다른 사용자 데이터와 마찬가지로 안전하게 보호되지만 init 액션을 사용하면 실수로 Dataproc 클러스터 속성을 볼 때 화면 뒤에서 누군가에게 액세스 키/암호가 표시되는 것을 방지 할 수 있습니다.
당신은'awscli'와 같은 것을 사용하기 위해 일을하고 있습니다. 아니면 일반적인 Spark/Hadoop FileSystem 인터페이스를 통해 S3에 액세스하고 있습니까? –
정상적인 스파크 인터페이스를 통해 s3에 액세스합니다. 기본적으로 AWS_ACCESS_KEY_ID 및 AWS_SECRET_ACCESS_KEY를 설정 한 다음 sc.textFile (s3_path)을 실행하고 카운트를 얻으려고합니다. – Eka