Pyspark 使用火花-红移接头将火花连接到红移时出现问题

Pyspark 使用火花-红移接头将火花连接到红移时出现问题,pyspark,amazon-redshift,spark-redshift,Pyspark,Amazon Redshift,Spark Redshift,我需要将spark连接到我的红移实例以生成数据。 我正在使用spark 1.6和scala 2.10。 已使用兼容的jdbc连接器和spark redshift连接器。 但我面临一个奇怪的问题,那就是: 我正在使用Pypark df=sqlContext.read\ .format("com.databricks.spark.redshift")\ .option("query","select top 10 * from fact_table")\ .option("u

我需要将spark连接到我的红移实例以生成数据。 我正在使用spark 1.6和scala 2.10。 已使用兼容的jdbc连接器和spark redshift连接器。 但我面临一个奇怪的问题,那就是: 我正在使用Pypark

df=sqlContext.read\
    .format("com.databricks.spark.redshift")\
    .option("query","select top 10 * from fact_table")\
    .option("url","jdbc:redshift://redshift_host:5439/events?user=usernmae&password=pass")\
    .option("tempdir","s3a://redshift-archive/").load()
当我执行
df.show()
时,它会给我一个错误,在我的bucket上拒绝权限。 这很奇怪,因为我可以看到在我的bucket中创建的文件,但它们是可以读取的

另外,我还设置了accesskey和secret access key

PS。我还混淆了s3a和s3n文件系统。 使用的连接器:

似乎没有为Redshift设置访问S3文件的权限。请按照以下步骤操作

  • 将允许红移帐户的存储桶策略添加到该存储桶
  • access在Redshift帐户中创建Redshift可以使用的IAM角色

  • 假设授予权限以访问新存储的S3存储桶 已创建角色将角色与红移群集关联

  • 运行复制语句

  • 从您的问题中,我无法理解问题是什么上述步骤非常适合解决spark红移连接器上的权限问题,但在我的案例中,问题是spark版本。我之前使用了1.6 spark,这给了我错误,但spark 2.2中的相同代码可以正常工作。