【问题标题】:issue while connecting spark to redshift using spark -redshift connector使用 spark -redshift 连接器将 spark 连接到 redshift 时出现问题
【发布时间】:2019-10-22 04:36:52
【问题描述】:

我需要将 spark 连接到我的 redshift 实例以生成数据。 我正在使用 spark 1.6 和 scala 2.10 。 使用了兼容的 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

【问题讨论】:

  • 从你的问题来看,我无法理解问题是什么

标签: pyspark amazon-redshift spark-redshift


【解决方案1】:

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

  1. 向该存储桶添加允许 Redshift 帐户的存储桶策略
  2. 访问在 Redshift 账户中创建一个 IAM 角色,redshift 可以

  3. 假设将访问 S3 存储桶的权限授予新的 created role 将角色与 Redshift 集群关联

  4. 运行 COPY 语句

【讨论】:

  • 上述步骤非常适合解决 spark redshift 连接器上的权限问题,但在我的情况下,问题出在 spark 版本上。我之前使用 1.6 spark 给了我错误,但 spark 2.2 中的相同代码有效很好。
猜你喜欢
  • 2017-08-13
  • 2016-08-01
  • 2017-05-25
  • 2018-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多