Spark-redshift库身份验证?问题

时间:2019-02-11 20:16:24

标签: apache-spark pyspark amazon-redshift databricks spark-redshift

在遇到数十种怪异异常之后,我想将数据从我的Pyspark应用程序写入Redshift集群,我认为我归结为我正在使用的正确JAR组成: 环境: -Spark 2.2.1 -Scala 2.11 -Python 2.7

JAR -mysql-connector-java-8.0.13.jar -RedshiftJDBC42-1.2.10.1009.jar -spark-redshift_2.11-3.0.0-preview1.jar -aws-java-sdk-1.7.4.jar -hadoop-aws-2.7.3.jar -spark-avro_2.11-4.0.0.jar

df.write.format("com.databricks.spark.redshift") 
    .option("url", url) 
    .option("dbtable", '{}'.format(table_name)) 
    .option("tempdir", tempdir)
    .mode('{}'.format(mode))
    .save()

其中tempdir =“ s3a:// tempdir /”,所以我正在使用s3a FS

这导致

  

pyspark.sql.utils.IllegalArgumentException:“要求失败:您必须指定一种方法来验证Redshift与S3的连接(aws_iam_role,forward_spark_s3_credentials或临时_aws_ *。有关这些选项之间差异的讨论,请参阅自述文件。”

但是,前两种方法都会导致在存储桶周围混合各种异常,例如:

  • 19/02/11 21:05:25 WARN Utils $:尝试确定S3存储桶的区域时发生错误 com.amazonaws.services.s3.model.AmazonS3Exception:状态代码:403,AWS服务:Amazon S3
  • 19/02/11 21:05:25 WARN Utils $:尝试读取S3存储桶生命周期配置com.amazonaws.services.s3.model.AmazonS3Exception时发生错误:状态代码:403,AWS服务:Amazon S3

这个问题使我发疯,请帮忙!

0 个答案:

没有答案