Я пытаюсь записать данные из моего приложения Pyspark в кластер Redshift, после того, как столкнулся с десятками странных исключений, я думаю, что я пришел к правильной композиции JAR, которую я использую: Среда: - Spark 2.2.1 - Scala 2.11 -Python 2.7
JAR - mysql -nector-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: u "требование не выполнено: необходимо указать метод для проверки подлинности соединения Redshift с S3 (aws_iam_role, forward_spark_s3_credentials), или временные_строки_ *. Для обсуждения различий между этими параметрами см. README. "
Однако оба первых двух метода приводят к сочетанию различных исключений вокруг сегментов, таких как:
- 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
Эта проблема сводит меня с ума, пожалуйста, помогите!