Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

291
Vistas
¿Autorización de roles S3 para Spark?

Uso de pyspark2 (versión 2.0.0.cloudera1) en Cloudera dentro de AWS

Estoy tratando de escribir un marco de datos de Spark a almacenamiento S3, pero falla debido a la autenticación:

pyspark.sql.utils.IllegalArgumentException: u'AWS Access Key ID y Secret Access Key deben especificarse configurando las propiedades fs.s3n.awsAccessKeyId y fs.s3n.awsSecretAccessKey (respectivamente).'

Mi código pyspark es:

 utp.coalesce(1).write.format('com.databricks.spark.csv').save('s3n://my_bucket/tmr_xfers/test_output')

Usamos funciones para acceder a S3, es decir, 'aws_iam_role=arn:aws:iam::123456789012:role/RoleName', no ID de clave de acceso individuales.

¿Qué necesito cambiar en mi código Spark para que mi csv se escriba en S3 usando roles en lugar de AccessKeyId y SecretAccessKey individuales?

about 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Tuve el mismo problema y lo solucioné usando s3a:// en su lugar, que aparentemente es mucho más moderno y eficaz en cualquier caso.

El problema está en el código del controlador Hadoop (creo que el hadoop-aws.jar ) que es responsable de acceder al sistema de archivos S3. Aparentemente, el protocolo 'nativo' de s3n utiliza un antiguo controlador jets3t con el que es difícil trabajar y con el que todo el mundo tiene miedo de meterse. La implementación del nuevo protocolo s3a utiliza el SDK de AWS directamente y admite perfiles de instancia, etc.

Eche un vistazo a estos HADOOP-9680 y HADOOP-9384 para ver por qué NO SOLUCIONARON este problema.

about 4 years ago · Santiago Trujillo Denunciar

0

Aquí hay una solución en scala spark2, tenga cuidado con el problema de seguridad.

 spark.sparkContext.hadoopConfiguration.set("fs.s3n.awsAccessKeyId", "xxxxx") spark.sparkContext.hadoopConfiguration.set("fs.s3n.awsSecretAccessKey", "xxxxxxxx") Df.write. format("com.databricks.spark.csv").option("header", "true"). save("s3n://my_bucket/tmr_xfers/test_output")
about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda