Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

321
Visualizações
(python) Spark .textFile(s3://...) acceso denegado 403 con credenciales válidas

Para acceder a mi depósito S3, he exportado mis credenciales

 export AWS_SECRET_ACCESS_KEY= export AWS_ACCESSS_ACCESS_KEY=

Puedo verificar que todo funciona haciendo

 aws s3 ls mybucket

También puedo verificar con boto3 que funciona en python

 resource = boto3.resource("s3", region_name="us-east-1") resource.Object("mybucket", "text/text.py") \ .put(Body=open("text.py", "rb"),ContentType="text/x-py")

Esto funciona y puedo ver el archivo en el cubo.

Sin embargo, cuando hago esto con chispa:

 spark_context = SparkContext() sql_context = SQLContext(spark_context) spark_context.textFile("s3://mybucket/my/path/*)

obtengo un buen

 > Caused by: org.jets3t.service.S3ServiceException: Service Error > Message. -- ResponseCode: 403, ResponseStatus: Forbidden, XML Error > Message: <?xml version="1.0" > encoding="UTF-8"?><Error><Code>InvalidAccessKeyId</Code><Message>The > AWS Access Key Id you provided does not exist in our > records.</Message><AWSAccessKeyId>[MY_ACCESS_KEY]</AWSAccessKeyId><RequestId>XXXXX</RequestId><HostId>xxxxxxx</HostId></Error>

así es como envío el trabajo localmente

spark-submit --packages com.amazonaws:aws-java-sdk-pom:1.11.98,org.apache.hadoop:hadoop-aws:2.7.3 test.py

¿Por qué funciona con la línea de comando + boto3 pero Spark se bloquea?

EDITAR:

Mismo problema usando s3a:// con

 hadoopConf = spark_context._jsc.hadoopConfiguration() hadoopConf.set("fs.s3a.access.key", "xxxx") hadoopConf.set("fs.s3a.secret.key", "xxxxxxx") hadoopConf.set("fs.s3a.impl", "org.apache.hadoop.fs.s3a.S3AFileSystem")

y el mismo problema con aws-sdk 1.7.4 y hadoop 2.7.2

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Spark copiará automáticamente sus credenciales de AWS en los secretos s3n y s3a. Las versiones de Apache Spark no tocan las URL s3://, ya que en Apache Hadoop, el esquema s3:// está asociado con el cliente s3 original, ahora obsoleto, que es incompatible con todo lo demás.

En Amazon EMR, s3:// está vinculado a amazon EMR S3; Las máquinas virtuales EC2 proporcionarán los secretos para los ejecutores automáticamente. Así que no creo que moleste con el mecanismo de propagación de env var. También puede ser que no pueda anular los datos de EC2/IAM por la forma en que configura la cadena de autenticación.

Si está tratando de comunicarse con S3 y no se está ejecutando en una VM de EMR , presumiblemente está usando Apache Spark con los JAR de Apache Hadoop, no las versiones de EMR. En ese mundo, use URL con s3a:// para obtener la biblioteca de cliente S3 más reciente

Si eso no funciona, consulte la sección de solución de problemas de los documentos de Apache . Hay una sección sobre "403" que incluye pasos recomendados para solucionar problemas. Puede deberse a problemas de versión de classpath/JVM, así como a problemas de credenciales, incluso a un desfase horario entre el cliente y AWS.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda