【问题标题】:What are the steps to use Redshift Spectrum.?使用 Redshift Spectrum 的步骤是什么?
【发布时间】:2017-11-22 15:03:47
【问题描述】:

目前我正在使用 Amazon Redshift 以及 Amazon S3 来存储数据。现在我想使用 Spectrum 来提高性能,但对如何正确使用它感到困惑。

如果我使用的是 SQL 工作台,我可以从同一个架构创建外部架构,还是需要从 AWS 控制台或 Athena 创建它。?

我是否需要在特定地区拥有 Athena。没有雅典娜可以使用频谱吗?

现在,如果我尝试通过 SQL 工作台创建外部架构,则会引发错误“未启用 CREATE EXTERNAL SCHEMA”如何启用此功能..?

如果有人使用过 Spectrum,请提供帮助,并让我知道使用 Spectrum 的详细步骤。

【问题讨论】:

  • 您是否阅读过“Redshift Spectrum 入门”文档? docs.aws.amazon.com/redshift/latest/dg/…
  • 是的@Nathan,我阅读了这份文档,但我对是否使用 Athena 还是使用 Redshift 做同样的事情感到困惑..?

标签: amazon-web-services amazon-s3 amazon-redshift amazon-redshift-spectrum


【解决方案1】:

Redshift Spectrum 需要包含表定义的外部数据目录。正是这个数据目录包含对 S3 中文件的引用,而不是 Redshift 中的外部表定义。此数据目录可以在 Elastic MapReduce 中定义为 Hive 目录(如果您有现有的 EMR 部署则很好)或在 Athena 中(如果您没有 EMR 或不想进入管理 Hadoop 则很好)。如果您愿意,Athena 路线可以完全由 Redshift 管理。

在我看来,您的问题是四件事之一。要么:

  1. 您的 Redshift 集群不在当前支持 Athena 和 Spectrum 的 AWS 区域中。
  2. 您的 Redshift 集群版本尚不支持 Spectrum(1.0.1294 或更高版本)。
  3. 您的 IAM 策略不允许 Redshift 控制 Athena。
  4. 您没有在CREATE EXTERNAL SCHEMA 语句中使用CREATE EXTERNAL DATABASE IF NOT EXISTS 参数。

要允许 Redshift 管理 Athena,您需要将 IAM 策略附加到您的 Redshift 集群,以允许它完全控制 Athena,以及对包含您的数据的 S3 存储桶的读取访问权限。

一旦到位,您就可以像以前一样创建外部架构,确保CREATE EXTERNAL DATABASE IF NOT EXISTS 参数也被传递。如果您没有预先存在的配置,这将确保在 Athena 中创建外部数据库:http://docs.aws.amazon.com/redshift/latest/dg/c-getting-started-using-spectrum-create-external-table.html

最后,运行CREATE EXTERNAL TABLE 语句,它将透明地在 Athena 数据目录中创建表元数据:http://docs.aws.amazon.com/redshift/latest/dg/c-spectrum-external-tables.html

【讨论】:

  • 感谢@GShenanigan。是否可以使用 Redshift 凭据通过我的 SQL 工作台创建外部模式,并在查询时使用 ARN ......?或者是否有必要为此单独进行 Athena 配置..?
  • 抱歉,我不太了解 - 您是指 S3 的 ARN 吗?并在查询数据而不是使用 CREATE EXTERNAL TABLE 语句时定义它?
  • 要创建外部模式,我们将使用 ARN url 执行以下命令进行授权:从数据目录数据库“spectrumdb”创建外部模式谱 iam_role 'arn:aws:iam::636663244196:user/username' create外部数据库(如果不存在);
  • 好的,应该可以的。您的 IAM 用户是否拥有对 Athena 的完全控制权和对 S3 的读取权限?您在哪个 AWS 区域?
  • 我可以创建外部架构,但是如果我想在创建外部表时传递 .csv 文件,我该如何实现呢?以下选项的参数值应该是什么,行格式分隔,以 '\t' 终止的字段,存储为 textfile ,表属性 ('numRows'='172000');
猜你喜欢
  • 1970-01-01
  • 2017-05-17
  • 2012-10-06
  • 2019-08-19
  • 1970-01-01
  • 1970-01-01
  • 2018-10-19
  • 1970-01-01
  • 2016-09-01
相关资源
最近更新 更多