我需要将spark连接到我的redshift实例以生成数据。 我正在使用带有scala 2.10的spark 1.6。 使用了兼容的jdbc连接器和spark-redshift连接器。 但是我面临一个奇怪的问题: 我正在使用pyspark
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()
时,它给我我的存储桶被拒绝权限的错误。
这很奇怪,因为我可以在存储桶中看到正在创建的文件,但是可以读取它们。
PS。我还设置了访问密钥和秘密访问密钥。
PS。我也对s3a和s3n文件系统感到困惑。 使用的连接器: https://github.com/databricks/spark-redshift/tree/branch-1.x
答案 0 :(得分:0)
似乎未为Redshift设置访问S3文件的权限。请按照以下步骤
访问权限在Redshift帐户中创建Redshift可以创建的IAM角色
假定授予访问新的S3存储桶的权限 创建的角色将角色与Redshift集群相关联