在遇到数十种怪异异常之后,我想将数据从我的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_ *。有关这些选项之间差异的讨论,请参阅自述文件。”
但是,前两种方法都会导致在存储桶周围混合各种异常,例如:
这个问题使我发疯,请帮忙!